Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
DeFi
Overview
Max Total Supply
100,000,000 YOGI
Holders
238 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
215,449.512933709 YOGIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
YOGI
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-31 */ /** *Submitted for verification at Etherscan.io on 2023-03-26 */ // SPDX-License-Identifier:MIT pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 S_IERC20 { function transfer(address recipient, uint256 amount) external; } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any _account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface ISushiSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function createPair(address tokenA, address tokenB) external returns (address pair); } interface ISushiSwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface ISushiSwapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IREWARD { function setShare(address shareholder, uint256 amount) external; function deposit() external payable; } contract YOGI is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "YOGI"; // token name string private _symbol = "YOGI"; // token ticker uint8 private _decimals = 9; // token decimals address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; uint256 _buyLiquidityFee = 20; uint256 _buyRewardFee = 30; uint256 _sellLiquidityFee = 20; uint256 _sellRewardFee = 30; uint256 public totalBuyFee; uint256 public totalSellFee; address liquidityReciever; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isDividendExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isBot; uint256 private _totalSupply = 100_000_000 * 10**_decimals; uint256 feedenominator = 1000; uint256 public _maxTxAmount = _totalSupply.mul(5).div(1000); //0.5% uint256 public _walletMax = _totalSupply.mul(5).div(1000); //0.5% uint256 public swapThreshold = 20_000 * 10**_decimals; bool public transferFeeEnabled = true; uint256 public initalTransferFee = 99; // 99% max fees limit on inital transfer uint256 public launchedAt; uint256 public snipingTime = 50 seconds; //1 min snipping time bool public trading; bool public swapEnabled = true; bool public EnableTxLimit = true; bool public checkWalletLimit = true; mapping (address => bool) public isYogiWL; modifier onlyGuard() { require(msg.sender == liquidityReciever,"Error: Guarded!"); _; } IREWARD public rewardDividend; ISushiSwapRouter public sushiRouter; address public sushiPair; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); constructor() { //Shiba Swap ISushiSwapRouter _dexRouter = ISushiSwapRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); sushiPair = ISushiSwapFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); sushiRouter = _dexRouter; _allowances[address(this)][address(sushiRouter)] = ~uint256(0); liquidityReciever = msg.sender; isExcludedFromFee[address(this)] = true; isExcludedFromFee[msg.sender] = true; isExcludedFromFee[address(sushiRouter)] = true; isDividendExempt[sushiPair] = true; isDividendExempt[address(this)] = true; isDividendExempt[deadAddress] = true; isDividendExempt[zeroAddress] = true; isDividendExempt[address(sushiRouter)] = true; isYogiWL[address(msg.sender)] = true; isYogiWL[address(this)] = true; isYogiWL[address(sushiRouter)] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(sushiPair)] = true; isWalletLimitExempt[address(sushiRouter)] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[deadAddress] = true; isWalletLimitExempt[zeroAddress] = true; isTxLimitExempt[deadAddress] = true; isTxLimitExempt[zeroAddress] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[address(sushiRouter)] = true; isMarketPair[address(sushiPair)] = true; _allowances[address(this)][address(sushiRouter)] = ~uint256(0); _allowances[address(this)][address(sushiPair)] = ~uint256(0); totalBuyFee = _buyLiquidityFee.add(_buyRewardFee); totalSellFee = _sellLiquidityFee.add(_sellRewardFee); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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); } //to recieve ETH from Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!isBot[sender], "ERC20: Bot detected"); require(!isBot[msg.sender], "ERC20: Bot detected"); require(!isBot[tx.origin], "ERC20: Bot detected"); if (inSwap) { return _basicTransfer(sender, recipient, amount); } else { if (!isYogiWL[sender] && !isYogiWL[recipient]) { require(trading, "ERC20: trading not enable yet"); if ( block.timestamp < launchedAt + snipingTime && sender != address(sushiRouter) ) { if (sushiPair == sender) { isBot[recipient] = true; } else if (sushiPair == recipient) { isBot[sender] = true; } } } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold; if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) { swapBack(contractTokenBalance); } if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!"); } _balances[recipient] = _balances[recipient].add(finalAmount); if(!isDividendExempt[sender]){ try rewardDividend.setShare(sender, balanceOf(sender)) {} catch {} } if(!isDividendExempt[recipient]){ try rewardDividend.setShare(recipient, balanceOf(recipient)) {} catch {} } emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) { if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { return true; } else if (isMarketPair[sender] || isMarketPair[recipient]) { return false; } else { return false; } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint feeAmount; unchecked { if(isMarketPair[sender]) { //buy feeAmount = amount.mul(totalBuyFee).div(feedenominator); } else if(isMarketPair[recipient]) { //sell feeAmount = amount.mul(totalSellFee).div(feedenominator); } else { if(transferFeeEnabled) { feeAmount = amount.mul(initalTransferFee).div(100); } } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } } function swapBack(uint contractBalance) internal swapping { uint256 totalShares = totalBuyFee.add(totalSellFee); if(totalShares == 0) return; uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee); // uint256 _RewardShare = _buyRewardFee.add(_sellRewardFee); uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2); uint256 tokensForSwap = contractBalance.sub(tokensForLP); uint256 initialBalance = address(this).balance; swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance.sub(initialBalance); uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHReward = amountReceived.sub(amountETHLiquidity); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); if(amountETHReward > 0) { try rewardDividend.deposit { value: amountETHReward } () {} catch {} } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = sushiRouter.WETH(); _approve(address(this), address(sushiRouter), tokenAmount); // make the swap sushiRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(sushiRouter), tokenAmount); // add the liquidity sushiRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityReciever, block.timestamp ); } function startTrading() external onlyOwner { require(!trading, "ERC20: Already Enabled"); trading = true; launchedAt = block.timestamp; } //To Rescue Stucked Balance function rescueFunds() external onlyGuard { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os,"Transaction Failed!!"); } //To Rescue Stucked Tokens function rescueTokens(S_IERC20 adr,address recipient,uint amount) external onlyGuard { adr.transfer(recipient,amount); } function updateSetting(address[] calldata _adr, bool _status) external onlyOwner { for(uint i = 0; i < _adr.length; i++){ isYogiWL[_adr[i]] = _status; } } function addOrRemoveBots(address[] calldata accounts, bool value) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isBot[accounts[i]] = value; } } function disableTransferFee(bool _status) external onlyOwner { transferFeeEnabled = _status; } function setItransferFee(uint _newFee) external onlyOwner { initalTransferFee = _newFee; } function setBuyFee(uint _newLiq, uint _newReward) external onlyOwner { _buyLiquidityFee = _newLiq; _buyRewardFee = _newReward; totalBuyFee = _buyLiquidityFee.add(_buyRewardFee); } function setSellFee(uint _newLiq, uint _newReward) external onlyOwner { _sellLiquidityFee = _newLiq; _sellRewardFee = _newReward; totalSellFee = _sellLiquidityFee.add(_sellRewardFee); } function enableTxLimit(bool _status) external onlyOwner { EnableTxLimit = _status; } function enableWalletLimit(bool _status) external onlyOwner { checkWalletLimit = _status; } function excludeFromFee(address _adr,bool _status) external onlyOwner { isExcludedFromFee[_adr] = _status; } function excludeWalletLimit(address _adr,bool _status) external onlyOwner { isWalletLimitExempt[_adr] = _status; } function excludeTxLimit(address _adr,bool _status) external onlyOwner { isTxLimitExempt[_adr] = _status; } function setMaxWalletLimit(uint256 newLimit) external onlyOwner() { _walletMax = newLimit; } function setTxLimit(uint256 newLimit) external onlyOwner() { _maxTxAmount = newLimit; } function setLiquidityWallet(address _newWallet) external onlyOwner { liquidityReciever = _newWallet; } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { if(exempt) { rewardDividend.setShare(holder,0); } else { rewardDividend.setShare(holder,balanceOf(holder)); } isDividendExempt[holder] = exempt; } function setRewardDividend(address _dividend) external onlyGuard { rewardDividend = IREWARD(_dividend); } function setMarketPair(address _pair, bool _status) external onlyOwner { isMarketPair[_pair] = _status; if(_status) { isDividendExempt[_pair] = _status; isWalletLimitExempt[_pair] = _status; } } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setManualRouter(address _router) external onlyOwner { sushiRouter = ISushiSwapRouter(_router); } function setManualPair(address _pair) external onlyOwner { sushiPair = _pair; } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"addOrRemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"disableTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initalTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isYogiWL","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract S_IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDividend","outputs":[{"internalType":"contract IREWARD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiq","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"setItransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dividend","type":"address"}],"name":"setRewardDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiq","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sushiPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushiRouter","outputs":[{"internalType":"contract ISushiSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFeeEnabled","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":[{"internalType":"address[]","name":"_adr","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600481526020017f594f474900000000000000000000000000000000000000000000000000000000815250600190816200004a9190620015a7565b506040518060400160405280600481526020017f594f47490000000000000000000000000000000000000000000000000000000081525060029081620000919190620015a7565b506009600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506014600455601e6005556014600655601e600755600360009054906101000a900460ff16600a6200014991906200181e565b6305f5e1006200015a91906200186f565b6013556103e8601455620001916103e8620001826005601354620010c160201b90919060201c565b6200114460201b90919060201c565b601555620001c26103e8620001b36005601354620010c160201b90919060201c565b6200114460201b90919060201c565b601655600360009054906101000a900460ff16600a620001e391906200181e565b614e20620001f291906200186f565b6017556001601860006101000a81548160ff02191690831515021790555060636019556032601b556001601c60016101000a81548160ff0219169083151502179055506001601c60026101000a81548160ff0219169083151502179055506001601c60036101000a81548160ff0219169083151502179055503480156200027857600080fd5b50620002996200028d6200119660201b60201c565b6200119e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000324919062001924565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062001924565b6040518363ffffffff1660e01b8152600401620003d192919062001967565b6020604051808303816000875af1158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000417919062001924565b602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000fe56005546004546200126260201b90919060201c565b600881905550620010046007546006546200126260201b90919060201c565b600981905550601354600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601354604051620010b29190620019a5565b60405180910390a35062001c21565b6000808303620010d557600090506200113e565b60008284620010e591906200186f565b9050828482620010f69190620019f1565b1462001139576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011309062001ab0565b60405180910390fd5b809150505b92915050565b60006200118e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620012c560201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080828462001273919062001ad2565b905083811015620012bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012b29062001b5d565b60405180910390fd5b8091505092915050565b600080831182906200130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001306919062001bfd565b60405180910390fd5b5060008385620013209190620019f1565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013af57607f821691505b602082108103620013c557620013c462001367565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200142f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620013f0565b6200143b8683620013f0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001488620014826200147c8462001453565b6200145d565b62001453565b9050919050565b6000819050919050565b620014a48362001467565b620014bc620014b3826200148f565b848454620013fd565b825550505050565b600090565b620014d3620014c4565b620014e081848462001499565b505050565b5b818110156200150857620014fc600082620014c9565b600181019050620014e6565b5050565b601f82111562001557576200152181620013cb565b6200152c84620013e0565b810160208510156200153c578190505b620015546200154b85620013e0565b830182620014e5565b50505b505050565b600082821c905092915050565b60006200157c600019846008026200155c565b1980831691505092915050565b600062001597838362001569565b9150826002028217905092915050565b620015b2826200132d565b67ffffffffffffffff811115620015ce57620015cd62001338565b5b620015da825462001396565b620015e78282856200150c565b600060209050601f8311600181146200161f57600084156200160a578287015190505b62001616858262001589565b86555062001686565b601f1984166200162f86620013cb565b60005b82811015620016595784890151825560018201915060208501945060208101905062001632565b8683101562001679578489015162001675601f89168262001569565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200171c57808604811115620016f457620016f36200168e565b5b6001851615620017045780820291505b80810290506200171485620016bd565b9450620016d4565b94509492505050565b6000826200173757600190506200180a565b816200174757600090506200180a565b81600181146200176057600281146200176b57620017a1565b60019150506200180a565b60ff84111562001780576200177f6200168e565b5b8360020a9150848211156200179a57620017996200168e565b5b506200180a565b5060208310610133831016604e8410600b8410161715620017db5782820a905083811115620017d557620017d46200168e565b5b6200180a565b620017ea8484846001620016ca565b925090508184048111156200180457620018036200168e565b5b81810290505b9392505050565b600060ff82169050919050565b60006200182b8262001453565b9150620018388362001811565b9250620018677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001725565b905092915050565b60006200187c8262001453565b9150620018898362001453565b9250828202620018998162001453565b91508282048414831517620018b357620018b26200168e565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620018ec82620018bf565b9050919050565b620018fe81620018df565b81146200190a57600080fd5b50565b6000815190506200191e81620018f3565b92915050565b6000602082840312156200193d576200193c620018ba565b5b60006200194d848285016200190d565b91505092915050565b6200196181620018df565b82525050565b60006040820190506200197e600083018562001956565b6200198d602083018462001956565b9392505050565b6200199f8162001453565b82525050565b6000602082019050620019bc600083018462001994565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620019fe8262001453565b915062001a0b8362001453565b92508262001a1e5762001a1d620019c2565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062001a9860218362001a29565b915062001aa58262001a3a565b604082019050919050565b6000602082019050818103600083015262001acb8162001a89565b9050919050565b600062001adf8262001453565b915062001aec8362001453565b925082820190508082111562001b075762001b066200168e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001b45601b8362001a29565b915062001b528262001b0d565b602082019050919050565b6000602082019050818103600083015262001b788162001b36565b9050919050565b60005b8381101562001b9f57808201518184015260208101905062001b82565b60008484015250505050565b6000601f19601f8301169050919050565b600062001bc9826200132d565b62001bd5818562001a29565b935062001be781856020860162001b7f565b62001bf28162001bab565b840191505092915050565b6000602082019050818103600083015262001c19818462001bbc565b905092915050565b60805160a051615c2762001c5560003960008181610f8b01526113ae0152600081816111d201526113da0152615c276000f3fe6080604052600436106103bc5760003560e01c80637d99c66d116101f2578063cea9d26f1161010d578063ec44acf2116100a0578063f71b9bbf1161006f578063f71b9bbf14610e4b578063f872858a14610e74578063f8905a0b14610e9f578063fb0ecfa414610ec8576103c3565b8063ec44acf214610da5578063ee828db314610dd0578063f2fde38b14610df9578063f708a64f14610e22576103c3565b8063df8408fe116100dc578063df8408fe14610d0f578063e6b2603b14610d38578063e7d8320e14610d4f578063e7f1bfcb14610d7a576103c3565b8063cea9d26f14610c57578063d27e0e6a14610c80578063dd62ed3e14610ca9578063df20fd4914610ce6576103c3565b80639d9241ec11610185578063ae85ade611610154578063ae85ade614610b9d578063bf56b37114610bc6578063c16dd4a414610bf1578063c867d60b14610c1a576103c3565b80639d9241ec14610acf578063a457c2d714610afa578063a6d3472a14610b37578063a9059cbb14610b60576103c3565b80638da5cb5b116101c15780638da5cb5b14610a1357806395d89b4114610a3e57806395fc8fdf14610a695780639673b5e314610a92576103c3565b80637d99c66d14610955578063807c2d9c146109805780638b42507f146109ab5780638ca39f5e146109e8576103c3565b80634355855a116102e2578063672898561161027557806370a082311161024457806370a08231146108ad578063715018a6146108ea578063728d41c9146109015780637d1db4a51461092a576103c3565b806367289856146108035780636ac9a8701461082e5780636d13582c146108575780636ddd171314610882576103c3565b806359fac517116102b157806359fac5171461075d5780635c85974f146107865780635e42358c146107af578063651a8987146107da576103c3565b80634355855a1461068f5780634974d88f146106cc5780635342acb4146106f557806359b107b914610732576103c3565b806327c8f8351161035a578063313ce56711610329578063313ce567146105ad57806339509351146105d85780633bbac579146106155780633ecad27114610652576103c3565b806327c8f83514610517578063293230b814610542578063296f0a0c146105595780632b112e4914610582576103c3565b8063095ea7b311610396578063095ea7b31461044957806310a60f021461048657806318160ddd146104af57806323b872dd146104da576103c3565b80630445b667146103c857806306fdde03146103f35780630930907b1461041e576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef1565b6040516103ea9190614805565b60405180910390f35b3480156103ff57600080fd5b50610408610ef7565b60405161041591906148b0565b60405180910390f35b34801561042a57600080fd5b50610433610f89565b6040516104409190614913565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614990565b610fad565b60405161047d91906149eb565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190614a97565b610fcb565b005b3480156104bb57600080fd5b506104c46110ec565b6040516104d19190614805565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614af7565b6110f6565b60405161050e91906149eb565b60405180910390f35b34801561052357600080fd5b5061052c6111d0565b6040516105399190614913565b60405180910390f35b34801561054e57600080fd5b506105576111f4565b005b34801561056557600080fd5b50610580600480360381019061057b9190614b4a565b6112e4565b005b34801561058e57600080fd5b506105976113a4565b6040516105a49190614805565b60405180910390f35b3480156105b957600080fd5b506105c2611422565b6040516105cf9190614b93565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190614990565b611439565b60405161060c91906149eb565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190614b4a565b6114ec565b60405161064991906149eb565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614b4a565b61150c565b60405161068691906149eb565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190614b4a565b61152c565b6040516106c391906149eb565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190614bae565b61154c565b005b34801561070157600080fd5b5061071c60048036038101906107179190614b4a565b6115e5565b60405161072991906149eb565b60405180910390f35b34801561073e57600080fd5b50610747611605565b6040516107549190614805565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190614b4a565b61160b565b005b34801561079257600080fd5b506107ad60048036038101906107a89190614bdb565b6116cb565b005b3480156107bb57600080fd5b506107c4611751565b6040516107d191906149eb565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc9190614c08565b611764565b005b34801561080f57600080fd5b5061081861183b565b6040516108259190614913565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614c48565b611861565b005b34801561086357600080fd5b5061086c61190c565b6040516108799190614ce7565b60405180910390f35b34801561088e57600080fd5b50610897611932565b6040516108a491906149eb565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190614b4a565b611945565b6040516108e19190614805565b60405180910390f35b3480156108f657600080fd5b506108ff61198e565b005b34801561090d57600080fd5b5061092860048036038101906109239190614bdb565b611a16565b005b34801561093657600080fd5b5061093f611a9c565b60405161094c9190614805565b60405180910390f35b34801561096157600080fd5b5061096a611aa2565b6040516109779190614805565b60405180910390f35b34801561098c57600080fd5b50610995611aa8565b6040516109a29190614805565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614b4a565b611aae565b6040516109df91906149eb565b60405180910390f35b3480156109f457600080fd5b506109fd611ace565b604051610a0a9190614d23565b60405180910390f35b348015610a1f57600080fd5b50610a28611af4565b604051610a359190614913565b60405180910390f35b348015610a4a57600080fd5b50610a53611b1d565b604051610a6091906148b0565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a97565b611baf565b005b348015610a9e57600080fd5b50610ab96004803603810190610ab49190614b4a565b611cd0565b604051610ac691906149eb565b60405180910390f35b348015610adb57600080fd5b50610ae4611cf0565b604051610af19190614805565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190614990565b611cf6565b604051610b2e91906149eb565b60405180910390f35b348015610b4357600080fd5b50610b5e6004803603810190610b599190614b4a565b611dc3565b005b348015610b6c57600080fd5b50610b876004803603810190610b829190614990565b611e97565b604051610b9491906149eb565b60405180910390f35b348015610ba957600080fd5b50610bc46004803603810190610bbf9190614c08565b611eb6565b005b348015610bd257600080fd5b50610bdb611f8d565b604051610be89190614805565b60405180910390f35b348015610bfd57600080fd5b50610c186004803603810190610c139190614c08565b611f93565b005b348015610c2657600080fd5b50610c416004803603810190610c3c9190614b4a565b61211f565b604051610c4e91906149eb565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c799190614d7c565b61213f565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca29190614bae565b612241565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb9190614dcf565b6122da565b604051610cdd9190614805565b60405180910390f35b348015610cf257600080fd5b50610d0d6004803603810190610d089190614e0f565b612361565b005b348015610d1b57600080fd5b50610d366004803603810190610d319190614c08565b612402565b005b348015610d4457600080fd5b50610d4d6124d9565b005b348015610d5b57600080fd5b50610d64612618565b604051610d719190614805565b60405180910390f35b348015610d8657600080fd5b50610d8f61261e565b604051610d9c91906149eb565b60405180910390f35b348015610db157600080fd5b50610dba612631565b604051610dc791906149eb565b60405180910390f35b348015610ddc57600080fd5b50610df76004803603810190610df29190614bae565b612644565b005b348015610e0557600080fd5b50610e206004803603810190610e1b9190614b4a565b6126dd565b005b348015610e2e57600080fd5b50610e496004803603810190610e449190614c08565b6127d4565b005b348015610e5757600080fd5b50610e726004803603810190610e6d9190614b4a565b6129de565b005b348015610e8057600080fd5b50610e89612a9e565b604051610e9691906149eb565b60405180910390f35b348015610eab57600080fd5b50610ec66004803603810190610ec19190614bdb565b612ab1565b005b348015610ed457600080fd5b50610eef6004803603810190610eea9190614c48565b612b37565b005b60175481565b606060018054610f0690614e7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290614e7e565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610fc1610fba612be2565b8484612bea565b6001905092915050565b610fd3612be2565b73ffffffffffffffffffffffffffffffffffffffff16610ff1611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e90614efb565b60405180910390fd5b60005b838390508110156110e657816012600086868581811061106d5761106c614f1b565b5b90506020020160208101906110829190614b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110de90614f79565b91505061104a565b50505050565b6000601354905090565b6000611103848484612db3565b506111c584611110612be2565b6111c085604051806060016040528060288152602001615ba560289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611176612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b612bea565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111fc612be2565b73ffffffffffffffffffffffffffffffffffffffff1661121a611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790614efb565b60405180910390fd5b601c60009054906101000a900460ff16156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061500d565b60405180910390fd5b6001601c60006101000a81548160ff02191690831515021790555042601a81905550565b6112ec612be2565b73ffffffffffffffffffffffffffffffffffffffff1661130a611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790614efb565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061141d6113d27f0000000000000000000000000000000000000000000000000000000000000000611945565b61140f6113fe7f0000000000000000000000000000000000000000000000000000000000000000611945565b601354613a1290919063ffffffff16565b613a1290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006114e2611446612be2565b846114dd85600c6000611457612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b612bea565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b611554612be2565b73ffffffffffffffffffffffffffffffffffffffff16611572611af4565b73ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90614efb565b60405180910390fd5b80601c60036101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60085481565b611613612be2565b73ffffffffffffffffffffffffffffffffffffffff16611631611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614efb565b60405180910390fd5b80601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d3612be2565b73ffffffffffffffffffffffffffffffffffffffff166116f1611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90614efb565b60405180910390fd5b8060158190555050565b601c60029054906101000a900460ff1681565b61176c612be2565b73ffffffffffffffffffffffffffffffffffffffff1661178a611af4565b73ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790614efb565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611869612be2565b73ffffffffffffffffffffffffffffffffffffffff16611887611af4565b73ffffffffffffffffffffffffffffffffffffffff16146118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490614efb565b60405180910390fd5b8160068190555080600781905550611902600754600654613a5c90919063ffffffff16565b6009819055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60019054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612be2565b73ffffffffffffffffffffffffffffffffffffffff166119b4611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190614efb565b60405180910390fd5b611a146000613aba565b565b611a1e612be2565b73ffffffffffffffffffffffffffffffffffffffff16611a3c611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614efb565b60405180910390fd5b8060168190555050565b60155481565b601b5481565b60165481565b60116020528060005260406000206000915054906101000a900460ff1681565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611b2c90614e7e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5890614e7e565b8015611ba55780601f10611b7a57610100808354040283529160200191611ba5565b820191906000526020600020905b815481529060010190602001808311611b8857829003601f168201915b5050505050905090565b611bb7612be2565b73ffffffffffffffffffffffffffffffffffffffff16611bd5611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290614efb565b60405180910390fd5b60005b83839050811015611cca5781601d6000868685818110611c5157611c50614f1b565b5b9050602002016020810190611c669190614b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611cc290614f79565b915050611c2e565b50505050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000611db9611d03612be2565b84611db485604051806060016040528060258152602001615bcd60259139600c6000611d2d612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b612bea565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a90615079565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611eab611ea4612be2565b8484612db3565b506001905092915050565b611ebe612be2565b73ffffffffffffffffffffffffffffffffffffffff16611edc611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990614efb565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a5481565b611f9b612be2565b73ffffffffffffffffffffffffffffffffffffffff16611fb9611af4565b73ffffffffffffffffffffffffffffffffffffffff161461200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200690614efb565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561211b5780601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690615079565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161220a929190615099565b600060405180830381600087803b15801561222457600080fd5b505af1158015612238573d6000803e3d6000fd5b50505050505050565b612249612be2565b73ffffffffffffffffffffffffffffffffffffffff16612267611af4565b73ffffffffffffffffffffffffffffffffffffffff16146122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490614efb565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612369612be2565b73ffffffffffffffffffffffffffffffffffffffff16612387611af4565b73ffffffffffffffffffffffffffffffffffffffff16146123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490614efb565b60405180910390fd5b81601c60016101000a81548160ff021916908315150217905550806017819055505050565b61240a612be2565b73ffffffffffffffffffffffffffffffffffffffff16612428611af4565b73ffffffffffffffffffffffffffffffffffffffff161461247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590614efb565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090615079565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161258f906150f3565b60006040518083038185875af1925050503d80600081146125cc576040519150601f19603f3d011682016040523d82523d6000602084013e6125d1565b606091505b5050905080612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90615154565b60405180910390fd5b50565b60195481565b601860009054906101000a900460ff1681565b601c60009054906101000a900460ff1681565b61264c612be2565b73ffffffffffffffffffffffffffffffffffffffff1661266a611af4565b73ffffffffffffffffffffffffffffffffffffffff16146126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614efb565b60405180910390fd5b80601c60026101000a81548160ff02191690831515021790555050565b6126e5612be2565b73ffffffffffffffffffffffffffffffffffffffff16612703611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275090614efb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf906151e6565b60405180910390fd5b6127d181613aba565b50565b6127dc612be2565b73ffffffffffffffffffffffffffffffffffffffff166127fa611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284790614efb565b60405180910390fd5b80156128eb57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016128b4929190615241565b600060405180830381600087803b1580156128ce57600080fd5b505af11580156128e2573d6000803e3d6000fd5b50505050612983565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968361293385611945565b6040518363ffffffff1660e01b8152600401612950929190615099565b600060405180830381600087803b15801561296a57600080fd5b505af115801561297e573d6000803e3d6000fd5b505050505b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129e6612be2565b73ffffffffffffffffffffffffffffffffffffffff16612a04611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5190614efb565b60405180910390fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60039054906101000a900460ff1681565b612ab9612be2565b73ffffffffffffffffffffffffffffffffffffffff16612ad7611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2490614efb565b60405180910390fd5b8060198190555050565b612b3f612be2565b73ffffffffffffffffffffffffffffffffffffffff16612b5d611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614efb565b60405180910390fd5b8160048190555080600581905550612bd8600554600454613a5c90919063ffffffff16565b6008819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c50906152dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbf9061536e565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612da69190614805565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a90615400565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8990615492565b60405180910390fd5b60008211612ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecc90615524565b60405180910390fd5b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5990615590565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690615590565b60405180910390fd5b601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561307c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307390615590565b60405180910390fd5b602060149054906101000a900460ff16156130a35761309c848484613b7e565b90506139a7565b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131475750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336f57601c60009054906101000a900460ff1661319b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613192906155fc565b60405180910390fd5b601b54601a546131ab919061561c565b421080156132075750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561336e578373ffffffffffffffffffffffffffffffffffffffff16602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132be576001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061336d565b8273ffffffffffffffffffffffffffffffffffffffff16602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361336c576001601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600061337a30611945565b9050600060175482101590508080156133a05750602060149054906101000a900460ff16155b80156133f65750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561340e5750601c60019054906101000a900460ff165b1561341d5761341c82613d51565b5b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c15750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d95750601c60029054906101000a900460ff165b1561352457601554841115613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a906156c2565b60405180910390fd5b5b6135ad846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006135fc8787613f74565b6136105761360b8787876140df565b613612565b845b9050601c60039054906101000a900460ff16801561367a5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136df5760165461369d8261368f89611945565b613a5c90919063ffffffff16565b11156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d59061572e565b60405180910390fd5b5b61373181600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661385757601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968861380d8a611945565b6040518363ffffffff1660e01b815260040161382a929190615099565b600060405180830381600087803b15801561384457600080fd5b505af1925050508015613855575060015b505b601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661393a57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96876138f089611945565b6040518363ffffffff1660e01b815260040161390d929190615099565b600060405180830381600087803b15801561392757600080fd5b505af1925050508015613938575060015b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139979190614805565b60405180910390a3600193505050505b9392505050565b60008383111582906139f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ed91906148b0565b60405180910390fd5b5060008385613a05919061574e565b9050809150509392505050565b6000613a5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139ae565b905092915050565b6000808284613a6b919061561c565b905083811015613ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa7906157ce565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000613c09826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9e82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d3e9190614805565b60405180910390a3600190509392505050565b6001602060146101000a81548160ff0219169083151502179055506000613d85600954600854613a5c90919063ffffffff16565b905060008103613d955750613f56565b6000613dae600654600454613a5c90919063ffffffff16565b90506000613dea6002613ddc85613dce868961434990919063ffffffff16565b6143c390919063ffffffff16565b6143c390919063ffffffff16565b90506000613e018286613a1290919063ffffffff16565b90506000479050613e118261440d565b6000613e268247613a1290919063ffffffff16565b90506000613e50613e416002886143c390919063ffffffff16565b88613a1290919063ffffffff16565b90506000613e8c6002613e7e84613e708b8861434990919063ffffffff16565b6143c390919063ffffffff16565b6143c390919063ffffffff16565b90506000613ea38285613a1290919063ffffffff16565b9050600082118015613eb55750600087115b15613ec557613ec48783614689565b5b6000811115613f4c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f3857600080fd5b505af193505050508015613f4a575060015b505b5050505050505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140175750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561402557600190506140d9565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140c65750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140d457600090506140d9565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141645761415d60145461414f6008548661434990919063ffffffff16565b6143c390919063ffffffff16565b9050614228565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141e6576141df6014546141d16009548661434990919063ffffffff16565b6143c390919063ffffffff16565b9050614227565b601860009054906101000a900460ff16156142265761422360646142156019548661434990919063ffffffff16565b6143c390919063ffffffff16565b90505b5b5b600081111561432c5761428381600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143239190614805565b60405180910390a35b61433f8184613a1290919063ffffffff16565b9150509392505050565b600080830361435b57600090506143bd565b6000828461436991906157ee565b9050828482614378919061585f565b146143b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143af90615902565b60405180910390fd5b809150505b92915050565b600061440583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614789565b905092915050565b6000600267ffffffffffffffff81111561442a57614429615922565b5b6040519080825280602002602001820160405280156144585781602001602082028036833780820191505090505b50905030816000815181106144705761446f614f1b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453b9190615966565b8160018151811061454f5761454e614f1b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145b630601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bea565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161461a959493929190615a51565b600060405180830381600087803b15801561463457600080fd5b505af1158015614648573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161467d929190615aab565b60405180910390a15050565b6146b630601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bea565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161473f96959493929190615adb565b60606040518083038185885af115801561475d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147829190615b51565b5050505050565b600080831182906147d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147c791906148b0565b60405180910390fd5b50600083856147df919061585f565b9050809150509392505050565b6000819050919050565b6147ff816147ec565b82525050565b600060208201905061481a60008301846147f6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561485a57808201518184015260208101905061483f565b60008484015250505050565b6000601f19601f8301169050919050565b600061488282614820565b61488c818561482b565b935061489c81856020860161483c565b6148a581614866565b840191505092915050565b600060208201905081810360008301526148ca8184614877565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006148fd826148d2565b9050919050565b61490d816148f2565b82525050565b60006020820190506149286000830184614904565b92915050565b600080fd5b600080fd5b614941816148f2565b811461494c57600080fd5b50565b60008135905061495e81614938565b92915050565b61496d816147ec565b811461497857600080fd5b50565b60008135905061498a81614964565b92915050565b600080604083850312156149a7576149a661492e565b5b60006149b58582860161494f565b92505060206149c68582860161497b565b9150509250929050565b60008115159050919050565b6149e5816149d0565b82525050565b6000602082019050614a0060008301846149dc565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a2b57614a2a614a06565b5b8235905067ffffffffffffffff811115614a4857614a47614a0b565b5b602083019150836020820283011115614a6457614a63614a10565b5b9250929050565b614a74816149d0565b8114614a7f57600080fd5b50565b600081359050614a9181614a6b565b92915050565b600080600060408486031215614ab057614aaf61492e565b5b600084013567ffffffffffffffff811115614ace57614acd614933565b5b614ada86828701614a15565b93509350506020614aed86828701614a82565b9150509250925092565b600080600060608486031215614b1057614b0f61492e565b5b6000614b1e8682870161494f565b9350506020614b2f8682870161494f565b9250506040614b408682870161497b565b9150509250925092565b600060208284031215614b6057614b5f61492e565b5b6000614b6e8482850161494f565b91505092915050565b600060ff82169050919050565b614b8d81614b77565b82525050565b6000602082019050614ba86000830184614b84565b92915050565b600060208284031215614bc457614bc361492e565b5b6000614bd284828501614a82565b91505092915050565b600060208284031215614bf157614bf061492e565b5b6000614bff8482850161497b565b91505092915050565b60008060408385031215614c1f57614c1e61492e565b5b6000614c2d8582860161494f565b9250506020614c3e85828601614a82565b9150509250929050565b60008060408385031215614c5f57614c5e61492e565b5b6000614c6d8582860161497b565b9250506020614c7e8582860161497b565b9150509250929050565b6000819050919050565b6000614cad614ca8614ca3846148d2565b614c88565b6148d2565b9050919050565b6000614cbf82614c92565b9050919050565b6000614cd182614cb4565b9050919050565b614ce181614cc6565b82525050565b6000602082019050614cfc6000830184614cd8565b92915050565b6000614d0d82614cb4565b9050919050565b614d1d81614d02565b82525050565b6000602082019050614d386000830184614d14565b92915050565b6000614d49826148f2565b9050919050565b614d5981614d3e565b8114614d6457600080fd5b50565b600081359050614d7681614d50565b92915050565b600080600060608486031215614d9557614d9461492e565b5b6000614da386828701614d67565b9350506020614db48682870161494f565b9250506040614dc58682870161497b565b9150509250925092565b60008060408385031215614de657614de561492e565b5b6000614df48582860161494f565b9250506020614e058582860161494f565b9150509250929050565b60008060408385031215614e2657614e2561492e565b5b6000614e3485828601614a82565b9250506020614e458582860161497b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e9657607f821691505b602082108103614ea957614ea8614e4f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ee560208361482b565b9150614ef082614eaf565b602082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f84826147ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614fb657614fb5614f4a565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b6000614ff760168361482b565b915061500282614fc1565b602082019050919050565b6000602082019050818103600083015261502681614fea565b9050919050565b7f4572726f723a2047756172646564210000000000000000000000000000000000600082015250565b6000615063600f8361482b565b915061506e8261502d565b602082019050919050565b6000602082019050818103600083015261509281615056565b9050919050565b60006040820190506150ae6000830185614904565b6150bb60208301846147f6565b9392505050565b600081905092915050565b50565b60006150dd6000836150c2565b91506150e8826150cd565b600082019050919050565b60006150fe826150d0565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061513e60148361482b565b915061514982615108565b602082019050919050565b6000602082019050818103600083015261516d81615131565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151d060268361482b565b91506151db82615174565b604082019050919050565b600060208201905081810360008301526151ff816151c3565b9050919050565b6000819050919050565b600061522b61522661522184615206565b614c88565b6147ec565b9050919050565b61523b81615210565b82525050565b60006040820190506152566000830185614904565b6152636020830184615232565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152c660248361482b565b91506152d18261526a565b604082019050919050565b600060208201905081810360008301526152f5816152b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061535860228361482b565b9150615363826152fc565b604082019050919050565b600060208201905081810360008301526153878161534b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ea60258361482b565b91506153f58261538e565b604082019050919050565b60006020820190508181036000830152615419816153dd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061547c60238361482b565b915061548782615420565b604082019050919050565b600060208201905081810360008301526154ab8161546f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061550e60298361482b565b9150615519826154b2565b604082019050919050565b6000602082019050818103600083015261553d81615501565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b600061557a60138361482b565b915061558582615544565b602082019050919050565b600060208201905081810360008301526155a98161556d565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b60006155e6601d8361482b565b91506155f1826155b0565b602082019050919050565b60006020820190508181036000830152615615816155d9565b9050919050565b6000615627826147ec565b9150615632836147ec565b925082820190508082111561564a57615649614f4a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156ac60288361482b565b91506156b782615650565b604082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000615718601b8361482b565b9150615723826156e2565b602082019050919050565b600060208201905081810360008301526157478161570b565b9050919050565b6000615759826147ec565b9150615764836147ec565b925082820390508181111561577c5761577b614f4a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006157b8601b8361482b565b91506157c382615782565b602082019050919050565b600060208201905081810360008301526157e7816157ab565b9050919050565b60006157f9826147ec565b9150615804836147ec565b9250828202615812816147ec565b9150828204841483151761582957615828614f4a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061586a826147ec565b9150615875836147ec565b92508261588557615884615830565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158ec60218361482b565b91506158f782615890565b604082019050919050565b6000602082019050818103600083015261591b816158df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061596081614938565b92915050565b60006020828403121561597c5761597b61492e565b5b600061598a84828501615951565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159c8816148f2565b82525050565b60006159da83836159bf565b60208301905092915050565b6000602082019050919050565b60006159fe82615993565b615a08818561599e565b9350615a13836159af565b8060005b83811015615a44578151615a2b88826159ce565b9750615a36836159e6565b925050600181019050615a17565b5085935050505092915050565b600060a082019050615a6660008301886147f6565b615a736020830187615232565b8181036040830152615a8581866159f3565b9050615a946060830185614904565b615aa160808301846147f6565b9695505050505050565b6000604082019050615ac060008301856147f6565b8181036020830152615ad281846159f3565b90509392505050565b600060c082019050615af06000830189614904565b615afd60208301886147f6565b615b0a6040830187615232565b615b176060830186615232565b615b246080830185614904565b615b3160a08301846147f6565b979650505050505050565b600081519050615b4b81614964565b92915050565b600080600060608486031215615b6a57615b6961492e565b5b6000615b7886828701615b3c565b9350506020615b8986828701615b3c565b9250506040615b9a86828701615b3c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e16ea25a242fa47601dde18b3b9b6ec85eeff8c63177fa7ba847725ce0b684dc64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c80637d99c66d116101f2578063cea9d26f1161010d578063ec44acf2116100a0578063f71b9bbf1161006f578063f71b9bbf14610e4b578063f872858a14610e74578063f8905a0b14610e9f578063fb0ecfa414610ec8576103c3565b8063ec44acf214610da5578063ee828db314610dd0578063f2fde38b14610df9578063f708a64f14610e22576103c3565b8063df8408fe116100dc578063df8408fe14610d0f578063e6b2603b14610d38578063e7d8320e14610d4f578063e7f1bfcb14610d7a576103c3565b8063cea9d26f14610c57578063d27e0e6a14610c80578063dd62ed3e14610ca9578063df20fd4914610ce6576103c3565b80639d9241ec11610185578063ae85ade611610154578063ae85ade614610b9d578063bf56b37114610bc6578063c16dd4a414610bf1578063c867d60b14610c1a576103c3565b80639d9241ec14610acf578063a457c2d714610afa578063a6d3472a14610b37578063a9059cbb14610b60576103c3565b80638da5cb5b116101c15780638da5cb5b14610a1357806395d89b4114610a3e57806395fc8fdf14610a695780639673b5e314610a92576103c3565b80637d99c66d14610955578063807c2d9c146109805780638b42507f146109ab5780638ca39f5e146109e8576103c3565b80634355855a116102e2578063672898561161027557806370a082311161024457806370a08231146108ad578063715018a6146108ea578063728d41c9146109015780637d1db4a51461092a576103c3565b806367289856146108035780636ac9a8701461082e5780636d13582c146108575780636ddd171314610882576103c3565b806359fac517116102b157806359fac5171461075d5780635c85974f146107865780635e42358c146107af578063651a8987146107da576103c3565b80634355855a1461068f5780634974d88f146106cc5780635342acb4146106f557806359b107b914610732576103c3565b806327c8f8351161035a578063313ce56711610329578063313ce567146105ad57806339509351146105d85780633bbac579146106155780633ecad27114610652576103c3565b806327c8f83514610517578063293230b814610542578063296f0a0c146105595780632b112e4914610582576103c3565b8063095ea7b311610396578063095ea7b31461044957806310a60f021461048657806318160ddd146104af57806323b872dd146104da576103c3565b80630445b667146103c857806306fdde03146103f35780630930907b1461041e576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef1565b6040516103ea9190614805565b60405180910390f35b3480156103ff57600080fd5b50610408610ef7565b60405161041591906148b0565b60405180910390f35b34801561042a57600080fd5b50610433610f89565b6040516104409190614913565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614990565b610fad565b60405161047d91906149eb565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190614a97565b610fcb565b005b3480156104bb57600080fd5b506104c46110ec565b6040516104d19190614805565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614af7565b6110f6565b60405161050e91906149eb565b60405180910390f35b34801561052357600080fd5b5061052c6111d0565b6040516105399190614913565b60405180910390f35b34801561054e57600080fd5b506105576111f4565b005b34801561056557600080fd5b50610580600480360381019061057b9190614b4a565b6112e4565b005b34801561058e57600080fd5b506105976113a4565b6040516105a49190614805565b60405180910390f35b3480156105b957600080fd5b506105c2611422565b6040516105cf9190614b93565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190614990565b611439565b60405161060c91906149eb565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190614b4a565b6114ec565b60405161064991906149eb565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614b4a565b61150c565b60405161068691906149eb565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190614b4a565b61152c565b6040516106c391906149eb565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190614bae565b61154c565b005b34801561070157600080fd5b5061071c60048036038101906107179190614b4a565b6115e5565b60405161072991906149eb565b60405180910390f35b34801561073e57600080fd5b50610747611605565b6040516107549190614805565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190614b4a565b61160b565b005b34801561079257600080fd5b506107ad60048036038101906107a89190614bdb565b6116cb565b005b3480156107bb57600080fd5b506107c4611751565b6040516107d191906149eb565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc9190614c08565b611764565b005b34801561080f57600080fd5b5061081861183b565b6040516108259190614913565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614c48565b611861565b005b34801561086357600080fd5b5061086c61190c565b6040516108799190614ce7565b60405180910390f35b34801561088e57600080fd5b50610897611932565b6040516108a491906149eb565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190614b4a565b611945565b6040516108e19190614805565b60405180910390f35b3480156108f657600080fd5b506108ff61198e565b005b34801561090d57600080fd5b5061092860048036038101906109239190614bdb565b611a16565b005b34801561093657600080fd5b5061093f611a9c565b60405161094c9190614805565b60405180910390f35b34801561096157600080fd5b5061096a611aa2565b6040516109779190614805565b60405180910390f35b34801561098c57600080fd5b50610995611aa8565b6040516109a29190614805565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614b4a565b611aae565b6040516109df91906149eb565b60405180910390f35b3480156109f457600080fd5b506109fd611ace565b604051610a0a9190614d23565b60405180910390f35b348015610a1f57600080fd5b50610a28611af4565b604051610a359190614913565b60405180910390f35b348015610a4a57600080fd5b50610a53611b1d565b604051610a6091906148b0565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a97565b611baf565b005b348015610a9e57600080fd5b50610ab96004803603810190610ab49190614b4a565b611cd0565b604051610ac691906149eb565b60405180910390f35b348015610adb57600080fd5b50610ae4611cf0565b604051610af19190614805565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190614990565b611cf6565b604051610b2e91906149eb565b60405180910390f35b348015610b4357600080fd5b50610b5e6004803603810190610b599190614b4a565b611dc3565b005b348015610b6c57600080fd5b50610b876004803603810190610b829190614990565b611e97565b604051610b9491906149eb565b60405180910390f35b348015610ba957600080fd5b50610bc46004803603810190610bbf9190614c08565b611eb6565b005b348015610bd257600080fd5b50610bdb611f8d565b604051610be89190614805565b60405180910390f35b348015610bfd57600080fd5b50610c186004803603810190610c139190614c08565b611f93565b005b348015610c2657600080fd5b50610c416004803603810190610c3c9190614b4a565b61211f565b604051610c4e91906149eb565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c799190614d7c565b61213f565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca29190614bae565b612241565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb9190614dcf565b6122da565b604051610cdd9190614805565b60405180910390f35b348015610cf257600080fd5b50610d0d6004803603810190610d089190614e0f565b612361565b005b348015610d1b57600080fd5b50610d366004803603810190610d319190614c08565b612402565b005b348015610d4457600080fd5b50610d4d6124d9565b005b348015610d5b57600080fd5b50610d64612618565b604051610d719190614805565b60405180910390f35b348015610d8657600080fd5b50610d8f61261e565b604051610d9c91906149eb565b60405180910390f35b348015610db157600080fd5b50610dba612631565b604051610dc791906149eb565b60405180910390f35b348015610ddc57600080fd5b50610df76004803603810190610df29190614bae565b612644565b005b348015610e0557600080fd5b50610e206004803603810190610e1b9190614b4a565b6126dd565b005b348015610e2e57600080fd5b50610e496004803603810190610e449190614c08565b6127d4565b005b348015610e5757600080fd5b50610e726004803603810190610e6d9190614b4a565b6129de565b005b348015610e8057600080fd5b50610e89612a9e565b604051610e9691906149eb565b60405180910390f35b348015610eab57600080fd5b50610ec66004803603810190610ec19190614bdb565b612ab1565b005b348015610ed457600080fd5b50610eef6004803603810190610eea9190614c48565b612b37565b005b60175481565b606060018054610f0690614e7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290614e7e565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610fc1610fba612be2565b8484612bea565b6001905092915050565b610fd3612be2565b73ffffffffffffffffffffffffffffffffffffffff16610ff1611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e90614efb565b60405180910390fd5b60005b838390508110156110e657816012600086868581811061106d5761106c614f1b565b5b90506020020160208101906110829190614b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110de90614f79565b91505061104a565b50505050565b6000601354905090565b6000611103848484612db3565b506111c584611110612be2565b6111c085604051806060016040528060288152602001615ba560289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611176612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b612bea565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6111fc612be2565b73ffffffffffffffffffffffffffffffffffffffff1661121a611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790614efb565b60405180910390fd5b601c60009054906101000a900460ff16156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061500d565b60405180910390fd5b6001601c60006101000a81548160ff02191690831515021790555042601a81905550565b6112ec612be2565b73ffffffffffffffffffffffffffffffffffffffff1661130a611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790614efb565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061141d6113d27f0000000000000000000000000000000000000000000000000000000000000000611945565b61140f6113fe7f000000000000000000000000000000000000000000000000000000000000dead611945565b601354613a1290919063ffffffff16565b613a1290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006114e2611446612be2565b846114dd85600c6000611457612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b612bea565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b611554612be2565b73ffffffffffffffffffffffffffffffffffffffff16611572611af4565b73ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90614efb565b60405180910390fd5b80601c60036101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60085481565b611613612be2565b73ffffffffffffffffffffffffffffffffffffffff16611631611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614efb565b60405180910390fd5b80601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d3612be2565b73ffffffffffffffffffffffffffffffffffffffff166116f1611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90614efb565b60405180910390fd5b8060158190555050565b601c60029054906101000a900460ff1681565b61176c612be2565b73ffffffffffffffffffffffffffffffffffffffff1661178a611af4565b73ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790614efb565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611869612be2565b73ffffffffffffffffffffffffffffffffffffffff16611887611af4565b73ffffffffffffffffffffffffffffffffffffffff16146118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490614efb565b60405180910390fd5b8160068190555080600781905550611902600754600654613a5c90919063ffffffff16565b6009819055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60019054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612be2565b73ffffffffffffffffffffffffffffffffffffffff166119b4611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190614efb565b60405180910390fd5b611a146000613aba565b565b611a1e612be2565b73ffffffffffffffffffffffffffffffffffffffff16611a3c611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614efb565b60405180910390fd5b8060168190555050565b60155481565b601b5481565b60165481565b60116020528060005260406000206000915054906101000a900460ff1681565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611b2c90614e7e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5890614e7e565b8015611ba55780601f10611b7a57610100808354040283529160200191611ba5565b820191906000526020600020905b815481529060010190602001808311611b8857829003601f168201915b5050505050905090565b611bb7612be2565b73ffffffffffffffffffffffffffffffffffffffff16611bd5611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290614efb565b60405180910390fd5b60005b83839050811015611cca5781601d6000868685818110611c5157611c50614f1b565b5b9050602002016020810190611c669190614b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611cc290614f79565b915050611c2e565b50505050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000611db9611d03612be2565b84611db485604051806060016040528060258152602001615bcd60259139600c6000611d2d612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b612bea565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a90615079565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611eab611ea4612be2565b8484612db3565b506001905092915050565b611ebe612be2565b73ffffffffffffffffffffffffffffffffffffffff16611edc611af4565b73ffffffffffffffffffffffffffffffffffffffff1614611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990614efb565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a5481565b611f9b612be2565b73ffffffffffffffffffffffffffffffffffffffff16611fb9611af4565b73ffffffffffffffffffffffffffffffffffffffff161461200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200690614efb565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561211b5780601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690615079565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161220a929190615099565b600060405180830381600087803b15801561222457600080fd5b505af1158015612238573d6000803e3d6000fd5b50505050505050565b612249612be2565b73ffffffffffffffffffffffffffffffffffffffff16612267611af4565b73ffffffffffffffffffffffffffffffffffffffff16146122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490614efb565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612369612be2565b73ffffffffffffffffffffffffffffffffffffffff16612387611af4565b73ffffffffffffffffffffffffffffffffffffffff16146123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490614efb565b60405180910390fd5b81601c60016101000a81548160ff021916908315150217905550806017819055505050565b61240a612be2565b73ffffffffffffffffffffffffffffffffffffffff16612428611af4565b73ffffffffffffffffffffffffffffffffffffffff161461247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590614efb565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090615079565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161258f906150f3565b60006040518083038185875af1925050503d80600081146125cc576040519150601f19603f3d011682016040523d82523d6000602084013e6125d1565b606091505b5050905080612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90615154565b60405180910390fd5b50565b60195481565b601860009054906101000a900460ff1681565b601c60009054906101000a900460ff1681565b61264c612be2565b73ffffffffffffffffffffffffffffffffffffffff1661266a611af4565b73ffffffffffffffffffffffffffffffffffffffff16146126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614efb565b60405180910390fd5b80601c60026101000a81548160ff02191690831515021790555050565b6126e5612be2565b73ffffffffffffffffffffffffffffffffffffffff16612703611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275090614efb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf906151e6565b60405180910390fd5b6127d181613aba565b50565b6127dc612be2565b73ffffffffffffffffffffffffffffffffffffffff166127fa611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284790614efb565b60405180910390fd5b80156128eb57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016128b4929190615241565b600060405180830381600087803b1580156128ce57600080fd5b505af11580156128e2573d6000803e3d6000fd5b50505050612983565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968361293385611945565b6040518363ffffffff1660e01b8152600401612950929190615099565b600060405180830381600087803b15801561296a57600080fd5b505af115801561297e573d6000803e3d6000fd5b505050505b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129e6612be2565b73ffffffffffffffffffffffffffffffffffffffff16612a04611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5190614efb565b60405180910390fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60039054906101000a900460ff1681565b612ab9612be2565b73ffffffffffffffffffffffffffffffffffffffff16612ad7611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2490614efb565b60405180910390fd5b8060198190555050565b612b3f612be2565b73ffffffffffffffffffffffffffffffffffffffff16612b5d611af4565b73ffffffffffffffffffffffffffffffffffffffff1614612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614efb565b60405180910390fd5b8160048190555080600581905550612bd8600554600454613a5c90919063ffffffff16565b6008819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c50906152dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbf9061536e565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612da69190614805565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a90615400565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8990615492565b60405180910390fd5b60008211612ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecc90615524565b60405180910390fd5b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5990615590565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690615590565b60405180910390fd5b601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561307c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307390615590565b60405180910390fd5b602060149054906101000a900460ff16156130a35761309c848484613b7e565b90506139a7565b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131475750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336f57601c60009054906101000a900460ff1661319b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613192906155fc565b60405180910390fd5b601b54601a546131ab919061561c565b421080156132075750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561336e578373ffffffffffffffffffffffffffffffffffffffff16602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132be576001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061336d565b8273ffffffffffffffffffffffffffffffffffffffff16602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361336c576001601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600061337a30611945565b9050600060175482101590508080156133a05750602060149054906101000a900460ff16155b80156133f65750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561340e5750601c60019054906101000a900460ff165b1561341d5761341c82613d51565b5b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c15750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d95750601c60029054906101000a900460ff165b1561352457601554841115613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a906156c2565b60405180910390fd5b5b6135ad846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006135fc8787613f74565b6136105761360b8787876140df565b613612565b845b9050601c60039054906101000a900460ff16801561367a5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136df5760165461369d8261368f89611945565b613a5c90919063ffffffff16565b11156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d59061572e565b60405180910390fd5b5b61373181600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661385757601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968861380d8a611945565b6040518363ffffffff1660e01b815260040161382a929190615099565b600060405180830381600087803b15801561384457600080fd5b505af1925050508015613855575060015b505b601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661393a57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96876138f089611945565b6040518363ffffffff1660e01b815260040161390d929190615099565b600060405180830381600087803b15801561392757600080fd5b505af1925050508015613938575060015b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139979190614805565b60405180910390a3600193505050505b9392505050565b60008383111582906139f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ed91906148b0565b60405180910390fd5b5060008385613a05919061574e565b9050809150509392505050565b6000613a5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139ae565b905092915050565b6000808284613a6b919061561c565b905083811015613ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa7906157ce565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000613c09826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ae9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9e82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d3e9190614805565b60405180910390a3600190509392505050565b6001602060146101000a81548160ff0219169083151502179055506000613d85600954600854613a5c90919063ffffffff16565b905060008103613d955750613f56565b6000613dae600654600454613a5c90919063ffffffff16565b90506000613dea6002613ddc85613dce868961434990919063ffffffff16565b6143c390919063ffffffff16565b6143c390919063ffffffff16565b90506000613e018286613a1290919063ffffffff16565b90506000479050613e118261440d565b6000613e268247613a1290919063ffffffff16565b90506000613e50613e416002886143c390919063ffffffff16565b88613a1290919063ffffffff16565b90506000613e8c6002613e7e84613e708b8861434990919063ffffffff16565b6143c390919063ffffffff16565b6143c390919063ffffffff16565b90506000613ea38285613a1290919063ffffffff16565b9050600082118015613eb55750600087115b15613ec557613ec48783614689565b5b6000811115613f4c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f3857600080fd5b505af193505050508015613f4a575060015b505b5050505050505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140175750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561402557600190506140d9565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140c65750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140d457600090506140d9565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141645761415d60145461414f6008548661434990919063ffffffff16565b6143c390919063ffffffff16565b9050614228565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141e6576141df6014546141d16009548661434990919063ffffffff16565b6143c390919063ffffffff16565b9050614227565b601860009054906101000a900460ff16156142265761422360646142156019548661434990919063ffffffff16565b6143c390919063ffffffff16565b90505b5b5b600081111561432c5761428381600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5c90919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143239190614805565b60405180910390a35b61433f8184613a1290919063ffffffff16565b9150509392505050565b600080830361435b57600090506143bd565b6000828461436991906157ee565b9050828482614378919061585f565b146143b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143af90615902565b60405180910390fd5b809150505b92915050565b600061440583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614789565b905092915050565b6000600267ffffffffffffffff81111561442a57614429615922565b5b6040519080825280602002602001820160405280156144585781602001602082028036833780820191505090505b50905030816000815181106144705761446f614f1b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453b9190615966565b8160018151811061454f5761454e614f1b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145b630601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bea565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161461a959493929190615a51565b600060405180830381600087803b15801561463457600080fd5b505af1158015614648573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161467d929190615aab565b60405180910390a15050565b6146b630601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bea565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161473f96959493929190615adb565b60606040518083038185885af115801561475d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147829190615b51565b5050505050565b600080831182906147d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147c791906148b0565b60405180910390fd5b50600083856147df919061585f565b9050809150509392505050565b6000819050919050565b6147ff816147ec565b82525050565b600060208201905061481a60008301846147f6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561485a57808201518184015260208101905061483f565b60008484015250505050565b6000601f19601f8301169050919050565b600061488282614820565b61488c818561482b565b935061489c81856020860161483c565b6148a581614866565b840191505092915050565b600060208201905081810360008301526148ca8184614877565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006148fd826148d2565b9050919050565b61490d816148f2565b82525050565b60006020820190506149286000830184614904565b92915050565b600080fd5b600080fd5b614941816148f2565b811461494c57600080fd5b50565b60008135905061495e81614938565b92915050565b61496d816147ec565b811461497857600080fd5b50565b60008135905061498a81614964565b92915050565b600080604083850312156149a7576149a661492e565b5b60006149b58582860161494f565b92505060206149c68582860161497b565b9150509250929050565b60008115159050919050565b6149e5816149d0565b82525050565b6000602082019050614a0060008301846149dc565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a2b57614a2a614a06565b5b8235905067ffffffffffffffff811115614a4857614a47614a0b565b5b602083019150836020820283011115614a6457614a63614a10565b5b9250929050565b614a74816149d0565b8114614a7f57600080fd5b50565b600081359050614a9181614a6b565b92915050565b600080600060408486031215614ab057614aaf61492e565b5b600084013567ffffffffffffffff811115614ace57614acd614933565b5b614ada86828701614a15565b93509350506020614aed86828701614a82565b9150509250925092565b600080600060608486031215614b1057614b0f61492e565b5b6000614b1e8682870161494f565b9350506020614b2f8682870161494f565b9250506040614b408682870161497b565b9150509250925092565b600060208284031215614b6057614b5f61492e565b5b6000614b6e8482850161494f565b91505092915050565b600060ff82169050919050565b614b8d81614b77565b82525050565b6000602082019050614ba86000830184614b84565b92915050565b600060208284031215614bc457614bc361492e565b5b6000614bd284828501614a82565b91505092915050565b600060208284031215614bf157614bf061492e565b5b6000614bff8482850161497b565b91505092915050565b60008060408385031215614c1f57614c1e61492e565b5b6000614c2d8582860161494f565b9250506020614c3e85828601614a82565b9150509250929050565b60008060408385031215614c5f57614c5e61492e565b5b6000614c6d8582860161497b565b9250506020614c7e8582860161497b565b9150509250929050565b6000819050919050565b6000614cad614ca8614ca3846148d2565b614c88565b6148d2565b9050919050565b6000614cbf82614c92565b9050919050565b6000614cd182614cb4565b9050919050565b614ce181614cc6565b82525050565b6000602082019050614cfc6000830184614cd8565b92915050565b6000614d0d82614cb4565b9050919050565b614d1d81614d02565b82525050565b6000602082019050614d386000830184614d14565b92915050565b6000614d49826148f2565b9050919050565b614d5981614d3e565b8114614d6457600080fd5b50565b600081359050614d7681614d50565b92915050565b600080600060608486031215614d9557614d9461492e565b5b6000614da386828701614d67565b9350506020614db48682870161494f565b9250506040614dc58682870161497b565b9150509250925092565b60008060408385031215614de657614de561492e565b5b6000614df48582860161494f565b9250506020614e058582860161494f565b9150509250929050565b60008060408385031215614e2657614e2561492e565b5b6000614e3485828601614a82565b9250506020614e458582860161497b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e9657607f821691505b602082108103614ea957614ea8614e4f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ee560208361482b565b9150614ef082614eaf565b602082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f84826147ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614fb657614fb5614f4a565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b6000614ff760168361482b565b915061500282614fc1565b602082019050919050565b6000602082019050818103600083015261502681614fea565b9050919050565b7f4572726f723a2047756172646564210000000000000000000000000000000000600082015250565b6000615063600f8361482b565b915061506e8261502d565b602082019050919050565b6000602082019050818103600083015261509281615056565b9050919050565b60006040820190506150ae6000830185614904565b6150bb60208301846147f6565b9392505050565b600081905092915050565b50565b60006150dd6000836150c2565b91506150e8826150cd565b600082019050919050565b60006150fe826150d0565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061513e60148361482b565b915061514982615108565b602082019050919050565b6000602082019050818103600083015261516d81615131565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151d060268361482b565b91506151db82615174565b604082019050919050565b600060208201905081810360008301526151ff816151c3565b9050919050565b6000819050919050565b600061522b61522661522184615206565b614c88565b6147ec565b9050919050565b61523b81615210565b82525050565b60006040820190506152566000830185614904565b6152636020830184615232565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152c660248361482b565b91506152d18261526a565b604082019050919050565b600060208201905081810360008301526152f5816152b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061535860228361482b565b9150615363826152fc565b604082019050919050565b600060208201905081810360008301526153878161534b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ea60258361482b565b91506153f58261538e565b604082019050919050565b60006020820190508181036000830152615419816153dd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061547c60238361482b565b915061548782615420565b604082019050919050565b600060208201905081810360008301526154ab8161546f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061550e60298361482b565b9150615519826154b2565b604082019050919050565b6000602082019050818103600083015261553d81615501565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b600061557a60138361482b565b915061558582615544565b602082019050919050565b600060208201905081810360008301526155a98161556d565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b60006155e6601d8361482b565b91506155f1826155b0565b602082019050919050565b60006020820190508181036000830152615615816155d9565b9050919050565b6000615627826147ec565b9150615632836147ec565b925082820190508082111561564a57615649614f4a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156ac60288361482b565b91506156b782615650565b604082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000615718601b8361482b565b9150615723826156e2565b602082019050919050565b600060208201905081810360008301526157478161570b565b9050919050565b6000615759826147ec565b9150615764836147ec565b925082820390508181111561577c5761577b614f4a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006157b8601b8361482b565b91506157c382615782565b602082019050919050565b600060208201905081810360008301526157e7816157ab565b9050919050565b60006157f9826147ec565b9150615804836147ec565b9250828202615812816147ec565b9150828204841483151761582957615828614f4a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061586a826147ec565b9150615875836147ec565b92508261588557615884615830565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158ec60218361482b565b91506158f782615890565b604082019050919050565b6000602082019050818103600083015261591b816158df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061596081614938565b92915050565b60006020828403121561597c5761597b61492e565b5b600061598a84828501615951565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159c8816148f2565b82525050565b60006159da83836159bf565b60208301905092915050565b6000602082019050919050565b60006159fe82615993565b615a08818561599e565b9350615a13836159af565b8060005b83811015615a44578151615a2b88826159ce565b9750615a36836159e6565b925050600181019050615a17565b5085935050505092915050565b600060a082019050615a6660008301886147f6565b615a736020830187615232565b8181036040830152615a8581866159f3565b9050615a946060830185614904565b615aa160808301846147f6565b9695505050505050565b6000604082019050615ac060008301856147f6565b8181036020830152615ad281846159f3565b90509392505050565b600060c082019050615af06000830189614904565b615afd60208301886147f6565b615b0a6040830187615232565b615b176060830186615232565b615b246080830185614904565b615b3160a08301846147f6565b979650505050505050565b600081519050615b4b81614964565b92915050565b600080600060608486031215615b6a57615b6961492e565b5b6000615b7886828701615b3c565b9350506020615b8986828701615b3c565b9250506040615b9a86828701615b3c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e16ea25a242fa47601dde18b3b9b6ec85eeff8c63177fa7ba847725ce0b684dc64736f6c63430008130033
Deployed Bytecode Sourcemap
7387:17298:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8766:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11959:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7719:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13297:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21683:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12236:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14071:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7631:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20915:169;;;;;;;;;;;;;:::i;:::-;;23428:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12630:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12794:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8462:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8240:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8351:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22694:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8183:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7953:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24458:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23315:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9124:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22937:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9455:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22363:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9413:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9087:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12344:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2003:94;;;;;;;;;;;;;:::i;:::-;;23201:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8614:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8990:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8692:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8407:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9375:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1694:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12050;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21485:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9207:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7986:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13020:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23884:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13896:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23073:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8957:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24012:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8292:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21343:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21916:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12475:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24272:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22807:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21125:178;;;;;;;;;;;;;:::i;:::-;;8872:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8828;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9058:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22588:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2105:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23552:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24585:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9163:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22032:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22144:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8766:53;;;;:::o;11959:83::-;11996:13;12029:5;12022:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11959:83;:::o;7719:81::-;;;:::o;13297:161::-;13372:4;13389:39;13398:12;:10;:12::i;:::-;13412:7;13421:6;13389:8;:39::i;:::-;13446:4;13439:11;;13297:161;;;;:::o;21683:225::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21807:9:::1;21802:99;21826:8;;:15;;21822:1;:19;21802:99;;;21884:5;21863;:18;21869:8;;21878:1;21869:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21863:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21843:3;;;;;:::i;:::-;;;;21802:99;;;;21683:225:::0;;;:::o;12236:100::-;12289:7;12316:12;;12309:19;;12236:100;:::o;14071:313::-;14169:4;14186:36;14196:6;14204:9;14215:6;14186:9;:36::i;:::-;;14233:121;14242:6;14250:12;:10;:12::i;:::-;14264:89;14302:6;14264:89;;;;;;;;;;;;;;;;;:11;:19;14276:6;14264:19;;;;;;;;;;;;;;;:33;14284:12;:10;:12::i;:::-;14264:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14233:8;:121::i;:::-;14372:4;14365:11;;14071:313;;;;;:::o;7631:81::-;;;:::o;20915:169::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20978:7:::1;;;;;;;;;;;20977:8;20969:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;21033:4;21023:7;;:14;;;;;;;;;;;;;;;;;;21061:15;21048:10;:28;;;;20915:169::o:0;23428:116::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23526:10:::1;23506:17;;:30;;;;;;;;;;;;;;;;;;23428:116:::0;:::o;12630:156::-;12683:7;12710:68;12755:22;12765:11;12755:9;:22::i;:::-;12710:40;12727:22;12737:11;12727:9;:22::i;:::-;12710:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;12703:75;;12630:156;:::o;12145:83::-;12186:5;12211:9;;;;;;;;;;;12204:16;;12145:83;:::o;12794:218::-;12882:4;12899:83;12908:12;:10;:12::i;:::-;12922:7;12931:50;12970:10;12931:11;:25;12943:12;:10;:12::i;:::-;12931:25;;;;;;;;;;;;;;;:34;12957:7;12931:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12899:8;:83::i;:::-;13000:4;12993:11;;12794:218;;;;:::o;8462:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;8240:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8351:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;22694:105::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22784:7:::1;22765:16;;:26;;;;;;;;;;;;;;;;;;22694:105:::0;:::o;8183:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;7953:26::-;;;;:::o;24458:119::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24561:7:::1;24530:11;;:39;;;;;;;;;;;;;;;;;;24458:119:::0;:::o;23315:101::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23400:8:::1;23385:12;:23;;;;23315:101:::0;:::o;9124:32::-;;;;;;;;;;;;;:::o;22937:128::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23050:7:::1;23022:19;:25;23042:4;23022:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22937:128:::0;;:::o;9455:24::-;;;;;;;;;;;;;:::o;22363:217::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22464:7:::1;22444:17;:27;;;;22499:10;22482:14;:27;;;;22535:37;22557:14;;22535:17;;:21;;:37;;;;:::i;:::-;22520:12;:52;;;;22363:217:::0;;:::o;9413:35::-;;;;;;;;;;;;;:::o;9087:30::-;;;;;;;;;;;;;:::o;12344:123::-;12410:7;12436:9;:18;12446:7;12436:18;;;;;;;;;;;;;;;;12429:25;;12344:123;;;:::o;2003:94::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2068:21:::1;2086:1;2068:9;:21::i;:::-;2003:94::o:0;23201:106::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23291:8:::1;23278:10;:21;;;;23201:106:::0;:::o;8614:60::-;;;;:::o;8990:39::-;;;;:::o;8692:57::-;;;;:::o;8407:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;9375:29::-;;;;;;;;;;;;;:::o;1694:87::-;1740:7;1767:6;;;;;;;;;;;1760:13;;1694:87;:::o;12050:::-;12089:13;12122:7;12115:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12050:87;:::o;21485:190::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21581:6:::1;21577:91;21597:4;;:11;;21593:1;:15;21577:91;;;21649:7;21629:8;:17;21638:4;;21643:1;21638:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21629:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21610:3;;;;;:::i;:::-;;;;21577:91;;;;21485:190:::0;;;:::o;9207:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;7986:27::-;;;;:::o;13020:269::-;13113:4;13130:129;13139:12;:10;:12::i;:::-;13153:7;13162:96;13201:15;13162:96;;;;;;;;;;;;;;;;;:11;:25;13174:12;:10;:12::i;:::-;13162:25;;;;;;;;;;;;;;;:34;13188:7;13162:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;13130:8;:129::i;:::-;13277:4;13270:11;;13020:269;;;;:::o;23884:120::-;9311:17;;;;;;;;;;;9297:31;;:10;:31;;;9289:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23985:9:::1;23960:14;;:35;;;;;;;;;;;;;;;;;;23884:120:::0;:::o;13896:167::-;13974:4;13991:42;14001:12;:10;:12::i;:::-;14015:9;14026:6;13991:9;:42::i;:::-;;14051:4;14044:11;;13896:167;;;;:::o;23073:120::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23178:7:::1;23154:15;:21;23170:4;23154:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23073:120:::0;;:::o;8957:25::-;;;;:::o;24012:252::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24116:7:::1;24094:12;:19;24107:5;24094:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24137:7;24134:123;;;24187:7;24161:16;:23;24178:5;24161:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24238:7;24209:19;:26;24229:5;24209:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24134:123;24012:252:::0;;:::o;8292:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21343:134::-;9311:17;;;;;;;;;;;9297:31;;:10;:31;;;9289:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21439:3:::1;:12;;;21452:9;21462:6;21439:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21343:134:::0;;;:::o;21916:108::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22009:7:::1;21988:18;;:28;;;;;;;;;;;;;;;;;;21916:108:::0;:::o;12475:143::-;12556:7;12583:11;:18;12595:5;12583:18;;;;;;;;;;;;;;;:27;12602:7;12583:27;;;;;;;;;;;;;;;;12576:34;;12475:143;;;;:::o;24272:178::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24400:8:::1;24386:11;;:22;;;;;;;;;;;;;;;;;;24435:7;24419:13;:23;;;;24272:178:::0;;:::o;22807:122::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22914:7:::1;22888:17;:23;22906:4;22888:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22807:122:::0;;:::o;21125:178::-;9311:17;;;;;;;;;;;9297:31;;:10;:31;;;9289:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:7:::1;21200:10;21192:24;;21224:21;21192:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21179:71;;;21269:2;21261:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21167:136;21125:178::o:0;8872:37::-;;;;:::o;8828:::-;;;;;;;;;;;;;:::o;9058:19::-;;;;;;;;;;;;;:::o;22588:98::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22671:7:::1;22655:13;;:23;;;;;;;;;;;;;;;;;;22588:98:::0;:::o;2105:229::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2228:1:::1;2208:22;;:8;:22;;::::0;2186:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2307:19;2317:8;2307:9;:19::i;:::-;2105:229:::0;:::o;23552:324::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23666:6:::1;23663:162;;;23689:14;;;;;;;;;;;:23;;;23713:6;23720:1;23689:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23663:162;;;23764:14;;;;;;;;;;;:23;;;23788:6;23795:17;23805:6;23795:9;:17::i;:::-;23764:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23663:162;23862:6;23835:16;:24;23852:6;23835:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23552:324:::0;;:::o;24585:93::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24665:5:::1;24653:9;;:17;;;;;;;;;;;;;;;;;;24585:93:::0;:::o;9163:35::-;;;;;;;;;;;;;:::o;22032:104::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:7:::1;22101:17;:27;;;;22032:104:::0;:::o;22144:211::-;1926:12;:10;:12::i;:::-;1915:23;;:7;:5;:7::i;:::-;:23;;;1907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22243:7:::1;22224:16;:26;;;;22277:10;22261:13;:26;;;;22312:35;22333:13;;22312:16;;:20;;:35;;;;:::i;:::-;22298:11;:49;;;;22144:211:::0;;:::o;166:98::-;219:7;246:10;239:17;;166:98;:::o;13466:337::-;13576:1;13559:19;;:5;:19;;;13551:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13657:1;13638:21;;:7;:21;;;13630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13741:6;13711:11;:18;13723:5;13711:18;;;;;;;;;;;;;;;:27;13730:7;13711:27;;;;;;;;;;;;;;;:36;;;;13779:7;13763:32;;13772:5;13763:32;;;13788:6;13763:32;;;;;;:::i;:::-;;;;;;;;13466:337;;;:::o;14392:2567::-;14479:4;14524:1;14506:20;;:6;:20;;;14498:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14608:1;14587:23;;:9;:23;;;14579:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14678:1;14669:6;:10;14661:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14755:5;:13;14761:6;14755:13;;;;;;;;;;;;;;;;;;;;;;;;;14754:14;14746:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14812:5;:17;14818:10;14812:17;;;;;;;;;;;;;;;;;;;;;;;;;14811:18;14803:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14873:5;:16;14879:9;14873:16;;;;;;;;;;;;;;;;;;;;;;;;;14872:17;14864:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14930:6;;;;;;;;;;;14926:2024;;;14960:41;14975:6;14983:9;14994:6;14960:14;:41::i;:::-;14953:48;;;;14926:2024;15050:8;:16;15059:6;15050:16;;;;;;;;;;;;;;;;;;;;;;;;;15049:17;:41;;;;;15071:8;:19;15080:9;15071:19;;;;;;;;;;;;;;;;;;;;;;;;;15070:20;15049:41;15045:540;;;15119:7;;;;;;;;;;;15111:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15238:11;;15225:10;;:24;;;;:::i;:::-;15207:15;:42;:97;;;;;15292:11;;;;;;;;;;;15274:30;;:6;:30;;;;15207:97;15181:389;;;15364:6;15351:19;;:9;;;;;;;;;;;:19;;;15347:204;;15418:4;15399:5;:16;15405:9;15399:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15347:204;;;15469:9;15456:22;;:9;;;;;;;;;;;:22;;;15452:99;;15523:4;15507:5;:13;15513:6;15507:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15452:99;15347:204;15181:389;15045:540;15601:28;15632:24;15650:4;15632:9;:24::i;:::-;15601:55;;15671:28;15726:13;;15702:20;:37;;15671:68;;15760:23;:34;;;;;15788:6;;;;;;;;;;;15787:7;15760:34;:59;;;;;15799:12;:20;15812:6;15799:20;;;;;;;;;;;;;;;;;;;;;;;;;15798:21;15760:59;:74;;;;;15823:11;;;;;;;;;;;15760:74;15756:145;;;15855:30;15864:20;15855:8;:30::i;:::-;15756:145;15933:15;:23;15949:6;15933:23;;;;;;;;;;;;;;;;;;;;;;;;;15932:24;:55;;;;;15961:15;:26;15977:9;15961:26;;;;;;;;;;;;;;;;;;;;;;;;;15960:27;15932:55;:72;;;;;15991:13;;;;;;;;;;;15932:72;15929:187;;;16043:12;;16033:6;:22;;16025:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15929:187;16165:53;16187:6;16165:53;;;;;;;;;;;;;;;;;:9;:17;16175:6;16165:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;16145:9;:17;16155:6;16145:17;;;;;;;;;;;;;;;:73;;;;16235:19;16257:34;16274:6;16281:9;16257:16;:34::i;:::-;:80;;16303:34;16311:6;16319:9;16330:6;16303:7;:34::i;:::-;16257:80;;;16294:6;16257:80;16235:102;;16357:16;;;;;;;;;;;:51;;;;;16378:19;:30;16398:9;16378:30;;;;;;;;;;;;;;;;;;;;;;;;;16377:31;16357:51;16354:181;;;16478:10;;16437:37;16462:11;16437:20;16447:9;16437;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;16429:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16354:181;16574:37;16599:11;16574:9;:20;16584:9;16574:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;16551:9;:20;16561:9;16551:20;;;;;;;;;;;;;;;:60;;;;16632:16;:24;16649:6;16632:24;;;;;;;;;;;;;;;;;;;;;;;;;16628:99;;16663:14;;;;;;;;;;;:23;;;16687:6;16695:17;16705:6;16695:9;:17::i;:::-;16663:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16659:66;16628:99;16745:16;:27;16762:9;16745:27;;;;;;;;;;;;;;;;;;;;;;;;;16741:108;;16779:14;;;;;;;;;;;:23;;;16803:9;16814:20;16824:9;16814;:20::i;:::-;16779:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16775:72;16741:108;16887:9;16870:40;;16879:6;16870:40;;;16898:11;16870:40;;;;;;:::i;:::-;;;;;;;;16932:4;16925:11;;;;;14392:2567;;;;;;:::o;2881:192::-;2967:7;3000:1;2995;:6;;3003:12;2987:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3027:9;3043:1;3039;:5;;;;:::i;:::-;3027:17;;3064:1;3057:8;;;2881:192;;;;;:::o;2737:136::-;2795:7;2822:43;2826:1;2829;2822:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2815:50;;2737:136;;;;:::o;2548:181::-;2606:7;2626:9;2642:1;2638;:5;;;;:::i;:::-;2626:17;;2667:1;2662;:6;;2654:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2720:1;2713:8;;;2548:181;;;;:::o;2342:173::-;2398:16;2417:6;;;;;;;;;;;2398:25;;2443:8;2434:6;;:17;;;;;;;;;;;;;;;;;;2498:8;2467:40;;2488:8;2467:40;;;;;;;;;;;;2387:128;2342:173;:::o;16967:330::-;17060:4;17097:53;17119:6;17097:53;;;;;;;;;;;;;;;;;:9;:17;17107:6;17097:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17077:9;:17;17087:6;17077:17;;;;;;;;;;;;;;;:73;;;;17184:32;17209:6;17184:9;:20;17194:9;17184:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17161:9;:20;17171:9;17161:20;;;;;;;;;;;;;;;:55;;;;17249:9;17232:35;;17241:6;17232:35;;;17260:6;17232:35;;;;;;:::i;:::-;;;;;;;;17285:4;17278:11;;16967:330;;;;;:::o;18574:1148::-;9552:4;9543:6;;:13;;;;;;;;;;;;;;;;;;18645:19:::1;18667:29;18683:12;;18667:11;;:15;;:29;;;;:::i;:::-;18645:51;;18727:1;18712:11;:16:::0;18709:28:::1;;18730:7;;;18709:28;18749:23;18775:39;18796:17;;18775:16;;:20;;:39;;;;:::i;:::-;18749:65;;18897:19;18919:60;18977:1;18919:53;18960:11;18919:36;18939:15;18919;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;18897:82;;18990:21;19014:32;19034:11;19014:15;:19;;:32;;;;:::i;:::-;18990:56;;19059:22;19084:21;19059:46;;19116:31;19133:13;19116:16;:31::i;:::-;19158:22;19183:41;19209:14;19183:21;:25;;:41;;;;:::i;:::-;19158:66;;19237:19;19259:39;19275:22;19295:1;19275:15;:19;;:22;;;;:::i;:::-;19259:11;:15;;:39;;;;:::i;:::-;19237:61;;19319:26;19348:59;19405:1;19348:52;19388:11;19348:35;19367:15;19348:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;19319:88;;19418:23;19444:38;19463:18;19444:14;:18;;:38;;;;:::i;:::-;19418:64;;19519:1;19498:18;:22;:41;;;;;19538:1;19524:11;:15;19498:41;19495:91;;;19541:45;19554:11;19567:18;19541:12;:45::i;:::-;19495:91;19618:1;19600:15;:19;19597:118;;;19640:14;;;;;;;;;;;:22;;;19672:15;19640:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19636:68:::0;19597:118:::1;18632:1090;;;;;;;;;9567:1;9588:5:::0;9579:6;;:14;;;;;;;;;;;;;;;;;;18574:1148;:::o;17309:369::-;17393:4;17413:17;:25;17431:6;17413:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;17442:17;:28;17460:9;17442:28;;;;;;;;;;;;;;;;;;;;;;;;;17413:57;17410:261;;;17494:4;17487:11;;;;17410:261;17529:12;:20;17542:6;17529:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;17553:12;:23;17566:9;17553:23;;;;;;;;;;;;;;;;;;;;;;;;;17529:47;17525:146;;;17600:5;17593:12;;;;17525:146;17654:5;17647:12;;17309:369;;;;;:::o;17686:880::-;17772:7;17802:14;17859:12;:20;17872:6;17859:20;;;;;;;;;;;;;;;;;;;;;;;;;17856:436;;;17918:43;17946:14;;17918:23;17929:11;;17918:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;17906:55;;17856:436;;;18000:12;:23;18013:9;18000:23;;;;;;;;;;;;;;;;;;;;;;;;;17997:295;;;18063:44;18092:14;;18063:24;18074:12;;18063:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;18051:56;;17997:295;;;18164:18;;;;;;;;;;;18161:116;;;18219:38;18253:3;18219:29;18230:17;;18219:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;18207:50;;18161:116;17997:295;17856:436;18323:1;18311:9;:13;18308:185;;;18372:39;18401:9;18372;:24;18390:4;18372:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;18345:9;:24;18363:4;18345:24;;;;;;;;;;;;;;;:66;;;;18460:4;18435:42;;18444:6;18435:42;;;18467:9;18435:42;;;;;;:::i;:::-;;;;;;;;18308:185;18516:21;18527:9;18516:6;:10;;:21;;;;:::i;:::-;18509:28;;;17686:880;;;;;:::o;3081:250::-;3139:7;3168:1;3163;:6;3159:47;;3193:1;3186:8;;;;3159:47;3218:9;3234:1;3230;:5;;;;:::i;:::-;3218:17;;3263:1;3258;3254;:5;;;;:::i;:::-;:10;3246:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3322:1;3315:8;;;3081:250;;;;;:::o;3339:132::-;3397:7;3424:39;3428:1;3431;3424:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3417:46;;3339:132;;;;:::o;19730:654::-;19856:21;19894:1;19880:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19856:40;;19925:4;19907;19912:1;19907:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19951:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19941:4;19946:1;19941:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;19982:58;19999:4;20014:11;;;;;;;;;;;20028;19982:8;:58::i;:::-;20079:11;;;;;;;;;;;:62;;;20156:11;20182:1;20226:4;20253;20289:15;20079:236;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20341:35;20358:11;20371:4;20341:35;;;;;;;:::i;:::-;;;;;;;;19785:599;19730:654;:::o;20392:515::-;20540:58;20557:4;20572:11;;;;;;;;;;;20586;20540:8;:58::i;:::-;20641:11;;;;;;;;;;;:27;;;20676:9;20709:4;20729:11;20755:1;20798;20841:17;;;;;;;;;;;20873:15;20641:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20392:515;;:::o;3479:278::-;3565:7;3597:1;3593;:5;3600:12;3585:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3624:9;3640:1;3636;:5;;;;:::i;:::-;3624:17;;3748:1;3741:8;;;3479:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:96::-;1953:7;1982:24;2000:5;1982:24;:::i;:::-;1971:35;;1916:96;;;:::o;2018:118::-;2105:24;2123:5;2105:24;:::i;:::-;2100:3;2093:37;2018:118;;:::o;2142:222::-;2235:4;2273:2;2262:9;2258:18;2250:26;;2286:71;2354:1;2343:9;2339:17;2330:6;2286:71;:::i;:::-;2142:222;;;;:::o;2451:117::-;2560:1;2557;2550:12;2574:117;2683:1;2680;2673:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:122::-;3043:24;3061:5;3043:24;:::i;:::-;3036:5;3033:35;3023:63;;3082:1;3079;3072:12;3023:63;2970:122;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3243:474::-;3311:6;3319;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3621:2;3647:53;3692:7;3683:6;3672:9;3668:22;3647:53;:::i;:::-;3637:63;;3592:118;3243:474;;;;;:::o;3723:90::-;3757:7;3800:5;3793:13;3786:21;3775:32;;3723:90;;;:::o;3819:109::-;3900:21;3915:5;3900:21;:::i;:::-;3895:3;3888:34;3819:109;;:::o;3934:210::-;4021:4;4059:2;4048:9;4044:18;4036:26;;4072:65;4134:1;4123:9;4119:17;4110:6;4072:65;:::i;:::-;3934:210;;;;:::o;4150:117::-;4259:1;4256;4249:12;4273:117;4382:1;4379;4372:12;4396:117;4505:1;4502;4495:12;4536:568;4609:8;4619:6;4669:3;4662:4;4654:6;4650:17;4646:27;4636:122;;4677:79;;:::i;:::-;4636:122;4790:6;4777:20;4767:30;;4820:18;4812:6;4809:30;4806:117;;;4842:79;;:::i;:::-;4806:117;4956:4;4948:6;4944:17;4932:29;;5010:3;5002:4;4994:6;4990:17;4980:8;4976:32;4973:41;4970:128;;;5017:79;;:::i;:::-;4970:128;4536:568;;;;;:::o;5110:116::-;5180:21;5195:5;5180:21;:::i;:::-;5173:5;5170:32;5160:60;;5216:1;5213;5206:12;5160:60;5110:116;:::o;5232:133::-;5275:5;5313:6;5300:20;5291:29;;5329:30;5353:5;5329:30;:::i;:::-;5232:133;;;;:::o;5371:698::-;5463:6;5471;5479;5528:2;5516:9;5507:7;5503:23;5499:32;5496:119;;;5534:79;;:::i;:::-;5496:119;5682:1;5671:9;5667:17;5654:31;5712:18;5704:6;5701:30;5698:117;;;5734:79;;:::i;:::-;5698:117;5847:80;5919:7;5910:6;5899:9;5895:22;5847:80;:::i;:::-;5829:98;;;;5625:312;5976:2;6002:50;6044:7;6035:6;6024:9;6020:22;6002:50;:::i;:::-;5992:60;;5947:115;5371:698;;;;;:::o;6075:619::-;6152:6;6160;6168;6217:2;6205:9;6196:7;6192:23;6188:32;6185:119;;;6223:79;;:::i;:::-;6185:119;6343:1;6368:53;6413:7;6404:6;6393:9;6389:22;6368:53;:::i;:::-;6358:63;;6314:117;6470:2;6496:53;6541:7;6532:6;6521:9;6517:22;6496:53;:::i;:::-;6486:63;;6441:118;6598:2;6624:53;6669:7;6660:6;6649:9;6645:22;6624:53;:::i;:::-;6614:63;;6569:118;6075:619;;;;;:::o;6700:329::-;6759:6;6808:2;6796:9;6787:7;6783:23;6779:32;6776:119;;;6814:79;;:::i;:::-;6776:119;6934:1;6959:53;7004:7;6995:6;6984:9;6980:22;6959:53;:::i;:::-;6949:63;;6905:117;6700:329;;;;:::o;7035:86::-;7070:7;7110:4;7103:5;7099:16;7088:27;;7035:86;;;:::o;7127:112::-;7210:22;7226:5;7210:22;:::i;:::-;7205:3;7198:35;7127:112;;:::o;7245:214::-;7334:4;7372:2;7361:9;7357:18;7349:26;;7385:67;7449:1;7438:9;7434:17;7425:6;7385:67;:::i;:::-;7245:214;;;;:::o;7465:323::-;7521:6;7570:2;7558:9;7549:7;7545:23;7541:32;7538:119;;;7576:79;;:::i;:::-;7538:119;7696:1;7721:50;7763:7;7754:6;7743:9;7739:22;7721:50;:::i;:::-;7711:60;;7667:114;7465:323;;;;:::o;7794:329::-;7853:6;7902:2;7890:9;7881:7;7877:23;7873:32;7870:119;;;7908:79;;:::i;:::-;7870:119;8028:1;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7999:117;7794:329;;;;:::o;8129:468::-;8194:6;8202;8251:2;8239:9;8230:7;8226:23;8222:32;8219:119;;;8257:79;;:::i;:::-;8219:119;8377:1;8402:53;8447:7;8438:6;8427:9;8423:22;8402:53;:::i;:::-;8392:63;;8348:117;8504:2;8530:50;8572:7;8563:6;8552:9;8548:22;8530:50;:::i;:::-;8520:60;;8475:115;8129:468;;;;;:::o;8603:474::-;8671:6;8679;8728:2;8716:9;8707:7;8703:23;8699:32;8696:119;;;8734:79;;:::i;:::-;8696:119;8854:1;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8825:117;8981:2;9007:53;9052:7;9043:6;9032:9;9028:22;9007:53;:::i;:::-;8997:63;;8952:118;8603:474;;;;;:::o;9083:60::-;9111:3;9132:5;9125:12;;9083:60;;;:::o;9149:142::-;9199:9;9232:53;9250:34;9259:24;9277:5;9259:24;:::i;:::-;9250:34;:::i;:::-;9232:53;:::i;:::-;9219:66;;9149:142;;;:::o;9297:126::-;9347:9;9380:37;9411:5;9380:37;:::i;:::-;9367:50;;9297:126;;;:::o;9429:150::-;9503:9;9536:37;9567:5;9536:37;:::i;:::-;9523:50;;9429:150;;;:::o;9585:179::-;9696:61;9751:5;9696:61;:::i;:::-;9691:3;9684:74;9585:179;;:::o;9770:270::-;9887:4;9925:2;9914:9;9910:18;9902:26;;9938:95;10030:1;10019:9;10015:17;10006:6;9938:95;:::i;:::-;9770:270;;;;:::o;10046:141::-;10111:9;10144:37;10175:5;10144:37;:::i;:::-;10131:50;;10046:141;;;:::o;10193:161::-;10295:52;10341:5;10295:52;:::i;:::-;10290:3;10283:65;10193:161;;:::o;10360:252::-;10468:4;10506:2;10495:9;10491:18;10483:26;;10519:86;10602:1;10591:9;10587:17;10578:6;10519:86;:::i;:::-;10360:252;;;;:::o;10618:111::-;10670:7;10699:24;10717:5;10699:24;:::i;:::-;10688:35;;10618:111;;;:::o;10735:152::-;10823:39;10856:5;10823:39;:::i;:::-;10816:5;10813:50;10803:78;;10877:1;10874;10867:12;10803:78;10735:152;:::o;10893:169::-;10954:5;10992:6;10979:20;10970:29;;11008:48;11050:5;11008:48;:::i;:::-;10893:169;;;;:::o;11068:649::-;11160:6;11168;11176;11225:2;11213:9;11204:7;11200:23;11196:32;11193:119;;;11231:79;;:::i;:::-;11193:119;11351:1;11376:68;11436:7;11427:6;11416:9;11412:22;11376:68;:::i;:::-;11366:78;;11322:132;11493:2;11519:53;11564:7;11555:6;11544:9;11540:22;11519:53;:::i;:::-;11509:63;;11464:118;11621:2;11647:53;11692:7;11683:6;11672:9;11668:22;11647:53;:::i;:::-;11637:63;;11592:118;11068:649;;;;;:::o;11723:474::-;11791:6;11799;11848:2;11836:9;11827:7;11823:23;11819:32;11816:119;;;11854:79;;:::i;:::-;11816:119;11974:1;11999:53;12044:7;12035:6;12024:9;12020:22;11999:53;:::i;:::-;11989:63;;11945:117;12101:2;12127:53;12172:7;12163:6;12152:9;12148:22;12127:53;:::i;:::-;12117:63;;12072:118;11723:474;;;;;:::o;12203:468::-;12268:6;12276;12325:2;12313:9;12304:7;12300:23;12296:32;12293:119;;;12331:79;;:::i;:::-;12293:119;12451:1;12476:50;12518:7;12509:6;12498:9;12494:22;12476:50;:::i;:::-;12466:60;;12422:114;12575:2;12601:53;12646:7;12637:6;12626:9;12622:22;12601:53;:::i;:::-;12591:63;;12546:118;12203:468;;;;;:::o;12677:180::-;12725:77;12722:1;12715:88;12822:4;12819:1;12812:15;12846:4;12843:1;12836:15;12863:320;12907:6;12944:1;12938:4;12934:12;12924:22;;12991:1;12985:4;12981:12;13012:18;13002:81;;13068:4;13060:6;13056:17;13046:27;;13002:81;13130:2;13122:6;13119:14;13099:18;13096:38;13093:84;;13149:18;;:::i;:::-;13093:84;12914:269;12863:320;;;:::o;13189:182::-;13329:34;13325:1;13317:6;13313:14;13306:58;13189:182;:::o;13377:366::-;13519:3;13540:67;13604:2;13599:3;13540:67;:::i;:::-;13533:74;;13616:93;13705:3;13616:93;:::i;:::-;13734:2;13729:3;13725:12;13718:19;;13377:366;;;:::o;13749:419::-;13915:4;13953:2;13942:9;13938:18;13930:26;;14002:9;13996:4;13992:20;13988:1;13977:9;13973:17;13966:47;14030:131;14156:4;14030:131;:::i;:::-;14022:139;;13749:419;;;:::o;14174:180::-;14222:77;14219:1;14212:88;14319:4;14316:1;14309:15;14343:4;14340:1;14333:15;14360:180;14408:77;14405:1;14398:88;14505:4;14502:1;14495:15;14529:4;14526:1;14519:15;14546:233;14585:3;14608:24;14626:5;14608:24;:::i;:::-;14599:33;;14654:66;14647:5;14644:77;14641:103;;14724:18;;:::i;:::-;14641:103;14771:1;14764:5;14760:13;14753:20;;14546:233;;;:::o;14785:172::-;14925:24;14921:1;14913:6;14909:14;14902:48;14785:172;:::o;14963:366::-;15105:3;15126:67;15190:2;15185:3;15126:67;:::i;:::-;15119:74;;15202:93;15291:3;15202:93;:::i;:::-;15320:2;15315:3;15311:12;15304:19;;14963:366;;;:::o;15335:419::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15588:9;15582:4;15578:20;15574:1;15563:9;15559:17;15552:47;15616:131;15742:4;15616:131;:::i;:::-;15608:139;;15335:419;;;:::o;15760:165::-;15900:17;15896:1;15888:6;15884:14;15877:41;15760:165;:::o;15931:366::-;16073:3;16094:67;16158:2;16153:3;16094:67;:::i;:::-;16087:74;;16170:93;16259:3;16170:93;:::i;:::-;16288:2;16283:3;16279:12;16272:19;;15931:366;;;:::o;16303:419::-;16469:4;16507:2;16496:9;16492:18;16484:26;;16556:9;16550:4;16546:20;16542:1;16531:9;16527:17;16520:47;16584:131;16710:4;16584:131;:::i;:::-;16576:139;;16303:419;;;:::o;16728:332::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16900:71;16968:1;16957:9;16953:17;16944:6;16900:71;:::i;:::-;16981:72;17049:2;17038:9;17034:18;17025:6;16981:72;:::i;:::-;16728:332;;;;;:::o;17066:147::-;17167:11;17204:3;17189:18;;17066:147;;;;:::o;17219:114::-;;:::o;17339:398::-;17498:3;17519:83;17600:1;17595:3;17519:83;:::i;:::-;17512:90;;17611:93;17700:3;17611:93;:::i;:::-;17729:1;17724:3;17720:11;17713:18;;17339:398;;;:::o;17743:379::-;17927:3;17949:147;18092:3;17949:147;:::i;:::-;17942:154;;18113:3;18106:10;;17743:379;;;:::o;18128:170::-;18268:22;18264:1;18256:6;18252:14;18245:46;18128:170;:::o;18304:366::-;18446:3;18467:67;18531:2;18526:3;18467:67;:::i;:::-;18460:74;;18543:93;18632:3;18543:93;:::i;:::-;18661:2;18656:3;18652:12;18645:19;;18304:366;;;:::o;18676:419::-;18842:4;18880:2;18869:9;18865:18;18857:26;;18929:9;18923:4;18919:20;18915:1;18904:9;18900:17;18893:47;18957:131;19083:4;18957:131;:::i;:::-;18949:139;;18676:419;;;:::o;19101:225::-;19241:34;19237:1;19229:6;19225:14;19218:58;19310:8;19305:2;19297:6;19293:15;19286:33;19101:225;:::o;19332:366::-;19474:3;19495:67;19559:2;19554:3;19495:67;:::i;:::-;19488:74;;19571:93;19660:3;19571:93;:::i;:::-;19689:2;19684:3;19680:12;19673:19;;19332:366;;;:::o;19704:419::-;19870:4;19908:2;19897:9;19893:18;19885:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19985:131;20111:4;19985:131;:::i;:::-;19977:139;;19704:419;;;:::o;20129:85::-;20174:7;20203:5;20192:16;;20129:85;;;:::o;20220:158::-;20278:9;20311:61;20329:42;20338:32;20364:5;20338:32;:::i;:::-;20329:42;:::i;:::-;20311:61;:::i;:::-;20298:74;;20220:158;;;:::o;20384:147::-;20479:45;20518:5;20479:45;:::i;:::-;20474:3;20467:58;20384:147;;:::o;20537:348::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20717:71;20785:1;20774:9;20770:17;20761:6;20717:71;:::i;:::-;20798:80;20874:2;20863:9;20859:18;20850:6;20798:80;:::i;:::-;20537:348;;;;;:::o;20891:223::-;21031:34;21027:1;21019:6;21015:14;21008:58;21100:6;21095:2;21087:6;21083:15;21076:31;20891:223;:::o;21120:366::-;21262:3;21283:67;21347:2;21342:3;21283:67;:::i;:::-;21276:74;;21359:93;21448:3;21359:93;:::i;:::-;21477:2;21472:3;21468:12;21461:19;;21120:366;;;:::o;21492:419::-;21658:4;21696:2;21685:9;21681:18;21673:26;;21745:9;21739:4;21735:20;21731:1;21720:9;21716:17;21709:47;21773:131;21899:4;21773:131;:::i;:::-;21765:139;;21492:419;;;:::o;21917:221::-;22057:34;22053:1;22045:6;22041:14;22034:58;22126:4;22121:2;22113:6;22109:15;22102:29;21917:221;:::o;22144:366::-;22286:3;22307:67;22371:2;22366:3;22307:67;:::i;:::-;22300:74;;22383:93;22472:3;22383:93;:::i;:::-;22501:2;22496:3;22492:12;22485:19;;22144:366;;;:::o;22516:419::-;22682:4;22720:2;22709:9;22705:18;22697:26;;22769:9;22763:4;22759:20;22755:1;22744:9;22740:17;22733:47;22797:131;22923:4;22797:131;:::i;:::-;22789:139;;22516:419;;;:::o;22941:224::-;23081:34;23077:1;23069:6;23065:14;23058:58;23150:7;23145:2;23137:6;23133:15;23126:32;22941:224;:::o;23171:366::-;23313:3;23334:67;23398:2;23393:3;23334:67;:::i;:::-;23327:74;;23410:93;23499:3;23410:93;:::i;:::-;23528:2;23523:3;23519:12;23512:19;;23171:366;;;:::o;23543:419::-;23709:4;23747:2;23736:9;23732:18;23724:26;;23796:9;23790:4;23786:20;23782:1;23771:9;23767:17;23760:47;23824:131;23950:4;23824:131;:::i;:::-;23816:139;;23543:419;;;:::o;23968:222::-;24108:34;24104:1;24096:6;24092:14;24085:58;24177:5;24172:2;24164:6;24160:15;24153:30;23968:222;:::o;24196:366::-;24338:3;24359:67;24423:2;24418:3;24359:67;:::i;:::-;24352:74;;24435:93;24524:3;24435:93;:::i;:::-;24553:2;24548:3;24544:12;24537:19;;24196:366;;;:::o;24568:419::-;24734:4;24772:2;24761:9;24757:18;24749:26;;24821:9;24815:4;24811:20;24807:1;24796:9;24792:17;24785:47;24849:131;24975:4;24849:131;:::i;:::-;24841:139;;24568:419;;;:::o;24993:228::-;25133:34;25129:1;25121:6;25117:14;25110:58;25202:11;25197:2;25189:6;25185:15;25178:36;24993:228;:::o;25227:366::-;25369:3;25390:67;25454:2;25449:3;25390:67;:::i;:::-;25383:74;;25466:93;25555:3;25466:93;:::i;:::-;25584:2;25579:3;25575:12;25568:19;;25227:366;;;:::o;25599:419::-;25765:4;25803:2;25792:9;25788:18;25780:26;;25852:9;25846:4;25842:20;25838:1;25827:9;25823:17;25816:47;25880:131;26006:4;25880:131;:::i;:::-;25872:139;;25599:419;;;:::o;26024:169::-;26164:21;26160:1;26152:6;26148:14;26141:45;26024:169;:::o;26199:366::-;26341:3;26362:67;26426:2;26421:3;26362:67;:::i;:::-;26355:74;;26438:93;26527:3;26438:93;:::i;:::-;26556:2;26551:3;26547:12;26540:19;;26199:366;;;:::o;26571:419::-;26737:4;26775:2;26764:9;26760:18;26752:26;;26824:9;26818:4;26814:20;26810:1;26799:9;26795:17;26788:47;26852:131;26978:4;26852:131;:::i;:::-;26844:139;;26571:419;;;:::o;26996:179::-;27136:31;27132:1;27124:6;27120:14;27113:55;26996:179;:::o;27181:366::-;27323:3;27344:67;27408:2;27403:3;27344:67;:::i;:::-;27337:74;;27420:93;27509:3;27420:93;:::i;:::-;27538:2;27533:3;27529:12;27522:19;;27181:366;;;:::o;27553:419::-;27719:4;27757:2;27746:9;27742:18;27734:26;;27806:9;27800:4;27796:20;27792:1;27781:9;27777:17;27770:47;27834:131;27960:4;27834:131;:::i;:::-;27826:139;;27553:419;;;:::o;27978:191::-;28018:3;28037:20;28055:1;28037:20;:::i;:::-;28032:25;;28071:20;28089:1;28071:20;:::i;:::-;28066:25;;28114:1;28111;28107:9;28100:16;;28135:3;28132:1;28129:10;28126:36;;;28142:18;;:::i;:::-;28126:36;27978:191;;;;:::o;28175:227::-;28315:34;28311:1;28303:6;28299:14;28292:58;28384:10;28379:2;28371:6;28367:15;28360:35;28175:227;:::o;28408:366::-;28550:3;28571:67;28635:2;28630:3;28571:67;:::i;:::-;28564:74;;28647:93;28736:3;28647:93;:::i;:::-;28765:2;28760:3;28756:12;28749:19;;28408:366;;;:::o;28780:419::-;28946:4;28984:2;28973:9;28969:18;28961:26;;29033:9;29027:4;29023:20;29019:1;29008:9;29004:17;28997:47;29061:131;29187:4;29061:131;:::i;:::-;29053:139;;28780:419;;;:::o;29205:177::-;29345:29;29341:1;29333:6;29329:14;29322:53;29205:177;:::o;29388:366::-;29530:3;29551:67;29615:2;29610:3;29551:67;:::i;:::-;29544:74;;29627:93;29716:3;29627:93;:::i;:::-;29745:2;29740:3;29736:12;29729:19;;29388:366;;;:::o;29760:419::-;29926:4;29964:2;29953:9;29949:18;29941:26;;30013:9;30007:4;30003:20;29999:1;29988:9;29984:17;29977:47;30041:131;30167:4;30041:131;:::i;:::-;30033:139;;29760:419;;;:::o;30185:194::-;30225:4;30245:20;30263:1;30245:20;:::i;:::-;30240:25;;30279:20;30297:1;30279:20;:::i;:::-;30274:25;;30323:1;30320;30316:9;30308:17;;30347:1;30341:4;30338:11;30335:37;;;30352:18;;:::i;:::-;30335:37;30185:194;;;;:::o;30385:177::-;30525:29;30521:1;30513:6;30509:14;30502:53;30385:177;:::o;30568:366::-;30710:3;30731:67;30795:2;30790:3;30731:67;:::i;:::-;30724:74;;30807:93;30896:3;30807:93;:::i;:::-;30925:2;30920:3;30916:12;30909:19;;30568:366;;;:::o;30940:419::-;31106:4;31144:2;31133:9;31129:18;31121:26;;31193:9;31187:4;31183:20;31179:1;31168:9;31164:17;31157:47;31221:131;31347:4;31221:131;:::i;:::-;31213:139;;30940:419;;;:::o;31365:410::-;31405:7;31428:20;31446:1;31428:20;:::i;:::-;31423:25;;31462:20;31480:1;31462:20;:::i;:::-;31457:25;;31517:1;31514;31510:9;31539:30;31557:11;31539:30;:::i;:::-;31528:41;;31718:1;31709:7;31705:15;31702:1;31699:22;31679:1;31672:9;31652:83;31629:139;;31748:18;;:::i;:::-;31629:139;31413:362;31365:410;;;;:::o;31781:180::-;31829:77;31826:1;31819:88;31926:4;31923:1;31916:15;31950:4;31947:1;31940:15;31967:185;32007:1;32024:20;32042:1;32024:20;:::i;:::-;32019:25;;32058:20;32076:1;32058:20;:::i;:::-;32053:25;;32097:1;32087:35;;32102:18;;:::i;:::-;32087:35;32144:1;32141;32137:9;32132:14;;31967:185;;;;:::o;32158:220::-;32298:34;32294:1;32286:6;32282:14;32275:58;32367:3;32362:2;32354:6;32350:15;32343:28;32158:220;:::o;32384:366::-;32526:3;32547:67;32611:2;32606:3;32547:67;:::i;:::-;32540:74;;32623:93;32712:3;32623:93;:::i;:::-;32741:2;32736:3;32732:12;32725:19;;32384:366;;;:::o;32756:419::-;32922:4;32960:2;32949:9;32945:18;32937:26;;33009:9;33003:4;32999:20;32995:1;32984:9;32980:17;32973:47;33037:131;33163:4;33037:131;:::i;:::-;33029:139;;32756:419;;;:::o;33181:180::-;33229:77;33226:1;33219:88;33326:4;33323:1;33316:15;33350:4;33347:1;33340:15;33367:143;33424:5;33455:6;33449:13;33440:22;;33471:33;33498:5;33471:33;:::i;:::-;33367:143;;;;:::o;33516:351::-;33586:6;33635:2;33623:9;33614:7;33610:23;33606:32;33603:119;;;33641:79;;:::i;:::-;33603:119;33761:1;33786:64;33842:7;33833:6;33822:9;33818:22;33786:64;:::i;:::-;33776:74;;33732:128;33516:351;;;;:::o;33873:114::-;33940:6;33974:5;33968:12;33958:22;;33873:114;;;:::o;33993:184::-;34092:11;34126:6;34121:3;34114:19;34166:4;34161:3;34157:14;34142:29;;33993:184;;;;:::o;34183:132::-;34250:4;34273:3;34265:11;;34303:4;34298:3;34294:14;34286:22;;34183:132;;;:::o;34321:108::-;34398:24;34416:5;34398:24;:::i;:::-;34393:3;34386:37;34321:108;;:::o;34435:179::-;34504:10;34525:46;34567:3;34559:6;34525:46;:::i;:::-;34603:4;34598:3;34594:14;34580:28;;34435:179;;;;:::o;34620:113::-;34690:4;34722;34717:3;34713:14;34705:22;;34620:113;;;:::o;34769:732::-;34888:3;34917:54;34965:5;34917:54;:::i;:::-;34987:86;35066:6;35061:3;34987:86;:::i;:::-;34980:93;;35097:56;35147:5;35097:56;:::i;:::-;35176:7;35207:1;35192:284;35217:6;35214:1;35211:13;35192:284;;;35293:6;35287:13;35320:63;35379:3;35364:13;35320:63;:::i;:::-;35313:70;;35406:60;35459:6;35406:60;:::i;:::-;35396:70;;35252:224;35239:1;35236;35232:9;35227:14;;35192:284;;;35196:14;35492:3;35485:10;;34893:608;;;34769:732;;;;:::o;35507:831::-;35770:4;35808:3;35797:9;35793:19;35785:27;;35822:71;35890:1;35879:9;35875:17;35866:6;35822:71;:::i;:::-;35903:80;35979:2;35968:9;35964:18;35955:6;35903:80;:::i;:::-;36030:9;36024:4;36020:20;36015:2;36004:9;36000:18;35993:48;36058:108;36161:4;36152:6;36058:108;:::i;:::-;36050:116;;36176:72;36244:2;36233:9;36229:18;36220:6;36176:72;:::i;:::-;36258:73;36326:3;36315:9;36311:19;36302:6;36258:73;:::i;:::-;35507:831;;;;;;;;:::o;36344:483::-;36515:4;36553:2;36542:9;36538:18;36530:26;;36566:71;36634:1;36623:9;36619:17;36610:6;36566:71;:::i;:::-;36684:9;36678:4;36674:20;36669:2;36658:9;36654:18;36647:48;36712:108;36815:4;36806:6;36712:108;:::i;:::-;36704:116;;36344:483;;;;;:::o;36833:807::-;37082:4;37120:3;37109:9;37105:19;37097:27;;37134:71;37202:1;37191:9;37187:17;37178:6;37134:71;:::i;:::-;37215:72;37283:2;37272:9;37268:18;37259:6;37215:72;:::i;:::-;37297:80;37373:2;37362:9;37358:18;37349:6;37297:80;:::i;:::-;37387;37463:2;37452:9;37448:18;37439:6;37387:80;:::i;:::-;37477:73;37545:3;37534:9;37530:19;37521:6;37477:73;:::i;:::-;37560;37628:3;37617:9;37613:19;37604:6;37560:73;:::i;:::-;36833:807;;;;;;;;;:::o;37646:143::-;37703:5;37734:6;37728:13;37719:22;;37750:33;37777:5;37750:33;:::i;:::-;37646:143;;;;:::o;37795:663::-;37883:6;37891;37899;37948:2;37936:9;37927:7;37923:23;37919:32;37916:119;;;37954:79;;:::i;:::-;37916:119;38074:1;38099:64;38155:7;38146:6;38135:9;38131:22;38099:64;:::i;:::-;38089:74;;38045:128;38212:2;38238:64;38294:7;38285:6;38274:9;38270:22;38238:64;:::i;:::-;38228:74;;38183:129;38351:2;38377:64;38433:7;38424:6;38413:9;38409:22;38377:64;:::i;:::-;38367:74;;38322:129;37795:663;;;;;:::o
Swarm Source
ipfs://e16ea25a242fa47601dde18b3b9b6ec85eeff8c63177fa7ba847725ce0b684dc
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.