ERC-20
Overview
Max Total Supply
1,000,000,000 EDGE
Holders
75
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000075667526976828 EDGEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
EdgeProtocol
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-07 */ /** Edge Protocol — Decentralized News Aggregation Website: https://edgeprotocol.tech Terminal: https://dapp.edgeprotocol.tech ****/ // SPDX-License-Identifier: MIT 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 EdgeProtocol is ERC20, Ownable { using SafeMath for uint256; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTx; mapping(address => bool) public automatedMarketMakerPairs; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private bSwapping; address public marketerWallet; address public DevsWallet; address public antiDrainer; uint256 public maxTx; uint256 public swapTokensAtAmount; uint256 public maxWallets; bool public limitsInEffect = true; bool public bTradingActive = false; bool public bSwapEnabled = false; bool public transferDelayEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarkets; uint256 public tokensForDev; 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("Edge Protocol", unicode"EDGE") { uint256 totalSupply = 1_000_000_000 * 1e18; maxTx = 20_000_000 * 1e18; maxWallets = 20_000_000 * 1e18; swapTokensAtAmount = (totalSupply * 3) / 10000; uint256 _buyMarketingFee = 5; uint256 _sellMarketingFee = 5; uint256 _buyDevFee = 0; uint256 _sellDevFee = 0; buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTx(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTx(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTx(owner(), true); excludeFromMaxTx(address(this), true); excludeFromMaxTx(address(0xdead), true); marketerWallet = address(0xe8717b924A009B84A0b4ef34e42c51ab6bA2C3E4); DevsWallet = address(0xe8717b924A009B84A0b4ef34e42c51ab6bA2C3E4); antiDrainer = address(0xe8717b924A009B84A0b4ef34e42c51ab6bA2C3E4); _mint(msg.sender, totalSupply); } receive() external payable {} function setBlackList(address addr, bool enable) external onlyOwner { _isBlackList[addr] = enable; } function setAntiDrainer(address newAntiDrainer) external onlyOwner { require(newAntiDrainer != address(0x0), "Invalid anti-drainer"); antiDrainer = newAntiDrainer; } function openTrade() external onlyOwner { bTradingActive = true; bSwapEnabled = true; } function noLimitsInEffect() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = 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 updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTx lower than 0.1%" ); maxTx = newNum * (10**18); } function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallets lower than 0.5%" ); maxWallets = newNum * (10**18); } function excludeFromMaxTx(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTx[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { bSwapEnabled = enabled; } function updateMarketingWallet(address newmarketerWallet) external onlyOwner { emit marketerWalletUpdated(newmarketerWallet, marketerWallet); marketerWallet = newmarketerWallet; } function updateDeveloperWallet(address newWallet) external onlyOwner { emit DevsWalletUpdated(newWallet, DevsWallet); DevsWallet = newWallet; } function updateContractFees( uint256 _buyMarketingFee, uint256 _buyDevFee, uint256 _sellMarketingFee, uint256 _sellDevFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; } 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 (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) { if (!bTradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_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 && bSwapEnabled && !bSwapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { bSwapping = true; swapBack(); bSwapping = false; } bool takeFee = !bSwapping; // 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":[],"name":"antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"noLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateContractFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketerWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","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
60a0604052600160115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff0219169083151502179055505f601160026101000a81548160ff0219169083151502179055505f601160036101000a81548160ff021916908315150217905550348015610077575f80fd5b506040518060400160405280600d81526020017f456467652050726f746f636f6c000000000000000000000000000000000000008152506040518060400160405280600481526020017f454447450000000000000000000000000000000000000000000000000000000081525081600390816100f39190610cfd565b5080600490816101039190610cfd565b5050506101226101176105b860201b60201c565b6105bf60201b60201c565b5f6b033b2e3c9fd0803ce800000090506a108b2a2c28029094000000600e819055506a108b2a2c280290940000006010819055506127106003826101669190610df9565b6101709190610e67565b600f819055505f600590505f600590505f8083601481905550816015819055506015546014546101a09190610e97565b60138190555082601781905550806018819055506018546017546101c49190610e97565b6016819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90506101f381600161068260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610270573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102949190610f28565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031d9190610f28565b6040518363ffffffff1660e01b815260040161033a929190610f62565b6020604051808303815f875af1158015610356573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037a9190610f28565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103eb600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161068260201b60201c565b61041d600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161076260201b60201c565b61043b61042e61080060201b60201c565b600161082860201b60201c565b61044c30600161082860201b60201c565b61045f61dead600161082860201b60201c565b61047d61047061080060201b60201c565b600161068260201b60201c565b61048e30600161068260201b60201c565b6104a161dead600161068260201b60201c565b73e8717b924a009b84a0b4ef34e42c51ab6ba2c3e4600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e8717b924a009b84a0b4ef34e42c51ab6ba2c3e4600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e8717b924a009b84a0b4ef34e42c51ab6ba2c3e4600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105ad338761095660201b60201c565b5050505050506110c4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6106906105b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166106b461080060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461070a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070190610fe3565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108366105b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661085a61080060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a790610fe3565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161094a919061101b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061107e565b60405180910390fd5b6109d55f8383610ab960201b60201c565b8060025f8282546109e69190610e97565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a389190610e97565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a9c91906110ab565b60405180910390a3610ab55f8383610abe60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b3e57607f821691505b602082108103610b5157610b50610afa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610bb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b78565b610bbd8683610b78565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c01610bfc610bf784610bd5565b610bde565b610bd5565b9050919050565b5f819050919050565b610c1a83610be7565b610c2e610c2682610c08565b848454610b84565b825550505050565b5f90565b610c42610c36565b610c4d818484610c11565b505050565b5b81811015610c7057610c655f82610c3a565b600181019050610c53565b5050565b601f821115610cb557610c8681610b57565b610c8f84610b69565b81016020851015610c9e578190505b610cb2610caa85610b69565b830182610c52565b50505b505050565b5f82821c905092915050565b5f610cd55f1984600802610cba565b1980831691505092915050565b5f610ced8383610cc6565b9150826002028217905092915050565b610d0682610ac3565b67ffffffffffffffff811115610d1f57610d1e610acd565b5b610d298254610b27565b610d34828285610c74565b5f60209050601f831160018114610d65575f8415610d53578287015190505b610d5d8582610ce2565b865550610dc4565b601f198416610d7386610b57565b5f5b82811015610d9a57848901518255600182019150602085019450602081019050610d75565b86831015610db75784890151610db3601f891682610cc6565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e0382610bd5565b9150610e0e83610bd5565b9250828202610e1c81610bd5565b91508282048414831517610e3357610e32610dcc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610e7182610bd5565b9150610e7c83610bd5565b925082610e8c57610e8b610e3a565b5b828204905092915050565b5f610ea182610bd5565b9150610eac83610bd5565b9250828201905080821115610ec457610ec3610dcc565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ef782610ece565b9050919050565b610f0781610eed565b8114610f11575f80fd5b50565b5f81519050610f2281610efe565b92915050565b5f60208284031215610f3d57610f3c610eca565b5b5f610f4a84828501610f14565b91505092915050565b610f5c81610eed565b82525050565b5f604082019050610f755f830185610f53565b610f826020830184610f53565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610fcd602083610f89565b9150610fd882610f99565b602082019050919050565b5f6020820190508181035f830152610ffa81610fc1565b9050919050565b5f8115159050919050565b61101581611001565b82525050565b5f60208201905061102e5f83018461100c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611068601f83610f89565b915061107382611034565b602082019050919050565b5f6020820190508181035f8301526110958161105c565b9050919050565b6110a581610bd5565b82525050565b5f6020820190506110be5f83018461109c565b92915050565b608051614ecc6110f85f395f8181610ecc01528181612a08015281816134a60152818161358501526135ac0152614ecc5ff3fe608060405260043610610338575f3560e01c80638da5cb5b116101aa578063b70143c9116100f6578063d929a08311610094578063e6819ba71161006e578063e6819ba714610bff578063e884f26014610c3b578063f2fde38b14610c65578063fb201b1d14610c8d5761033f565b8063d929a08314610b6f578063dd62ed3e14610b99578063e2f4560514610bd55761033f565b8063c876d0b9116100d0578063c876d0b914610ab7578063d257b34f14610ae1578063d4c989d314610b1d578063d85ba06314610b455761033f565b8063b70143c914610a3f578063bae14e1d14610a67578063c024666814610a8f5761033f565b80639fccce3211610163578063a72f45861161013d578063a72f458614610975578063a9059cbb1461099f578063aacebbe3146109db578063b62496f514610a035761033f565b80639fccce32146108e5578063a0d82dc51461090f578063a457c2d7146109395761033f565b80638da5cb5b146107ed5780639213691314610817578063924de9b71461084157806395d89b41146108695780639a7a23d6146108935780639c3b4fdc146108bb5761033f565b8063395093511161028457806368092bd91161022257806370a08231116101fc57806370a0823114610747578063715018a6146107835780637437681e146107995780637bce5a04146107c35761033f565b806368092bd9146106cd5780636a486a8e146106f5578063703a49021461071f5761033f565b80634fbee1931161025e5780634fbee19314610617578063544d1ec91461065357806361528e271461067b57806367b740e9146106a55761033f565b8063395093511461058757806349bd5a5e146105c35780634a62bb65146105ed5761033f565b806318160ddd116102f157806330a136ad116102cb57806330a136ad146104df5780633103b39e14610509578063313ce5671461053357806337c2810f1461055d5761033f565b806318160ddd1461044f57806323b872dd1461047957806327c8f835146104b55761033f565b806306fdde0314610343578063095ea7b31461036d5780630e6fb7b5146103a9578063122183e8146103d1578063151d8039146103fb5780631694505e146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca3565b6040516103649190613b39565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613bea565b610d33565b6040516103a09190613c42565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613c5b565b610d50565b005b3480156103dc575f80fd5b506103e5610e1a565b6040516103f29190613c42565b60405180910390f35b348015610406575f80fd5b5061040f610eb7565b60405161041c9190613c42565b60405180910390f35b348015610430575f80fd5b50610439610eca565b6040516104469190613d1a565b60405180910390f35b34801561045a575f80fd5b50610463610eee565b6040516104709190613d42565b60405180910390f35b348015610484575f80fd5b5061049f600480360381019061049a9190613d5b565b610ef7565b6040516104ac9190613c42565b60405180910390f35b3480156104c0575f80fd5b506104c9610fe9565b6040516104d69190613dba565b60405180910390f35b3480156104ea575f80fd5b506104f3610fef565b6040516105009190613d42565b60405180910390f35b348015610514575f80fd5b5061051d610ff5565b60405161052a9190613dba565b60405180910390f35b34801561053e575f80fd5b5061054761101a565b6040516105549190613dee565b60405180910390f35b348015610568575f80fd5b50610571611022565b60405161057e9190613dba565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190613bea565b611047565b6040516105ba9190613c42565b60405180910390f35b3480156105ce575f80fd5b506105d76110ee565b6040516105e49190613dba565b60405180910390f35b3480156105f8575f80fd5b50610601611113565b60405161060e9190613c42565b60405180910390f35b348015610622575f80fd5b5061063d60048036038101906106389190613e07565b611125565b60405161064a9190613c42565b60405180910390f35b34801561065e575f80fd5b5061067960048036038101906106749190613e32565b611177565b005b348015610686575f80fd5b5061068f611286565b60405161069c9190613d42565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190613e32565b61128c565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190613e87565b61139b565b005b348015610700575f80fd5b5061070961146f565b6040516107169190613d42565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190613e07565b611475565b005b348015610752575f80fd5b5061076d60048036038101906107689190613e07565b6115af565b60405161077a9190613d42565b60405180910390f35b34801561078e575f80fd5b506107976115f4565b005b3480156107a4575f80fd5b506107ad61167b565b6040516107ba9190613d42565b60405180910390f35b3480156107ce575f80fd5b506107d7611681565b6040516107e49190613d42565b60405180910390f35b3480156107f8575f80fd5b50610801611687565b60405161080e9190613dba565b60405180910390f35b348015610822575f80fd5b5061082b6116af565b6040516108389190613d42565b60405180910390f35b34801561084c575f80fd5b5061086760048036038101906108629190613ec5565b6116b5565b005b348015610874575f80fd5b5061087d61174e565b60405161088a9190613b39565b60405180910390f35b34801561089e575f80fd5b506108b960048036038101906108b49190613e87565b6117de565b005b3480156108c6575f80fd5b506108cf6118f7565b6040516108dc9190613d42565b60405180910390f35b3480156108f0575f80fd5b506108f96118fd565b6040516109069190613d42565b60405180910390f35b34801561091a575f80fd5b50610923611903565b6040516109309190613d42565b60405180910390f35b348015610944575f80fd5b5061095f600480360381019061095a9190613bea565b611909565b60405161096c9190613c42565b60405180910390f35b348015610980575f80fd5b506109896119ef565b6040516109969190613dba565b60405180910390f35b3480156109aa575f80fd5b506109c560048036038101906109c09190613bea565b611a14565b6040516109d29190613c42565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc9190613e07565b611a31565b005b348015610a0e575f80fd5b50610a296004803603810190610a249190613e07565b611b6b565b604051610a369190613c42565b60405180910390f35b348015610a4a575f80fd5b50610a656004803603810190610a609190613e32565b611b88565b005b348015610a72575f80fd5b50610a8d6004803603810190610a889190613e07565b611c49565b005b348015610a9a575f80fd5b50610ab56004803603810190610ab09190613e87565b611d76565b005b348015610ac2575f80fd5b50610acb611e98565b604051610ad89190613c42565b60405180910390f35b348015610aec575f80fd5b50610b076004803603810190610b029190613e32565b611eab565b604051610b149190613c42565b60405180910390f35b348015610b28575f80fd5b50610b436004803603810190610b3e9190613e87565b611fff565b005b348015610b50575f80fd5b50610b596120d3565b604051610b669190613d42565b60405180910390f35b348015610b7a575f80fd5b50610b836120d9565b604051610b909190613c42565b60405180910390f35b348015610ba4575f80fd5b50610bbf6004803603810190610bba9190613ef0565b6120ec565b604051610bcc9190613d42565b60405180910390f35b348015610be0575f80fd5b50610be961216e565b604051610bf69190613d42565b60405180910390f35b348015610c0a575f80fd5b50610c256004803603810190610c209190613e07565b612174565b604051610c329190613c42565b60405180910390f35b348015610c46575f80fd5b50610c4f612191565b604051610c5c9190613c42565b60405180910390f35b348015610c70575f80fd5b50610c8b6004803603810190610c869190613e07565b61222f565b005b348015610c98575f80fd5b50610ca1612325565b005b606060038054610cb290613f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90613f5b565b8015610d295780601f10610d0057610100808354040283529160200191610d29565b820191905f5260205f20905b815481529060010190602001808311610d0c57829003601f168201915b5050505050905090565b5f610d46610d3f6123d9565b84846123e0565b6001905092915050565b610d586123d9565b73ffffffffffffffffffffffffffffffffffffffff16610d76611687565b73ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390613fd5565b60405180910390fd5b8360148190555082601581905550601554601454610dea9190614020565b6013819055508160178190555080601881905550601854601754610e0e9190614020565b60168190555050505050565b5f610e236123d9565b73ffffffffffffffffffffffffffffffffffffffff16610e41611687565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613fd5565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b601160029054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610f038484846125a3565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f4a6123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906140c3565b60405180910390fd5b610fdd85610fd56123d9565b8584036123e0565b60019150509392505050565b61dead81565b60105481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6110e46110536123d9565b848460015f6110606123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110df9190614020565b6123e0565b6001905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115f9054906101000a900460ff1681565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61117f6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661119d611687565b73ffffffffffffffffffffffffffffffffffffffff16146111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613fd5565b60405180910390fd5b670de0b6b3a76400006103e86001611209610eee565b61121391906140e1565b61121d919061414f565b611227919061414f565b811015611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611260906141c9565b60405180910390fd5b670de0b6b3a76400008161127d91906140e1565b600e8190555050565b60195481565b6112946123d9565b73ffffffffffffffffffffffffffffffffffffffff166112b2611687565b73ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff90613fd5565b60405180910390fd5b670de0b6b3a76400006103e8600561131e610eee565b61132891906140e1565b611332919061414f565b61133c919061414f565b81101561137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590614257565b60405180910390fd5b670de0b6b3a76400008161139291906140e1565b60108190555050565b6113a36123d9565b73ffffffffffffffffffffffffffffffffffffffff166113c1611687565b73ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90613fd5565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b61147d6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661149b611687565b73ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890613fd5565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a380600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115fc6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661161a611687565b73ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613fd5565b60405180910390fd5b6116795f6132a8565b565b600e5481565b60145481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6116bd6123d9565b73ffffffffffffffffffffffffffffffffffffffff166116db611687565b73ffffffffffffffffffffffffffffffffffffffff1614611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890613fd5565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60606004805461175d90613f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461178990613f5b565b80156117d45780601f106117ab576101008083540402835291602001916117d4565b820191905f5260205f20905b8154815290600101906020018083116117b757829003601f168201915b5050505050905090565b6117e66123d9565b73ffffffffffffffffffffffffffffffffffffffff16611804611687565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190613fd5565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906142e5565b60405180910390fd5b6118f3828261336b565b5050565b60155481565b601a5481565b60185481565b5f8060015f6119166123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c790614373565b60405180910390fd5b6119e46119db6123d9565b858584036123e0565b600191505092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a27611a206123d9565b84846125a3565b6001905092915050565b611a396123d9565b73ffffffffffffffffffffffffffffffffffffffff16611a57611687565b73ffffffffffffffffffffffffffffffffffffffff1614611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490613fd5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bc86123d9565b73ffffffffffffffffffffffffffffffffffffffff1614611be7575f80fd5b611bf0306115af565b8111158015611bfe57505f81115b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906143db565b60405180910390fd5b611c4681613409565b50565b611c516123d9565b73ffffffffffffffffffffffffffffffffffffffff16611c6f611687565b73ffffffffffffffffffffffffffffffffffffffff1614611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613fd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614443565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7e6123d9565b73ffffffffffffffffffffffffffffffffffffffff16611d9c611687565b73ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de990613fd5565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e8c9190613c42565b60405180910390a25050565b601160039054906101000a900460ff1681565b5f611eb46123d9565b73ffffffffffffffffffffffffffffffffffffffff16611ed2611687565b73ffffffffffffffffffffffffffffffffffffffff1614611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613fd5565b60405180910390fd5b620186a06001611f36610eee565b611f4091906140e1565b611f4a919061414f565b821015611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83906144d1565b60405180910390fd5b6103e86005611f99610eee565b611fa391906140e1565b611fad919061414f565b821115611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe69061455f565b60405180910390fd5b81600f8190555060019050919050565b6120076123d9565b73ffffffffffffffffffffffffffffffffffffffff16612025611687565b73ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207290613fd5565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b601160019054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f5481565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f61219a6123d9565b73ffffffffffffffffffffffffffffffffffffffff166121b8611687565b73ffffffffffffffffffffffffffffffffffffffff161461220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220590613fd5565b60405180910390fd5b5f601160036101000a81548160ff0219169083151502179055506001905090565b6122376123d9565b73ffffffffffffffffffffffffffffffffffffffff16612255611687565b73ffffffffffffffffffffffffffffffffffffffff16146122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613fd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906145ed565b60405180910390fd5b612322816132a8565b50565b61232d6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661234b611687565b73ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239890613fd5565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124459061467b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614709565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125969190613d42565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260890614797565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361267f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267690614825565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127009061488d565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a906148f5565b60405180910390fd5b5f81036127aa576127a583835f61363c565b6132a3565b60115f9054906101000a900460ff1615612e53576127c6611687565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128345750612804611687565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bf5750600a60149054906101000a900460ff16155b15612e5257601160019054906101000a900460ff166129b35760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612973575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99061495d565b60405180910390fd5b5b601160039054906101000a900460ff1615612b78576129d0611687565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a5757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab05750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b77574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2b90614a11565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c15575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cbc57600e54811115612c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5690614a9f565b60405180910390fd5b601054612c6b836115af565b82612c769190614020565b1115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae90614b07565b60405180910390fd5b612e51565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d59575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612da857600e54811115612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90614b95565b60405180910390fd5b612e50565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4f57601054612e02836115af565b82612e0d9190614020565b1115612e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4590614b07565b60405180910390fd5b5b5b5b5b5b5f612e5d306115af565b90505f600f548210159050808015612e815750601160029054906101000a900460ff165b8015612e9a5750600a60149054906101000a900460ff16155b8015612eed575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f40575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f93575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fd6576001600a60146101000a81548160ff021916908315150217905550612fbb6138b1565b5f600a60146101000a81548160ff0219169083151502179055505b5f600a60149054906101000a900460ff1615905060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613085575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561308e575f90505b5f81156132935760095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130ec57505f601654115b1561318457613119606461310b60165488613a8090919063ffffffff16565b613a9590919063ffffffff16565b90506016546018548261312c91906140e1565b613136919061414f565b601a5f8282546131469190614020565b925050819055506016546017548261315e91906140e1565b613168919061414f565b60195f8282546131789190614020565b92505081905550613270565b60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131db57505f601354115b1561326f5761320860646131fa60135488613a8090919063ffffffff16565b613a9590919063ffffffff16565b90506013546015548261321b91906140e1565b613225919061414f565b601a5f8282546132359190614020565b925050819055506013546014548261324d91906140e1565b613257919061414f565b60195f8282546132679190614020565b925050819055505b5b5f8111156132845761328387308361363c565b5b80856132909190614bb3565b94505b61329e87878761363c565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561342557613424614be6565b5b6040519080825280602002602001820160405280156134535781602001602082028036833780820191505090505b50905030815f8151811061346a57613469614c13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135319190614c54565b8160018151811061354557613544614c13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135aa307f0000000000000000000000000000000000000000000000000000000000000000846123e0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161360b959493929190614d6f565b5f604051808303815f87803b158015613622575f80fd5b505af1158015613634573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a190614797565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370f90614825565b60405180910390fd5b613723838383613aaa565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614e37565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138349190614020565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138989190613d42565b60405180910390a36138ab848484613aaf565b50505050565b5f6138bb306115af565b90505f601a546019546138ce9190614020565b90505f8083036138e057505050613a7e565b6014600f546138ef91906140e1565b831115613908576014600f5461390591906140e1565b92505b5f47905061391584613409565b5f6139298247613ab490919063ffffffff16565b90505f61395385613945601a5485613a8090919063ffffffff16565b613a9590919063ffffffff16565b90505f6019819055505f601a81905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139a890614e82565b5f6040518083038185875af1925050503d805f81146139e2576040519150601f19603f3d011682016040523d82523d5f602084013e6139e7565b606091505b505080945050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a3290614e82565b5f6040518083038185875af1925050503d805f8114613a6c576040519150601f19603f3d011682016040523d82523d5f602084013e613a71565b606091505b5050809450505050505050505b565b5f8183613a8d91906140e1565b905092915050565b5f8183613aa2919061414f565b905092915050565b505050565b505050565b5f8183613ac19190614bb3565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b0b82613ac9565b613b158185613ad3565b9350613b25818560208601613ae3565b613b2e81613af1565b840191505092915050565b5f6020820190508181035f830152613b518184613b01565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613b8682613b5d565b9050919050565b613b9681613b7c565b8114613ba0575f80fd5b50565b5f81359050613bb181613b8d565b92915050565b5f819050919050565b613bc981613bb7565b8114613bd3575f80fd5b50565b5f81359050613be481613bc0565b92915050565b5f8060408385031215613c0057613bff613b59565b5b5f613c0d85828601613ba3565b9250506020613c1e85828601613bd6565b9150509250929050565b5f8115159050919050565b613c3c81613c28565b82525050565b5f602082019050613c555f830184613c33565b92915050565b5f805f8060808587031215613c7357613c72613b59565b5b5f613c8087828801613bd6565b9450506020613c9187828801613bd6565b9350506040613ca287828801613bd6565b9250506060613cb387828801613bd6565b91505092959194509250565b5f819050919050565b5f613ce2613cdd613cd884613b5d565b613cbf565b613b5d565b9050919050565b5f613cf382613cc8565b9050919050565b5f613d0482613ce9565b9050919050565b613d1481613cfa565b82525050565b5f602082019050613d2d5f830184613d0b565b92915050565b613d3c81613bb7565b82525050565b5f602082019050613d555f830184613d33565b92915050565b5f805f60608486031215613d7257613d71613b59565b5b5f613d7f86828701613ba3565b9350506020613d9086828701613ba3565b9250506040613da186828701613bd6565b9150509250925092565b613db481613b7c565b82525050565b5f602082019050613dcd5f830184613dab565b92915050565b5f60ff82169050919050565b613de881613dd3565b82525050565b5f602082019050613e015f830184613ddf565b92915050565b5f60208284031215613e1c57613e1b613b59565b5b5f613e2984828501613ba3565b91505092915050565b5f60208284031215613e4757613e46613b59565b5b5f613e5484828501613bd6565b91505092915050565b613e6681613c28565b8114613e70575f80fd5b50565b5f81359050613e8181613e5d565b92915050565b5f8060408385031215613e9d57613e9c613b59565b5b5f613eaa85828601613ba3565b9250506020613ebb85828601613e73565b9150509250929050565b5f60208284031215613eda57613ed9613b59565b5b5f613ee784828501613e73565b91505092915050565b5f8060408385031215613f0657613f05613b59565b5b5f613f1385828601613ba3565b9250506020613f2485828601613ba3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f7257607f821691505b602082108103613f8557613f84613f2e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fbf602083613ad3565b9150613fca82613f8b565b602082019050919050565b5f6020820190508181035f830152613fec81613fb3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61402a82613bb7565b915061403583613bb7565b925082820190508082111561404d5761404c613ff3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6140ad602883613ad3565b91506140b882614053565b604082019050919050565b5f6020820190508181035f8301526140da816140a1565b9050919050565b5f6140eb82613bb7565b91506140f683613bb7565b925082820261410481613bb7565b9150828204841483151761411b5761411a613ff3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61415982613bb7565b915061416483613bb7565b92508261417457614173614122565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141b3602083613ad3565b91506141be8261417f565b602082019050919050565b5f6020820190508181035f8301526141e0816141a7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614241602583613ad3565b915061424c826141e7565b604082019050919050565b5f6020820190508181035f83015261426e81614235565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6142cf603983613ad3565b91506142da82614275565b604082019050919050565b5f6020820190508181035f8301526142fc816142c3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61435d602583613ad3565b915061436882614303565b604082019050919050565b5f6020820190508181035f83015261438a81614351565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6143c5600c83613ad3565b91506143d082614391565b602082019050919050565b5f6020820190508181035f8301526143f2816143b9565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f61442d601483613ad3565b9150614438826143f9565b602082019050919050565b5f6020820190508181035f83015261445a81614421565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6144bb603583613ad3565b91506144c682614461565b604082019050919050565b5f6020820190508181035f8301526144e8816144af565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614549603483613ad3565b9150614554826144ef565b604082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6145d7602683613ad3565b91506145e28261457d565b604082019050919050565b5f6020820190508181035f830152614604816145cb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614665602483613ad3565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146f3602283613ad3565b91506146fe82614699565b604082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614781602583613ad3565b915061478c82614727565b604082019050919050565b5f6020820190508181035f8301526147ae81614775565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61480f602383613ad3565b915061481a826147b5565b604082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614877601183613ad3565b915061488282614843565b602082019050919050565b5f6020820190508181035f8301526148a48161486b565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6148df600f83613ad3565b91506148ea826148ab565b602082019050919050565b5f6020820190508181035f83015261490c816148d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614947601683613ad3565b915061495282614913565b602082019050919050565b5f6020820190508181035f8301526149748161493b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6149fb604983613ad3565b9150614a068261497b565b606082019050919050565b5f6020820190508181035f830152614a28816149ef565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614a89602683613ad3565b9150614a9482614a2f565b604082019050919050565b5f6020820190508181035f830152614ab681614a7d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614af1601383613ad3565b9150614afc82614abd565b602082019050919050565b5f6020820190508181035f830152614b1e81614ae5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614b7f602783613ad3565b9150614b8a82614b25565b604082019050919050565b5f6020820190508181035f830152614bac81614b73565b9050919050565b5f614bbd82613bb7565b9150614bc883613bb7565b9250828203905081811115614be057614bdf613ff3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c4e81613b8d565b92915050565b5f60208284031215614c6957614c68613b59565b5b5f614c7684828501614c40565b91505092915050565b5f819050919050565b5f614ca2614c9d614c9884614c7f565b613cbf565b613bb7565b9050919050565b614cb281614c88565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cea81613b7c565b82525050565b5f614cfb8383614ce1565b60208301905092915050565b5f602082019050919050565b5f614d1d82614cb8565b614d278185614cc2565b9350614d3283614cd2565b805f5b83811015614d62578151614d498882614cf0565b9750614d5483614d07565b925050600181019050614d35565b5085935050505092915050565b5f60a082019050614d825f830188613d33565b614d8f6020830187614ca9565b8181036040830152614da18186614d13565b9050614db06060830185613dab565b614dbd6080830184613d33565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e21602683613ad3565b9150614e2c82614dc7565b604082019050919050565b5f6020820190508181035f830152614e4e81614e15565b9050919050565b5f81905092915050565b50565b5f614e6d5f83614e55565b9150614e7882614e5f565b5f82019050919050565b5f614e8c82614e62565b915081905091905056fea2646970667358221220625d332b86e90f70653175613693457e8c5c390256774a6cbadf83e0fb2a146864736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610338575f3560e01c80638da5cb5b116101aa578063b70143c9116100f6578063d929a08311610094578063e6819ba71161006e578063e6819ba714610bff578063e884f26014610c3b578063f2fde38b14610c65578063fb201b1d14610c8d5761033f565b8063d929a08314610b6f578063dd62ed3e14610b99578063e2f4560514610bd55761033f565b8063c876d0b9116100d0578063c876d0b914610ab7578063d257b34f14610ae1578063d4c989d314610b1d578063d85ba06314610b455761033f565b8063b70143c914610a3f578063bae14e1d14610a67578063c024666814610a8f5761033f565b80639fccce3211610163578063a72f45861161013d578063a72f458614610975578063a9059cbb1461099f578063aacebbe3146109db578063b62496f514610a035761033f565b80639fccce32146108e5578063a0d82dc51461090f578063a457c2d7146109395761033f565b80638da5cb5b146107ed5780639213691314610817578063924de9b71461084157806395d89b41146108695780639a7a23d6146108935780639c3b4fdc146108bb5761033f565b8063395093511161028457806368092bd91161022257806370a08231116101fc57806370a0823114610747578063715018a6146107835780637437681e146107995780637bce5a04146107c35761033f565b806368092bd9146106cd5780636a486a8e146106f5578063703a49021461071f5761033f565b80634fbee1931161025e5780634fbee19314610617578063544d1ec91461065357806361528e271461067b57806367b740e9146106a55761033f565b8063395093511461058757806349bd5a5e146105c35780634a62bb65146105ed5761033f565b806318160ddd116102f157806330a136ad116102cb57806330a136ad146104df5780633103b39e14610509578063313ce5671461053357806337c2810f1461055d5761033f565b806318160ddd1461044f57806323b872dd1461047957806327c8f835146104b55761033f565b806306fdde0314610343578063095ea7b31461036d5780630e6fb7b5146103a9578063122183e8146103d1578063151d8039146103fb5780631694505e146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca3565b6040516103649190613b39565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613bea565b610d33565b6040516103a09190613c42565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613c5b565b610d50565b005b3480156103dc575f80fd5b506103e5610e1a565b6040516103f29190613c42565b60405180910390f35b348015610406575f80fd5b5061040f610eb7565b60405161041c9190613c42565b60405180910390f35b348015610430575f80fd5b50610439610eca565b6040516104469190613d1a565b60405180910390f35b34801561045a575f80fd5b50610463610eee565b6040516104709190613d42565b60405180910390f35b348015610484575f80fd5b5061049f600480360381019061049a9190613d5b565b610ef7565b6040516104ac9190613c42565b60405180910390f35b3480156104c0575f80fd5b506104c9610fe9565b6040516104d69190613dba565b60405180910390f35b3480156104ea575f80fd5b506104f3610fef565b6040516105009190613d42565b60405180910390f35b348015610514575f80fd5b5061051d610ff5565b60405161052a9190613dba565b60405180910390f35b34801561053e575f80fd5b5061054761101a565b6040516105549190613dee565b60405180910390f35b348015610568575f80fd5b50610571611022565b60405161057e9190613dba565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190613bea565b611047565b6040516105ba9190613c42565b60405180910390f35b3480156105ce575f80fd5b506105d76110ee565b6040516105e49190613dba565b60405180910390f35b3480156105f8575f80fd5b50610601611113565b60405161060e9190613c42565b60405180910390f35b348015610622575f80fd5b5061063d60048036038101906106389190613e07565b611125565b60405161064a9190613c42565b60405180910390f35b34801561065e575f80fd5b5061067960048036038101906106749190613e32565b611177565b005b348015610686575f80fd5b5061068f611286565b60405161069c9190613d42565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190613e32565b61128c565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190613e87565b61139b565b005b348015610700575f80fd5b5061070961146f565b6040516107169190613d42565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190613e07565b611475565b005b348015610752575f80fd5b5061076d60048036038101906107689190613e07565b6115af565b60405161077a9190613d42565b60405180910390f35b34801561078e575f80fd5b506107976115f4565b005b3480156107a4575f80fd5b506107ad61167b565b6040516107ba9190613d42565b60405180910390f35b3480156107ce575f80fd5b506107d7611681565b6040516107e49190613d42565b60405180910390f35b3480156107f8575f80fd5b50610801611687565b60405161080e9190613dba565b60405180910390f35b348015610822575f80fd5b5061082b6116af565b6040516108389190613d42565b60405180910390f35b34801561084c575f80fd5b5061086760048036038101906108629190613ec5565b6116b5565b005b348015610874575f80fd5b5061087d61174e565b60405161088a9190613b39565b60405180910390f35b34801561089e575f80fd5b506108b960048036038101906108b49190613e87565b6117de565b005b3480156108c6575f80fd5b506108cf6118f7565b6040516108dc9190613d42565b60405180910390f35b3480156108f0575f80fd5b506108f96118fd565b6040516109069190613d42565b60405180910390f35b34801561091a575f80fd5b50610923611903565b6040516109309190613d42565b60405180910390f35b348015610944575f80fd5b5061095f600480360381019061095a9190613bea565b611909565b60405161096c9190613c42565b60405180910390f35b348015610980575f80fd5b506109896119ef565b6040516109969190613dba565b60405180910390f35b3480156109aa575f80fd5b506109c560048036038101906109c09190613bea565b611a14565b6040516109d29190613c42565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc9190613e07565b611a31565b005b348015610a0e575f80fd5b50610a296004803603810190610a249190613e07565b611b6b565b604051610a369190613c42565b60405180910390f35b348015610a4a575f80fd5b50610a656004803603810190610a609190613e32565b611b88565b005b348015610a72575f80fd5b50610a8d6004803603810190610a889190613e07565b611c49565b005b348015610a9a575f80fd5b50610ab56004803603810190610ab09190613e87565b611d76565b005b348015610ac2575f80fd5b50610acb611e98565b604051610ad89190613c42565b60405180910390f35b348015610aec575f80fd5b50610b076004803603810190610b029190613e32565b611eab565b604051610b149190613c42565b60405180910390f35b348015610b28575f80fd5b50610b436004803603810190610b3e9190613e87565b611fff565b005b348015610b50575f80fd5b50610b596120d3565b604051610b669190613d42565b60405180910390f35b348015610b7a575f80fd5b50610b836120d9565b604051610b909190613c42565b60405180910390f35b348015610ba4575f80fd5b50610bbf6004803603810190610bba9190613ef0565b6120ec565b604051610bcc9190613d42565b60405180910390f35b348015610be0575f80fd5b50610be961216e565b604051610bf69190613d42565b60405180910390f35b348015610c0a575f80fd5b50610c256004803603810190610c209190613e07565b612174565b604051610c329190613c42565b60405180910390f35b348015610c46575f80fd5b50610c4f612191565b604051610c5c9190613c42565b60405180910390f35b348015610c70575f80fd5b50610c8b6004803603810190610c869190613e07565b61222f565b005b348015610c98575f80fd5b50610ca1612325565b005b606060038054610cb290613f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90613f5b565b8015610d295780601f10610d0057610100808354040283529160200191610d29565b820191905f5260205f20905b815481529060010190602001808311610d0c57829003601f168201915b5050505050905090565b5f610d46610d3f6123d9565b84846123e0565b6001905092915050565b610d586123d9565b73ffffffffffffffffffffffffffffffffffffffff16610d76611687565b73ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390613fd5565b60405180910390fd5b8360148190555082601581905550601554601454610dea9190614020565b6013819055508160178190555080601881905550601854601754610e0e9190614020565b60168190555050505050565b5f610e236123d9565b73ffffffffffffffffffffffffffffffffffffffff16610e41611687565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613fd5565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b601160029054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610f038484846125a3565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f4a6123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906140c3565b60405180910390fd5b610fdd85610fd56123d9565b8584036123e0565b60019150509392505050565b61dead81565b60105481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6110e46110536123d9565b848460015f6110606123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110df9190614020565b6123e0565b6001905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115f9054906101000a900460ff1681565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61117f6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661119d611687565b73ffffffffffffffffffffffffffffffffffffffff16146111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613fd5565b60405180910390fd5b670de0b6b3a76400006103e86001611209610eee565b61121391906140e1565b61121d919061414f565b611227919061414f565b811015611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611260906141c9565b60405180910390fd5b670de0b6b3a76400008161127d91906140e1565b600e8190555050565b60195481565b6112946123d9565b73ffffffffffffffffffffffffffffffffffffffff166112b2611687565b73ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff90613fd5565b60405180910390fd5b670de0b6b3a76400006103e8600561131e610eee565b61132891906140e1565b611332919061414f565b61133c919061414f565b81101561137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590614257565b60405180910390fd5b670de0b6b3a76400008161139291906140e1565b60108190555050565b6113a36123d9565b73ffffffffffffffffffffffffffffffffffffffff166113c1611687565b73ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90613fd5565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b61147d6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661149b611687565b73ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890613fd5565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a380600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115fc6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661161a611687565b73ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613fd5565b60405180910390fd5b6116795f6132a8565b565b600e5481565b60145481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6116bd6123d9565b73ffffffffffffffffffffffffffffffffffffffff166116db611687565b73ffffffffffffffffffffffffffffffffffffffff1614611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890613fd5565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60606004805461175d90613f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461178990613f5b565b80156117d45780601f106117ab576101008083540402835291602001916117d4565b820191905f5260205f20905b8154815290600101906020018083116117b757829003601f168201915b5050505050905090565b6117e66123d9565b73ffffffffffffffffffffffffffffffffffffffff16611804611687565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190613fd5565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906142e5565b60405180910390fd5b6118f3828261336b565b5050565b60155481565b601a5481565b60185481565b5f8060015f6119166123d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c790614373565b60405180910390fd5b6119e46119db6123d9565b858584036123e0565b600191505092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a27611a206123d9565b84846125a3565b6001905092915050565b611a396123d9565b73ffffffffffffffffffffffffffffffffffffffff16611a57611687565b73ffffffffffffffffffffffffffffffffffffffff1614611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490613fd5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bc86123d9565b73ffffffffffffffffffffffffffffffffffffffff1614611be7575f80fd5b611bf0306115af565b8111158015611bfe57505f81115b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906143db565b60405180910390fd5b611c4681613409565b50565b611c516123d9565b73ffffffffffffffffffffffffffffffffffffffff16611c6f611687565b73ffffffffffffffffffffffffffffffffffffffff1614611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613fd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614443565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7e6123d9565b73ffffffffffffffffffffffffffffffffffffffff16611d9c611687565b73ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de990613fd5565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e8c9190613c42565b60405180910390a25050565b601160039054906101000a900460ff1681565b5f611eb46123d9565b73ffffffffffffffffffffffffffffffffffffffff16611ed2611687565b73ffffffffffffffffffffffffffffffffffffffff1614611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613fd5565b60405180910390fd5b620186a06001611f36610eee565b611f4091906140e1565b611f4a919061414f565b821015611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83906144d1565b60405180910390fd5b6103e86005611f99610eee565b611fa391906140e1565b611fad919061414f565b821115611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe69061455f565b60405180910390fd5b81600f8190555060019050919050565b6120076123d9565b73ffffffffffffffffffffffffffffffffffffffff16612025611687565b73ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207290613fd5565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b601160019054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f5481565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f61219a6123d9565b73ffffffffffffffffffffffffffffffffffffffff166121b8611687565b73ffffffffffffffffffffffffffffffffffffffff161461220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220590613fd5565b60405180910390fd5b5f601160036101000a81548160ff0219169083151502179055506001905090565b6122376123d9565b73ffffffffffffffffffffffffffffffffffffffff16612255611687565b73ffffffffffffffffffffffffffffffffffffffff16146122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613fd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906145ed565b60405180910390fd5b612322816132a8565b50565b61232d6123d9565b73ffffffffffffffffffffffffffffffffffffffff1661234b611687565b73ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239890613fd5565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124459061467b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614709565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125969190613d42565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260890614797565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361267f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267690614825565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127009061488d565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a906148f5565b60405180910390fd5b5f81036127aa576127a583835f61363c565b6132a3565b60115f9054906101000a900460ff1615612e53576127c6611687565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128345750612804611687565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bf5750600a60149054906101000a900460ff16155b15612e5257601160019054906101000a900460ff166129b35760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612973575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99061495d565b60405180910390fd5b5b601160039054906101000a900460ff1615612b78576129d0611687565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a5757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab05750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b77574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2b90614a11565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c15575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cbc57600e54811115612c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5690614a9f565b60405180910390fd5b601054612c6b836115af565b82612c769190614020565b1115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae90614b07565b60405180910390fd5b612e51565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d59575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612da857600e54811115612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90614b95565b60405180910390fd5b612e50565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4f57601054612e02836115af565b82612e0d9190614020565b1115612e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4590614b07565b60405180910390fd5b5b5b5b5b5b5f612e5d306115af565b90505f600f548210159050808015612e815750601160029054906101000a900460ff165b8015612e9a5750600a60149054906101000a900460ff16155b8015612eed575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f40575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f93575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fd6576001600a60146101000a81548160ff021916908315150217905550612fbb6138b1565b5f600a60146101000a81548160ff0219169083151502179055505b5f600a60149054906101000a900460ff1615905060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613085575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561308e575f90505b5f81156132935760095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130ec57505f601654115b1561318457613119606461310b60165488613a8090919063ffffffff16565b613a9590919063ffffffff16565b90506016546018548261312c91906140e1565b613136919061414f565b601a5f8282546131469190614020565b925050819055506016546017548261315e91906140e1565b613168919061414f565b60195f8282546131789190614020565b92505081905550613270565b60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131db57505f601354115b1561326f5761320860646131fa60135488613a8090919063ffffffff16565b613a9590919063ffffffff16565b90506013546015548261321b91906140e1565b613225919061414f565b601a5f8282546132359190614020565b925050819055506013546014548261324d91906140e1565b613257919061414f565b60195f8282546132679190614020565b925050819055505b5b5f8111156132845761328387308361363c565b5b80856132909190614bb3565b94505b61329e87878761363c565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561342557613424614be6565b5b6040519080825280602002602001820160405280156134535781602001602082028036833780820191505090505b50905030815f8151811061346a57613469614c13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135319190614c54565b8160018151811061354557613544614c13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135aa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123e0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161360b959493929190614d6f565b5f604051808303815f87803b158015613622575f80fd5b505af1158015613634573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a190614797565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370f90614825565b60405180910390fd5b613723838383613aaa565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614e37565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138349190614020565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138989190613d42565b60405180910390a36138ab848484613aaf565b50505050565b5f6138bb306115af565b90505f601a546019546138ce9190614020565b90505f8083036138e057505050613a7e565b6014600f546138ef91906140e1565b831115613908576014600f5461390591906140e1565b92505b5f47905061391584613409565b5f6139298247613ab490919063ffffffff16565b90505f61395385613945601a5485613a8090919063ffffffff16565b613a9590919063ffffffff16565b90505f6019819055505f601a81905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139a890614e82565b5f6040518083038185875af1925050503d805f81146139e2576040519150601f19603f3d011682016040523d82523d5f602084013e6139e7565b606091505b505080945050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a3290614e82565b5f6040518083038185875af1925050503d805f8114613a6c576040519150601f19603f3d011682016040523d82523d5f602084013e613a71565b606091505b5050809450505050505050505b565b5f8183613a8d91906140e1565b905092915050565b5f8183613aa2919061414f565b905092915050565b505050565b505050565b5f8183613ac19190614bb3565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b0b82613ac9565b613b158185613ad3565b9350613b25818560208601613ae3565b613b2e81613af1565b840191505092915050565b5f6020820190508181035f830152613b518184613b01565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613b8682613b5d565b9050919050565b613b9681613b7c565b8114613ba0575f80fd5b50565b5f81359050613bb181613b8d565b92915050565b5f819050919050565b613bc981613bb7565b8114613bd3575f80fd5b50565b5f81359050613be481613bc0565b92915050565b5f8060408385031215613c0057613bff613b59565b5b5f613c0d85828601613ba3565b9250506020613c1e85828601613bd6565b9150509250929050565b5f8115159050919050565b613c3c81613c28565b82525050565b5f602082019050613c555f830184613c33565b92915050565b5f805f8060808587031215613c7357613c72613b59565b5b5f613c8087828801613bd6565b9450506020613c9187828801613bd6565b9350506040613ca287828801613bd6565b9250506060613cb387828801613bd6565b91505092959194509250565b5f819050919050565b5f613ce2613cdd613cd884613b5d565b613cbf565b613b5d565b9050919050565b5f613cf382613cc8565b9050919050565b5f613d0482613ce9565b9050919050565b613d1481613cfa565b82525050565b5f602082019050613d2d5f830184613d0b565b92915050565b613d3c81613bb7565b82525050565b5f602082019050613d555f830184613d33565b92915050565b5f805f60608486031215613d7257613d71613b59565b5b5f613d7f86828701613ba3565b9350506020613d9086828701613ba3565b9250506040613da186828701613bd6565b9150509250925092565b613db481613b7c565b82525050565b5f602082019050613dcd5f830184613dab565b92915050565b5f60ff82169050919050565b613de881613dd3565b82525050565b5f602082019050613e015f830184613ddf565b92915050565b5f60208284031215613e1c57613e1b613b59565b5b5f613e2984828501613ba3565b91505092915050565b5f60208284031215613e4757613e46613b59565b5b5f613e5484828501613bd6565b91505092915050565b613e6681613c28565b8114613e70575f80fd5b50565b5f81359050613e8181613e5d565b92915050565b5f8060408385031215613e9d57613e9c613b59565b5b5f613eaa85828601613ba3565b9250506020613ebb85828601613e73565b9150509250929050565b5f60208284031215613eda57613ed9613b59565b5b5f613ee784828501613e73565b91505092915050565b5f8060408385031215613f0657613f05613b59565b5b5f613f1385828601613ba3565b9250506020613f2485828601613ba3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f7257607f821691505b602082108103613f8557613f84613f2e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fbf602083613ad3565b9150613fca82613f8b565b602082019050919050565b5f6020820190508181035f830152613fec81613fb3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61402a82613bb7565b915061403583613bb7565b925082820190508082111561404d5761404c613ff3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6140ad602883613ad3565b91506140b882614053565b604082019050919050565b5f6020820190508181035f8301526140da816140a1565b9050919050565b5f6140eb82613bb7565b91506140f683613bb7565b925082820261410481613bb7565b9150828204841483151761411b5761411a613ff3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61415982613bb7565b915061416483613bb7565b92508261417457614173614122565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141b3602083613ad3565b91506141be8261417f565b602082019050919050565b5f6020820190508181035f8301526141e0816141a7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614241602583613ad3565b915061424c826141e7565b604082019050919050565b5f6020820190508181035f83015261426e81614235565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6142cf603983613ad3565b91506142da82614275565b604082019050919050565b5f6020820190508181035f8301526142fc816142c3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61435d602583613ad3565b915061436882614303565b604082019050919050565b5f6020820190508181035f83015261438a81614351565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6143c5600c83613ad3565b91506143d082614391565b602082019050919050565b5f6020820190508181035f8301526143f2816143b9565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f61442d601483613ad3565b9150614438826143f9565b602082019050919050565b5f6020820190508181035f83015261445a81614421565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6144bb603583613ad3565b91506144c682614461565b604082019050919050565b5f6020820190508181035f8301526144e8816144af565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614549603483613ad3565b9150614554826144ef565b604082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6145d7602683613ad3565b91506145e28261457d565b604082019050919050565b5f6020820190508181035f830152614604816145cb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614665602483613ad3565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146f3602283613ad3565b91506146fe82614699565b604082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614781602583613ad3565b915061478c82614727565b604082019050919050565b5f6020820190508181035f8301526147ae81614775565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61480f602383613ad3565b915061481a826147b5565b604082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614877601183613ad3565b915061488282614843565b602082019050919050565b5f6020820190508181035f8301526148a48161486b565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6148df600f83613ad3565b91506148ea826148ab565b602082019050919050565b5f6020820190508181035f83015261490c816148d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614947601683613ad3565b915061495282614913565b602082019050919050565b5f6020820190508181035f8301526149748161493b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6149fb604983613ad3565b9150614a068261497b565b606082019050919050565b5f6020820190508181035f830152614a28816149ef565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614a89602683613ad3565b9150614a9482614a2f565b604082019050919050565b5f6020820190508181035f830152614ab681614a7d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614af1601383613ad3565b9150614afc82614abd565b602082019050919050565b5f6020820190508181035f830152614b1e81614ae5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614b7f602783613ad3565b9150614b8a82614b25565b604082019050919050565b5f6020820190508181035f830152614bac81614b73565b9050919050565b5f614bbd82613bb7565b9150614bc883613bb7565b9250828203905081811115614be057614bdf613ff3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c4e81613b8d565b92915050565b5f60208284031215614c6957614c68613b59565b5b5f614c7684828501614c40565b91505092915050565b5f819050919050565b5f614ca2614c9d614c9884614c7f565b613cbf565b613bb7565b9050919050565b614cb281614c88565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cea81613b7c565b82525050565b5f614cfb8383614ce1565b60208301905092915050565b5f602082019050919050565b5f614d1d82614cb8565b614d278185614cc2565b9350614d3283614cd2565b805f5b83811015614d62578151614d498882614cf0565b9750614d5483614d07565b925050600181019050614d35565b5085935050505092915050565b5f60a082019050614d825f830188613d33565b614d8f6020830187614ca9565b8181036040830152614da18186614d13565b9050614db06060830185613dab565b614dbd6080830184613d33565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e21602683613ad3565b9150614e2c82614dc7565b604082019050919050565b5f6020820190508181035f830152614e4e81614e15565b9050919050565b5f81905092915050565b50565b5f614e6d5f83614e55565b9150614e7882614e5f565b5f82019050919050565b5f614e8c82614e62565b915081905091905056fea2646970667358221220625d332b86e90f70653175613693457e8c5c390256774a6cbadf83e0fb2a146864736f6c634300081a0033
Deployed Bytecode Sourcemap
15103:12830:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3714:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20991:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19036:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15888:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15417:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3121:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3891:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15510:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15773:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15639;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3020:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15671:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4391:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15475:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15807:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22152:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19817:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16260:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20078:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18591:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16153:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20817:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3237:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;922:103;;;;;;;;;;;;;:::i;:::-;;15706:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16083:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;699:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16188:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20498:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2908:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21644:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16120:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16298:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16226:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4614:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15603:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3372:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20607:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15351:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26286:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18722:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21454:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15927:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20347:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16049:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15847:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3555:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15733:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15296:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19169:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1033:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18918:110;;;;;;;;;;;;;:::i;:::-;;2800:100;2854:13;2887:5;2880:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:100;:::o;3714:169::-;3797:4;3814:39;3823:12;:10;:12::i;:::-;3837:7;3846:6;3814:8;:39::i;:::-;3871:4;3864:11;;3714:169;;;;:::o;20991:455::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:16:::1;21180:15;:34;;;;21237:10;21225:9;:22;;;;21291:9;;21273:15;;:27;;;;:::i;:::-;21258:12;:42;;;;21330:17;21311:16;:36;;;;21371:11;21358:10;:24;;;;21428:10;;21409:16;;:29;;;;:::i;:::-;21393:13;:45;;;;20991:455:::0;;;;:::o;19036:125::-;19092:4;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19126:5:::1;19109:14;;:22;;;;;;;;;;;;;;;;;;19149:4;19142:11;;19036:125:::0;:::o;15888:32::-;;;;;;;;;;;;;:::o;15417:51::-;;;:::o;3121:108::-;3182:7;3209:12;;3202:19;;3121:108;:::o;3891:492::-;4031:4;4048:36;4058:6;4066:9;4077:6;4048:9;:36::i;:::-;4097:24;4124:11;:19;4136:6;4124:19;;;;;;;;;;;;;;;:33;4144:12;:10;:12::i;:::-;4124:33;;;;;;;;;;;;;;;;4097:60;;4196:6;4176:16;:26;;4168:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4283:57;4292:6;4300:12;:10;:12::i;:::-;4333:6;4314:16;:25;4283:8;:57::i;:::-;4371:4;4364:11;;;3891:492;;;;;:::o;15510:53::-;15556:6;15510:53;:::o;15773:25::-;;;;:::o;15639:::-;;;;;;;;;;;;;:::o;3020:93::-;3078:5;3103:2;3096:9;;3020:93;:::o;15671:26::-;;;;;;;;;;;;;:::o;4391:215::-;4479:4;4496:80;4505:12;:10;:12::i;:::-;4519:7;4565:10;4528:11;:25;4540:12;:10;:12::i;:::-;4528:25;;;;;;;;;;;;;;;:34;4554:7;4528:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4496:8;:80::i;:::-;4594:4;4587:11;;4391:215;;;;:::o;15475:28::-;;;;;;;;;;;;;:::o;15807:33::-;;;;;;;;;;;;;:::o;22152:126::-;22218:4;22242:19;:28;22262:7;22242:28;;;;;;;;;;;;;;;;;;;;;;;;;22235:35;;22152:126;;;:::o;19817:253::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19962:4:::1;19954;19949:1;19933:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19932:26;;;;:::i;:::-;19931:35;;;;:::i;:::-;19921:6;:45;;19899:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;20055:6;20045;:17;;;;:::i;:::-;20037:5;:25;;;;19817:253:::0;:::o;16260:31::-;;;;:::o;20078:261::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:4:::1;20213;20208:1;20192:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20191:26;;;;:::i;:::-;20190:35;;;;:::i;:::-;20180:6;:45;;20158:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;20324:6;20314;:17;;;;:::i;:::-;20301:10;:30;;;;20078:261:::0;:::o;18591:123::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18700:6:::1;18679:12;:18;18692:4;18679:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18591:123:::0;;:::o;16153:28::-;;;;:::o;20817:166::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20931:10:::1;;;;;;;;;;;20902:40;;20920:9;20902:40;;;;;;;;;;;;20966:9;20953:10;;:22;;;;;;;;;;;;;;;;;;20817:166:::0;:::o;3237:127::-;3311:7;3338:9;:18;3348:7;3338:18;;;;;;;;;;;;;;;;3331:25;;3237:127;;;:::o;922:103::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;987:30:::1;1014:1;987:18;:30::i;:::-;922:103::o:0;15706:20::-;;;;:::o;16083:30::-;;;;:::o;699:87::-;745:7;772:6;;;;;;;;;;;765:13;;699:87;:::o;16188:31::-;;;;:::o;20498:101::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20584:7:::1;20569:12;;:22;;;;;;;;;;;;;;;;;;20498:101:::0;:::o;2908:104::-;2964:13;2997:7;2990:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:104;:::o;21644:304::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21788:13:::1;;;;;;;;;;;21780:21;;:4;:21;;::::0;21758:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21899:41;21928:4;21934:5;21899:28;:41::i;:::-;21644:304:::0;;:::o;16120:24::-;;;;:::o;16298:27::-;;;;:::o;16226:25::-;;;;:::o;4614:413::-;4707:4;4724:24;4751:11;:25;4763:12;:10;:12::i;:::-;4751:25;;;;;;;;;;;;;;;:34;4777:7;4751:34;;;;;;;;;;;;;;;;4724:61;;4824:15;4804:16;:35;;4796:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4917:67;4926:12;:10;:12::i;:::-;4940:7;4968:15;4949:16;:34;4917:8;:67::i;:::-;5015:4;5008:11;;;4614:413;;;;:::o;15603:29::-;;;;;;;;;;;;;:::o;3372:175::-;3458:4;3475:42;3485:12;:10;:12::i;:::-;3499:9;3510:6;3475:9;:42::i;:::-;3535:4;3528:11;;3372:175;;;;:::o;20607:202::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20741:14:::1;;;;;;;;;;;20700:56;;20722:17;20700:56;;;;;;;;;;;;20784:17;20767:14;;:34;;;;;;;;;;;;;;;;;;20607:202:::0;:::o;15351:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;26286:222::-;26366:14;;;;;;;;;;;26350:30;;:12;:10;:12::i;:::-;:30;;;26342:39;;;;;;26410:24;26428:4;26410:9;:24::i;:::-;26400:6;:34;;:48;;;;;26447:1;26438:6;:10;26400:48;26392:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26476:24;26493:6;26476:16;:24::i;:::-;26286:222;:::o;18722:188::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18834:3:::1;18808:30;;:14;:30;;::::0;18800:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18888:14;18874:11;;:28;;;;;;;;;;;;;;;;;;18722:188:::0;:::o;21454:182::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21570:8:::1;21539:19;:28;21559:7;21539:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21610:7;21594:34;;;21619:8;21594:34;;;;;;:::i;:::-;;;;;;;;21454:182:::0;;:::o;15927:40::-;;;;;;;;;;;;;:::o;19312:497::-;19420:4;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19499:6:::1;19494:1;19478:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19477:28;;;;:::i;:::-;19464:9;:41;;19442:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19654:4;19649:1;19633:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19632:26;;;;:::i;:::-;19619:9;:39;;19597:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19770:9;19749:18;:30;;;;19797:4;19790:11;;19312:497:::0;;;:::o;20347:143::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20478:4:::1;20451:16;:24;20468:6;20451:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20347:143:::0;;:::o;16049:27::-;;;;:::o;15847:34::-;;;;;;;;;;;;;:::o;3555:151::-;3644:7;3671:11;:18;3683:5;3671:18;;;;;;;;;;;;;;;:27;3690:7;3671:27;;;;;;;;;;;;;;;;3664:34;;3555:151;;;;:::o;15733:33::-;;;;:::o;15296:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;19169:135::-;19229:4;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19269:5:::1;19246:20;;:28;;;;;;;;;;;;;;;;;;19292:4;19285:11;;19169:135:::0;:::o;1033:201::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1142:1:::1;1122:22;;:8;:22;;::::0;1114:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1198:28;1217:8;1198:18;:28::i;:::-;1033:201:::0;:::o;18918:110::-;845:12;:10;:12::i;:::-;834:23;;:7;:5;:7::i;:::-;:23;;;826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18986:4:::1;18969:14;;:21;;;;;;;;;;;;;;;;;;19016:4;19001:12;;:19;;;;;;;;;;;;;;;;;;18918:110::o:0;245:98::-;298:7;325:10;318:17;;245:98;:::o;6782:380::-;6935:1;6918:19;;:5;:19;;;6910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7016:1;6997:21;;:7;:21;;;6989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7100:6;7070:11;:18;7082:5;7070:18;;;;;;;;;;;;;;;:27;7089:7;7070:27;;;;;;;;;;;;;;;:36;;;;7138:7;7122:32;;7131:5;7122:32;;;7147:6;7122:32;;;;;;:::i;:::-;;;;;;;;6782:380;;;:::o;22336:3827::-;22484:1;22468:18;;:4;:18;;;22460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22561:1;22547:16;;:2;:16;;;22539:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22623:12;:18;22636:4;22623:18;;;;;;;;;;;;;;;;;;;;;;;;;22622:19;22614:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22683:12;:16;22696:2;22683:16;;;;;;;;;;;;;;;;;;;;;;;;;22682:17;22674:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22746:1;22736:6;:11;22732:93;;22764:28;22780:4;22786:2;22790:1;22764:15;:28::i;:::-;22807:7;;22732:93;22841:14;;;;;;;;;;;22837:1668;;;22884:7;:5;:7::i;:::-;22876:15;;:4;:15;;;;:49;;;;;22918:7;:5;:7::i;:::-;22912:13;;:2;:13;;;;22876:49;:86;;;;;22960:1;22946:16;;:2;:16;;;;22876:86;:128;;;;;22997:6;22983:21;;:2;:21;;;;22876:128;:159;;;;;23026:9;;;;;;;;;;;23025:10;22876:159;22872:1622;;;23061:14;;;;;;;;;;;23056:151;;23108:19;:25;23128:4;23108:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23137:19;:23;23157:2;23137:23;;;;;;;;;;;;;;;;;;;;;;;;;23108:52;23100:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23056:151;23363:20;;;;;;;;;;;23359:425;;;23418:7;:5;:7::i;:::-;23412:13;;:2;:13;;;;:47;;;;;23443:15;23429:30;;:2;:30;;;;23412:47;:79;;;;;23477:13;;;;;;;;;;;23463:28;;:2;:28;;;;23412:79;23408:357;;;23570:12;23528:28;:39;23557:9;23528:39;;;;;;;;;;;;;;;;:54;23520:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23729:12;23687:28;:39;23716:9;23687:39;;;;;;;;;;;;;;;:54;;;;23408:357;23359:425;23836:25;:31;23862:4;23836:31;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;23872:16;:20;23889:2;23872:20;;;;;;;;;;;;;;;;;;;;;;;;;23871:21;23836:56;23832:647;;;23935:5;;23925:6;:15;;23917:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24040:10;;24023:13;24033:2;24023:9;:13::i;:::-;24014:6;:22;;;;:::i;:::-;:36;;24006:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23832:647;;;24150:25;:29;24176:2;24150:29;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24184:16;:22;24201:4;24184:22;;;;;;;;;;;;;;;;;;;;;;;;;24183:23;24150:56;24146:333;;;24249:5;;24239:6;:15;;24231:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24146:333;;;24346:16;:20;24363:2;24346:20;;;;;;;;;;;;;;;;;;;;;;;;;24341:138;;24425:10;;24408:13;24418:2;24408:9;:13::i;:::-;24399:6;:22;;;;:::i;:::-;:36;;24391:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24341:138;24146:333;23832:647;22872:1622;22837:1668;24517:28;24548:24;24566:4;24548:9;:24::i;:::-;24517:55;;24583:12;24622:18;;24598:20;:42;;24583:57;;24657:7;:36;;;;;24681:12;;;;;;;;;;;24657:36;:63;;;;;24711:9;;;;;;;;;;;24710:10;24657:63;:112;;;;;24738:25;:31;24764:4;24738:31;;;;;;;;;;;;;;;;;;;;;;;;;24737:32;24657:112;:155;;;;;24787:19;:25;24807:4;24787:25;;;;;;;;;;;;;;;;;;;;;;;;;24786:26;24657:155;:196;;;;;24830:19;:23;24850:2;24830:23;;;;;;;;;;;;;;;;;;;;;;;;;24829:24;24657:196;24653:306;;;24882:4;24870:9;;:16;;;;;;;;;;;;;;;;;;24903:10;:8;:10::i;:::-;24942:5;24930:9;;:17;;;;;;;;;;;;;;;;;;24653:306;24971:12;24987:9;;;;;;;;;;;24986:10;24971:25;;25098:19;:25;25118:4;25098:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25127:19;:23;25147:2;25127:23;;;;;;;;;;;;;;;;;;;;;;;;;25098:52;25094:100;;;25177:5;25167:15;;25094:100;25206:12;25311:7;25307:803;;;25363:25;:29;25389:2;25363:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25412:1;25396:13;;:17;25363:50;25359:602;;;25441:34;25471:3;25441:25;25452:13;;25441:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25434:41;;25532:13;;25518:10;;25511:4;:17;;;;:::i;:::-;25510:35;;;;:::i;:::-;25494:12;;:51;;;;;;;:::i;:::-;;;;;;;;25612:13;;25592:16;;25585:4;:23;;;;:::i;:::-;25584:41;;;;:::i;:::-;25564:16;;:61;;;;;;;:::i;:::-;;;;;;;;25359:602;;;25687:25;:31;25713:4;25687:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25737:1;25722:12;;:16;25687:51;25683:278;;;25766:33;25795:3;25766:24;25777:12;;25766:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25759:40;;25855:12;;25842:9;;25835:4;:16;;;;:::i;:::-;25834:33;;;;:::i;:::-;25818:12;;:49;;;;;;;:::i;:::-;;;;;;;;25933:12;;25914:15;;25907:4;:22;;;;:::i;:::-;25906:39;;;;:::i;:::-;25886:16;;:59;;;;;;;:::i;:::-;;;;;;;;25683:278;25359:602;25988:1;25981:4;:8;25977:91;;;26010:42;26026:4;26040;26047;26010:15;:42::i;:::-;25977:91;26094:4;26084:14;;;;;:::i;:::-;;;25307:803;26122:33;26138:4;26144:2;26148:6;26122:15;:33::i;:::-;22449:3714;;;;22336:3827;;;;:::o;1242:191::-;1316:16;1335:6;;;;;;;;;;;1316:25;;1361:8;1352:6;;:17;;;;;;;;;;;;;;;;;;1416:8;1385:40;;1406:8;1385:40;;;;;;;;;;;;1305:128;1242:191;:::o;21956:188::-;22073:5;22039:25;:31;22065:4;22039:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22130:5;22096:40;;22124:4;22096:40;;;;;;;;;;;;21956:188;;:::o;26517:529::-;26583:21;26621:1;26607:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26583:40;;26652:4;26634;26639:1;26634:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26678:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26668:4;26673:1;26668:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26713:62;26730:4;26745:15;26763:11;26713:8;:62::i;:::-;26814:15;:66;;;26895:11;26921:1;26965:4;26992;27012:15;26814:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26572:474;26517:529;:::o;5035:733::-;5193:1;5175:20;;:6;:20;;;5167:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5277:1;5256:23;;:9;:23;;;5248:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5332:47;5353:6;5361:9;5372:6;5332:20;:47::i;:::-;5392:21;5416:9;:17;5426:6;5416:17;;;;;;;;;;;;;;;;5392:41;;5469:6;5452:13;:23;;5444:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5590:6;5574:13;:22;5554:9;:17;5564:6;5554:17;;;;;;;;;;;;;;;:42;;;;5642:6;5618:9;:20;5628:9;5618:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5683:9;5666:35;;5675:6;5666:35;;;5694:6;5666:35;;;;;;:::i;:::-;;;;;;;;5714:46;5734:6;5742:9;5753:6;5714:19;:46::i;:::-;5156:612;5035:733;;;:::o;27054:876::-;27093:23;27119:24;27137:4;27119:9;:24::i;:::-;27093:50;;27154:25;27201:12;;27182:16;;:31;;;;:::i;:::-;27154:59;;27224:12;27272:1;27253:15;:20;27249:59;;27290:7;;;;;27249:59;27363:2;27342:18;;:23;;;;:::i;:::-;27324:15;:41;27320:115;;;27421:2;27400:18;;:23;;;;:::i;:::-;27382:41;;27320:115;27447:25;27475:21;27447:49;;27507:33;27524:15;27507:16;:33::i;:::-;27553:18;27574:44;27600:17;27574:21;:25;;:44;;;;:::i;:::-;27553:65;;27629:17;27649:51;27682:17;27649:28;27664:12;;27649:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27629:71;;27732:1;27713:16;:20;;;;27759:1;27744:12;:16;;;;27795:10;;;;;;;;;;;27787:24;;27819:9;27787:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27773:60;;;;;27866:14;;;;;;;;;;;27858:28;;27895:21;27858:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27844:78;;;;;27082:848;;;;;;27054:876;:::o;8788:98::-;8846:7;8877:1;8873;:5;;;;:::i;:::-;8866:12;;8788:98;;;;:::o;8894:::-;8952:7;8983:1;8979;:5;;;;:::i;:::-;8972:12;;8894:98;;;;:::o;7170:125::-;;;;:::o;7303:124::-;;;;:::o;8682:98::-;8740:7;8771:1;8767;:5;;;;:::i;:::-;8760:12;;8682: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:765::-;3425:6;3433;3441;3449;3498:3;3486:9;3477:7;3473:23;3469:33;3466:120;;;3505:79;;:::i;:::-;3466:120;3625:1;3650:53;3695:7;3686:6;3675:9;3671:22;3650:53;:::i;:::-;3640:63;;3596:117;3752:2;3778:53;3823:7;3814:6;3803:9;3799:22;3778:53;:::i;:::-;3768:63;;3723:118;3880:2;3906:53;3951:7;3942:6;3931:9;3927:22;3906:53;:::i;:::-;3896:63;;3851:118;4008:2;4034:53;4079:7;4070:6;4059:9;4055:22;4034:53;:::i;:::-;4024:63;;3979:118;3339:765;;;;;;;:::o;4110:60::-;4138:3;4159:5;4152:12;;4110:60;;;:::o;4176:142::-;4226:9;4259:53;4277:34;4286:24;4304:5;4286:24;:::i;:::-;4277:34;:::i;:::-;4259:53;:::i;:::-;4246:66;;4176:142;;;:::o;4324:126::-;4374:9;4407:37;4438:5;4407:37;:::i;:::-;4394:50;;4324:126;;;:::o;4456:153::-;4533:9;4566:37;4597:5;4566:37;:::i;:::-;4553:50;;4456:153;;;:::o;4615:185::-;4729:64;4787:5;4729:64;:::i;:::-;4724:3;4717:77;4615:185;;:::o;4806:276::-;4926:4;4964:2;4953:9;4949:18;4941:26;;4977:98;5072:1;5061:9;5057:17;5048:6;4977:98;:::i;:::-;4806:276;;;;:::o;5088:118::-;5175:24;5193:5;5175:24;:::i;:::-;5170:3;5163:37;5088:118;;:::o;5212:222::-;5305:4;5343:2;5332:9;5328:18;5320:26;;5356:71;5424:1;5413:9;5409:17;5400:6;5356:71;:::i;:::-;5212:222;;;;:::o;5440:619::-;5517:6;5525;5533;5582:2;5570:9;5561:7;5557:23;5553:32;5550:119;;;5588:79;;:::i;:::-;5550:119;5708:1;5733:53;5778:7;5769:6;5758:9;5754:22;5733:53;:::i;:::-;5723:63;;5679:117;5835:2;5861:53;5906:7;5897:6;5886:9;5882:22;5861:53;:::i;:::-;5851:63;;5806:118;5963:2;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5934:118;5440:619;;;;;:::o;6065:118::-;6152:24;6170:5;6152:24;:::i;:::-;6147:3;6140:37;6065:118;;:::o;6189:222::-;6282:4;6320:2;6309:9;6305:18;6297:26;;6333:71;6401:1;6390:9;6386:17;6377:6;6333:71;:::i;:::-;6189:222;;;;:::o;6417:86::-;6452:7;6492:4;6485:5;6481:16;6470:27;;6417:86;;;:::o;6509:112::-;6592:22;6608:5;6592:22;:::i;:::-;6587:3;6580:35;6509:112;;:::o;6627:214::-;6716:4;6754:2;6743:9;6739:18;6731:26;;6767:67;6831:1;6820:9;6816:17;6807:6;6767:67;:::i;:::-;6627:214;;;;:::o;6847:329::-;6906:6;6955:2;6943:9;6934:7;6930:23;6926:32;6923:119;;;6961:79;;:::i;:::-;6923:119;7081:1;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7052:117;6847:329;;;;:::o;7182:::-;7241:6;7290:2;7278:9;7269:7;7265:23;7261:32;7258:119;;;7296:79;;:::i;:::-;7258:119;7416:1;7441:53;7486:7;7477:6;7466:9;7462:22;7441:53;:::i;:::-;7431:63;;7387:117;7182:329;;;;:::o;7517:116::-;7587:21;7602:5;7587:21;:::i;:::-;7580:5;7577:32;7567:60;;7623:1;7620;7613:12;7567:60;7517:116;:::o;7639:133::-;7682:5;7720:6;7707:20;7698:29;;7736:30;7760:5;7736:30;:::i;:::-;7639:133;;;;:::o;7778:468::-;7843:6;7851;7900:2;7888:9;7879:7;7875:23;7871:32;7868:119;;;7906:79;;:::i;:::-;7868:119;8026:1;8051:53;8096:7;8087:6;8076:9;8072:22;8051:53;:::i;:::-;8041:63;;7997:117;8153:2;8179:50;8221:7;8212:6;8201:9;8197:22;8179:50;:::i;:::-;8169:60;;8124:115;7778:468;;;;;:::o;8252:323::-;8308:6;8357:2;8345:9;8336:7;8332:23;8328:32;8325:119;;;8363:79;;:::i;:::-;8325:119;8483:1;8508:50;8550:7;8541:6;8530:9;8526:22;8508:50;:::i;:::-;8498:60;;8454:114;8252:323;;;;:::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:182::-;9713:34;9709:1;9701:6;9697:14;9690:58;9573:182;:::o;9761:366::-;9903:3;9924:67;9988:2;9983:3;9924:67;:::i;:::-;9917:74;;10000:93;10089:3;10000:93;:::i;:::-;10118:2;10113:3;10109:12;10102:19;;9761:366;;;:::o;10133:419::-;10299:4;10337:2;10326:9;10322:18;10314:26;;10386:9;10380:4;10376:20;10372:1;10361:9;10357:17;10350:47;10414:131;10540:4;10414:131;:::i;:::-;10406:139;;10133:419;;;:::o;10558:180::-;10606:77;10603:1;10596:88;10703:4;10700:1;10693:15;10727:4;10724:1;10717:15;10744:191;10784:3;10803:20;10821:1;10803:20;:::i;:::-;10798:25;;10837:20;10855:1;10837:20;:::i;:::-;10832:25;;10880:1;10877;10873:9;10866:16;;10901:3;10898:1;10895:10;10892:36;;;10908:18;;:::i;:::-;10892:36;10744:191;;;;:::o;10941:227::-;11081:34;11077:1;11069:6;11065:14;11058:58;11150:10;11145:2;11137:6;11133:15;11126:35;10941:227;:::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:410::-;12011:7;12034:20;12052:1;12034:20;:::i;:::-;12029:25;;12068:20;12086:1;12068:20;:::i;:::-;12063:25;;12123:1;12120;12116:9;12145:30;12163:11;12145:30;:::i;:::-;12134:41;;12324:1;12315:7;12311:15;12308:1;12305:22;12285:1;12278:9;12258:83;12235:139;;12354:18;;:::i;:::-;12235:139;12019:362;11971:410;;;;:::o;12387:180::-;12435:77;12432:1;12425:88;12532:4;12529:1;12522:15;12556:4;12553:1;12546:15;12573:185;12613:1;12630:20;12648:1;12630:20;:::i;:::-;12625:25;;12664:20;12682:1;12664:20;:::i;:::-;12659:25;;12703:1;12693:35;;12708:18;;:::i;:::-;12693:35;12750:1;12747;12743:9;12738:14;;12573:185;;;;:::o;12764:182::-;12904:34;12900:1;12892:6;12888:14;12881:58;12764:182;:::o;12952:366::-;13094:3;13115:67;13179:2;13174:3;13115:67;:::i;:::-;13108:74;;13191:93;13280:3;13191:93;:::i;:::-;13309:2;13304:3;13300:12;13293:19;;12952:366;;;:::o;13324:419::-;13490:4;13528:2;13517:9;13513:18;13505:26;;13577:9;13571:4;13567:20;13563:1;13552:9;13548:17;13541:47;13605:131;13731:4;13605:131;:::i;:::-;13597:139;;13324:419;;;:::o;13749:224::-;13889:34;13885:1;13877:6;13873:14;13866:58;13958:7;13953:2;13945:6;13941:15;13934:32;13749:224;:::o;13979:366::-;14121:3;14142:67;14206:2;14201:3;14142:67;:::i;:::-;14135:74;;14218:93;14307:3;14218:93;:::i;:::-;14336:2;14331:3;14327:12;14320:19;;13979:366;;;:::o;14351:419::-;14517:4;14555:2;14544:9;14540:18;14532:26;;14604:9;14598:4;14594:20;14590:1;14579:9;14575:17;14568:47;14632:131;14758:4;14632:131;:::i;:::-;14624:139;;14351:419;;;:::o;14776:244::-;14916:34;14912:1;14904:6;14900:14;14893:58;14985:27;14980:2;14972:6;14968:15;14961:52;14776:244;:::o;15026:366::-;15168:3;15189:67;15253:2;15248:3;15189:67;:::i;:::-;15182:74;;15265:93;15354:3;15265:93;:::i;:::-;15383:2;15378:3;15374:12;15367:19;;15026:366;;;:::o;15398:419::-;15564:4;15602:2;15591:9;15587:18;15579:26;;15651:9;15645:4;15641:20;15637:1;15626:9;15622:17;15615:47;15679:131;15805:4;15679:131;:::i;:::-;15671:139;;15398:419;;;:::o;15823:224::-;15963:34;15959:1;15951:6;15947:14;15940:58;16032:7;16027:2;16019:6;16015:15;16008:32;15823:224;:::o;16053:366::-;16195:3;16216:67;16280:2;16275:3;16216:67;:::i;:::-;16209:74;;16292:93;16381:3;16292:93;:::i;:::-;16410:2;16405:3;16401:12;16394:19;;16053:366;;;:::o;16425:419::-;16591:4;16629:2;16618:9;16614:18;16606:26;;16678:9;16672:4;16668:20;16664:1;16653:9;16649:17;16642:47;16706:131;16832:4;16706:131;:::i;:::-;16698:139;;16425:419;;;:::o;16850:162::-;16990:14;16986:1;16978:6;16974:14;16967:38;16850:162;:::o;17018:366::-;17160:3;17181:67;17245:2;17240:3;17181:67;:::i;:::-;17174:74;;17257:93;17346:3;17257:93;:::i;:::-;17375:2;17370:3;17366:12;17359:19;;17018:366;;;:::o;17390:419::-;17556:4;17594:2;17583:9;17579:18;17571:26;;17643:9;17637:4;17633:20;17629:1;17618:9;17614:17;17607:47;17671:131;17797:4;17671:131;:::i;:::-;17663:139;;17390:419;;;:::o;17815:170::-;17955:22;17951:1;17943:6;17939:14;17932:46;17815:170;:::o;17991:366::-;18133:3;18154:67;18218:2;18213:3;18154:67;:::i;:::-;18147:74;;18230:93;18319:3;18230:93;:::i;:::-;18348:2;18343:3;18339:12;18332:19;;17991:366;;;:::o;18363:419::-;18529:4;18567:2;18556:9;18552:18;18544:26;;18616:9;18610:4;18606:20;18602:1;18591:9;18587:17;18580:47;18644:131;18770:4;18644:131;:::i;:::-;18636:139;;18363:419;;;:::o;18788:240::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:23;18992:2;18984:6;18980:15;18973:48;18788:240;:::o;19034:366::-;19176:3;19197:67;19261:2;19256:3;19197:67;:::i;:::-;19190:74;;19273:93;19362:3;19273:93;:::i;:::-;19391:2;19386:3;19382:12;19375:19;;19034:366;;;:::o;19406:419::-;19572:4;19610:2;19599:9;19595:18;19587:26;;19659:9;19653:4;19649:20;19645:1;19634:9;19630:17;19623:47;19687:131;19813:4;19687:131;:::i;:::-;19679:139;;19406:419;;;:::o;19831:239::-;19971:34;19967:1;19959:6;19955:14;19948:58;20040:22;20035:2;20027:6;20023:15;20016:47;19831:239;:::o;20076:366::-;20218:3;20239:67;20303:2;20298:3;20239:67;:::i;:::-;20232:74;;20315:93;20404:3;20315:93;:::i;:::-;20433:2;20428:3;20424:12;20417:19;;20076:366;;;:::o;20448:419::-;20614:4;20652:2;20641:9;20637:18;20629:26;;20701:9;20695:4;20691:20;20687:1;20676:9;20672:17;20665:47;20729:131;20855:4;20729:131;:::i;:::-;20721:139;;20448:419;;;:::o;20873:225::-;21013:34;21009:1;21001:6;20997:14;20990:58;21082:8;21077:2;21069:6;21065:15;21058:33;20873:225;:::o;21104:366::-;21246:3;21267:67;21331:2;21326:3;21267:67;:::i;:::-;21260:74;;21343:93;21432:3;21343:93;:::i;:::-;21461:2;21456:3;21452:12;21445:19;;21104:366;;;:::o;21476:419::-;21642:4;21680:2;21669:9;21665:18;21657:26;;21729:9;21723:4;21719:20;21715:1;21704:9;21700:17;21693:47;21757:131;21883:4;21757:131;:::i;:::-;21749:139;;21476:419;;;:::o;21901:223::-;22041:34;22037:1;22029:6;22025:14;22018:58;22110:6;22105:2;22097:6;22093:15;22086:31;21901:223;:::o;22130:366::-;22272:3;22293:67;22357:2;22352:3;22293:67;:::i;:::-;22286:74;;22369:93;22458:3;22369:93;:::i;:::-;22487:2;22482:3;22478:12;22471:19;;22130:366;;;:::o;22502:419::-;22668:4;22706:2;22695:9;22691:18;22683:26;;22755:9;22749:4;22745:20;22741:1;22730:9;22726:17;22719:47;22783:131;22909:4;22783:131;:::i;:::-;22775:139;;22502:419;;;:::o;22927:221::-;23067:34;23063:1;23055:6;23051:14;23044:58;23136:4;23131:2;23123:6;23119:15;23112:29;22927:221;:::o;23154:366::-;23296:3;23317:67;23381:2;23376:3;23317:67;:::i;:::-;23310:74;;23393:93;23482:3;23393:93;:::i;:::-;23511:2;23506:3;23502:12;23495:19;;23154:366;;;:::o;23526:419::-;23692:4;23730:2;23719:9;23715:18;23707:26;;23779:9;23773:4;23769:20;23765:1;23754:9;23750:17;23743:47;23807:131;23933:4;23807:131;:::i;:::-;23799:139;;23526:419;;;:::o;23951:224::-;24091:34;24087:1;24079:6;24075:14;24068:58;24160:7;24155:2;24147:6;24143:15;24136:32;23951:224;:::o;24181:366::-;24323:3;24344:67;24408:2;24403:3;24344:67;:::i;:::-;24337:74;;24420:93;24509:3;24420:93;:::i;:::-;24538:2;24533:3;24529:12;24522:19;;24181:366;;;:::o;24553:419::-;24719:4;24757:2;24746:9;24742:18;24734:26;;24806:9;24800:4;24796:20;24792:1;24781:9;24777:17;24770:47;24834:131;24960:4;24834:131;:::i;:::-;24826:139;;24553:419;;;:::o;24978:222::-;25118:34;25114:1;25106:6;25102:14;25095:58;25187:5;25182:2;25174:6;25170:15;25163:30;24978:222;:::o;25206:366::-;25348:3;25369:67;25433:2;25428:3;25369:67;:::i;:::-;25362:74;;25445:93;25534:3;25445:93;:::i;:::-;25563:2;25558:3;25554:12;25547:19;;25206:366;;;:::o;25578:419::-;25744:4;25782:2;25771:9;25767:18;25759:26;;25831:9;25825:4;25821:20;25817:1;25806:9;25802:17;25795:47;25859:131;25985:4;25859:131;:::i;:::-;25851:139;;25578:419;;;:::o;26003:167::-;26143:19;26139:1;26131:6;26127:14;26120:43;26003:167;:::o;26176:366::-;26318:3;26339:67;26403:2;26398:3;26339:67;:::i;:::-;26332:74;;26415:93;26504:3;26415:93;:::i;:::-;26533:2;26528:3;26524:12;26517:19;;26176:366;;;:::o;26548:419::-;26714:4;26752:2;26741:9;26737:18;26729:26;;26801:9;26795:4;26791:20;26787:1;26776:9;26772:17;26765:47;26829:131;26955:4;26829:131;:::i;:::-;26821:139;;26548:419;;;:::o;26973:165::-;27113:17;27109:1;27101:6;27097:14;27090:41;26973:165;:::o;27144:366::-;27286:3;27307:67;27371:2;27366:3;27307:67;:::i;:::-;27300:74;;27383:93;27472:3;27383:93;:::i;:::-;27501:2;27496:3;27492:12;27485:19;;27144:366;;;:::o;27516:419::-;27682:4;27720:2;27709:9;27705:18;27697:26;;27769:9;27763:4;27759:20;27755:1;27744:9;27740:17;27733:47;27797:131;27923:4;27797:131;:::i;:::-;27789:139;;27516:419;;;:::o;27941:172::-;28081:24;28077:1;28069:6;28065:14;28058:48;27941:172;:::o;28119:366::-;28261:3;28282:67;28346:2;28341:3;28282:67;:::i;:::-;28275:74;;28358:93;28447:3;28358:93;:::i;:::-;28476:2;28471:3;28467:12;28460:19;;28119:366;;;:::o;28491:419::-;28657:4;28695:2;28684:9;28680:18;28672:26;;28744:9;28738:4;28734:20;28730:1;28719:9;28715:17;28708:47;28772:131;28898:4;28772:131;:::i;:::-;28764:139;;28491:419;;;:::o;28916:297::-;29056:34;29052:1;29044:6;29040:14;29033:58;29125:34;29120:2;29112:6;29108:15;29101:59;29194:11;29189:2;29181:6;29177:15;29170:36;28916:297;:::o;29219:366::-;29361:3;29382:67;29446:2;29441:3;29382:67;:::i;:::-;29375:74;;29458:93;29547:3;29458:93;:::i;:::-;29576:2;29571:3;29567:12;29560:19;;29219:366;;;:::o;29591:419::-;29757:4;29795:2;29784:9;29780:18;29772:26;;29844:9;29838:4;29834:20;29830:1;29819:9;29815:17;29808:47;29872:131;29998:4;29872:131;:::i;:::-;29864:139;;29591:419;;;:::o;30016:225::-;30156:34;30152:1;30144:6;30140:14;30133:58;30225:8;30220:2;30212:6;30208:15;30201:33;30016:225;:::o;30247:366::-;30389:3;30410:67;30474:2;30469:3;30410:67;:::i;:::-;30403:74;;30486:93;30575:3;30486:93;:::i;:::-;30604:2;30599:3;30595:12;30588:19;;30247:366;;;:::o;30619:419::-;30785:4;30823:2;30812:9;30808:18;30800:26;;30872:9;30866:4;30862:20;30858:1;30847:9;30843:17;30836:47;30900:131;31026:4;30900:131;:::i;:::-;30892:139;;30619:419;;;:::o;31044:169::-;31184:21;31180:1;31172:6;31168:14;31161:45;31044:169;:::o;31219:366::-;31361:3;31382:67;31446:2;31441:3;31382:67;:::i;:::-;31375:74;;31458:93;31547:3;31458:93;:::i;:::-;31576:2;31571:3;31567:12;31560:19;;31219:366;;;:::o;31591:419::-;31757:4;31795:2;31784:9;31780:18;31772:26;;31844:9;31838:4;31834:20;31830:1;31819:9;31815:17;31808:47;31872:131;31998:4;31872:131;:::i;:::-;31864:139;;31591:419;;;:::o;32016:226::-;32156:34;32152:1;32144:6;32140:14;32133:58;32225:9;32220:2;32212:6;32208:15;32201:34;32016:226;:::o;32248:366::-;32390:3;32411:67;32475:2;32470:3;32411:67;:::i;:::-;32404:74;;32487:93;32576:3;32487:93;:::i;:::-;32605:2;32600:3;32596:12;32589:19;;32248:366;;;:::o;32620:419::-;32786:4;32824:2;32813:9;32809:18;32801:26;;32873:9;32867:4;32863:20;32859:1;32848:9;32844:17;32837:47;32901:131;33027:4;32901:131;:::i;:::-;32893:139;;32620:419;;;:::o;33045:194::-;33085:4;33105:20;33123:1;33105:20;:::i;:::-;33100:25;;33139:20;33157:1;33139:20;:::i;:::-;33134:25;;33183:1;33180;33176:9;33168:17;;33207:1;33201:4;33198:11;33195:37;;;33212:18;;:::i;:::-;33195:37;33045:194;;;;:::o;33245:180::-;33293:77;33290:1;33283:88;33390:4;33387:1;33380:15;33414:4;33411:1;33404:15;33431:180;33479:77;33476:1;33469:88;33576:4;33573:1;33566:15;33600:4;33597:1;33590:15;33617:143;33674:5;33705:6;33699:13;33690:22;;33721:33;33748:5;33721:33;:::i;:::-;33617:143;;;;:::o;33766:351::-;33836:6;33885:2;33873:9;33864:7;33860:23;33856:32;33853:119;;;33891:79;;:::i;:::-;33853:119;34011:1;34036:64;34092:7;34083:6;34072:9;34068:22;34036:64;:::i;:::-;34026:74;;33982:128;33766:351;;;;:::o;34123:85::-;34168:7;34197:5;34186:16;;34123:85;;;:::o;34214:158::-;34272:9;34305:61;34323:42;34332:32;34358:5;34332:32;:::i;:::-;34323:42;:::i;:::-;34305:61;:::i;:::-;34292:74;;34214:158;;;:::o;34378:147::-;34473:45;34512:5;34473:45;:::i;:::-;34468:3;34461:58;34378:147;;:::o;34531:114::-;34598:6;34632:5;34626:12;34616:22;;34531:114;;;:::o;34651:184::-;34750:11;34784:6;34779:3;34772:19;34824:4;34819:3;34815:14;34800:29;;34651:184;;;;:::o;34841:132::-;34908:4;34931:3;34923:11;;34961:4;34956:3;34952:14;34944:22;;34841:132;;;:::o;34979:108::-;35056:24;35074:5;35056:24;:::i;:::-;35051:3;35044:37;34979:108;;:::o;35093:179::-;35162:10;35183:46;35225:3;35217:6;35183:46;:::i;:::-;35261:4;35256:3;35252:14;35238:28;;35093:179;;;;:::o;35278:113::-;35348:4;35380;35375:3;35371:14;35363:22;;35278:113;;;:::o;35427:732::-;35546:3;35575:54;35623:5;35575:54;:::i;:::-;35645:86;35724:6;35719:3;35645:86;:::i;:::-;35638:93;;35755:56;35805:5;35755:56;:::i;:::-;35834:7;35865:1;35850:284;35875:6;35872:1;35869:13;35850:284;;;35951:6;35945:13;35978:63;36037:3;36022:13;35978:63;:::i;:::-;35971:70;;36064:60;36117:6;36064:60;:::i;:::-;36054:70;;35910:224;35897:1;35894;35890:9;35885:14;;35850:284;;;35854:14;36150:3;36143:10;;35551:608;;;35427:732;;;;:::o;36165:831::-;36428:4;36466:3;36455:9;36451:19;36443:27;;36480:71;36548:1;36537:9;36533:17;36524:6;36480:71;:::i;:::-;36561:80;36637:2;36626:9;36622:18;36613:6;36561:80;:::i;:::-;36688:9;36682:4;36678:20;36673:2;36662:9;36658:18;36651:48;36716:108;36819:4;36810:6;36716:108;:::i;:::-;36708:116;;36834:72;36902:2;36891:9;36887:18;36878:6;36834:72;:::i;:::-;36916:73;36984:3;36973:9;36969:19;36960:6;36916:73;:::i;:::-;36165:831;;;;;;;;:::o;37002:225::-;37142:34;37138:1;37130:6;37126:14;37119:58;37211:8;37206:2;37198:6;37194:15;37187:33;37002:225;:::o;37233:366::-;37375:3;37396:67;37460:2;37455:3;37396:67;:::i;:::-;37389:74;;37472:93;37561:3;37472:93;:::i;:::-;37590:2;37585:3;37581:12;37574:19;;37233:366;;;:::o;37605:419::-;37771:4;37809:2;37798:9;37794:18;37786:26;;37858:9;37852:4;37848:20;37844:1;37833:9;37829:17;37822:47;37886:131;38012:4;37886:131;:::i;:::-;37878:139;;37605:419;;;:::o;38030:147::-;38131:11;38168:3;38153:18;;38030:147;;;;:::o;38183:114::-;;:::o;38303:398::-;38462:3;38483:83;38564:1;38559:3;38483:83;:::i;:::-;38476:90;;38575:93;38664:3;38575:93;:::i;:::-;38693:1;38688:3;38684:11;38677:18;;38303:398;;;:::o;38707:379::-;38891:3;38913:147;39056:3;38913:147;:::i;:::-;38906:154;;39077:3;39070:10;;38707:379;;;:::o
Swarm Source
ipfs://625d332b86e90f70653175613693457e8c5c390256774a6cbadf83e0fb2a1468
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.