ERC-20
Overview
Max Total Supply
100,000,000,000,000 $MEGUMIN
Holders
31
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
32,887,485,112,321.103704701227069311 $MEGUMINValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
KittyMegumin
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-17 */ // TELEGRAM : https://t.me/meguminkittyerc20 // WEBSITE : https://www.meguminkitty.fun/ // TWITTER : https://twitter.com/MeguminKitty //SPDX-License-Identifier: Unlicensed pragma solidity ^0.7.4; 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) { // Solidity only automatically asserts when dividing by 0 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; } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // 0xc778417e063141139fce010982780140aa0cd5ab ropsten IUniswapV2Router router; // 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 MAINNET WETH address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 24 hours; uint256 public minDistribution = 1 * (10 ** 18) / (100); // Minimum sending is 0.01 ETH uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IUniswapV2Router(_router) : IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { totalDividends = totalDividends.add(msg.value); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(msg.value).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function TimeLeftToDistribute(address shareholder) public view returns (uint256) { uint256 timeleft; if (shareholderClaims[shareholder] + minPeriod > block.timestamp) { timeleft = shareholderClaims[shareholder] + minPeriod - block.timestamp; } else { timeleft = 0; } return timeleft; } function distributeDividend(address shareholder) public payable { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); payable(shareholder).transfer(amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract KittyMegumin is IERC20, Auth { using SafeMath for uint256; address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "Megumin Kitty"; string constant _symbol = "$MEGUMIN"; uint8 constant _decimals = 18; uint256 _totalSupply = 100_000_000_000_000 * (10 ** _decimals); uint256 public _maxBuyTxAmount = _totalSupply * 1/100; uint256 public _maxSellTxAmount = _maxBuyTxAmount; uint256 public _maxWalletAmount = _maxBuyTxAmount; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) public automatedMarketMakerPairs; mapping (address => uint256) private _buyMap; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isMaxWalletExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isDividendExempt; uint256 public reflectionFee = 200; uint256 public marketingFee = 800; uint256 public liquidityFee = 100; uint256 public devFee = 150; // 25% fee uint256 public constant AD_24HR_reflectionFee = 400; uint256 public constant AD_24HR_marketingFee = 1800; // 18% uint256 public constant AD_24HR_liquidityFee = 100; uint256 public constant AD_24HR_devFee = 200; // 2% uint256 public totalFee = reflectionFee.add(marketingFee).add(liquidityFee).add(devFee); uint256 public AD_24HR_totalFee = AD_24HR_reflectionFee.add(AD_24HR_marketingFee).add(AD_24HR_liquidityFee).add(AD_24HR_devFee); address public marketingFeeReceiver; address public devFeeReceiver; address public liquidityFeeReceiver; IUniswapV2Router public router; address public pair; event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); DividendDistributor public distributor; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 20000; // 0.005% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } bool public tradingOn = false; constructor () Auth(msg.sender) { router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _allowances[address(this)][address(router)] = uint256(-1); pair = IUniswapV2Factory(router.factory()).createPair(WETH, address(this)); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[DEAD] = true; isFeeExempt[marketingFeeReceiver] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[marketingFeeReceiver] = true; isMaxWalletExempt[msg.sender] = true; isMaxWalletExempt[pair] = true; isMaxWalletExempt[address(this)] = true; isMaxWalletExempt[DEAD] = true; isMaxWalletExempt[marketingFeeReceiver] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[marketingFeeReceiver] = true; marketingFeeReceiver = 0x8A722DE0803e0048E807A0BEe0f0a179d7EDB4c3; devFeeReceiver = 0x4cFB05091aEBbDF0a74F5d843a9D6E988FC563a2; liquidityFeeReceiver = msg.sender; automatedMarketMakerPairs[pair] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function getUnpaidEarnings(address shareholder) public view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } function claimDividend() public { distributor.claimDividend(); } function TimeLeftToDistribute(address shareholder) public view returns (uint256) { return distributor.TimeLeftToDistribute(shareholder); } function totalShares() public view returns (uint256) { return distributor.totalShares(); } function totalDividends() public view returns (uint256) { return distributor.totalDividends(); } function totalDistributed() public view returns (uint256) { return distributor.totalDistributed(); } function dividendsPerShare() public view returns (uint256) { return distributor.dividendsPerShare(); } function minDistribution() public view returns (uint256) { return distributor.minDistribution(); } // making functions to get distributor info for website function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, uint256(-1)); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } // Turn on trading (it can't be turend off again) function enableTrading() public onlyOwner { if (!tradingOn) { tradingOn = true; } } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != uint256(-1)){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (sender != owner && recipient != owner) { require(tradingOn, "Trading is not turned on yet"); } if(inSwap){ return _basicTransfer(sender, recipient, amount); } checkTxLimit(sender, recipient, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} if (_isBuy(sender) && _buyMap[recipient] == 0) { _buyMap[recipient] = block.timestamp; } emit Transfer(sender, recipient, amountReceived); 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); checkWalletLimit(recipient); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { if (automatedMarketMakerPairs[sender]) { if (!isTxLimitExempt[recipient]) { require(amount <= _maxBuyTxAmount, "TX Limit Exceeded"); } if (!isMaxWalletExempt[recipient]) { require((_balances[recipient] + amount) <= _maxWalletAmount, "Wallet Amount Limit Exceeded"); } } else if (automatedMarketMakerPairs[recipient]) { if (!isTxLimitExempt[sender]) { require(amount <= _maxSellTxAmount); } } } function checkWalletLimit(address recipient) internal view { require(_balances[recipient] <= _maxWalletAmount || isMaxWalletExempt[recipient], "Wallet Amount Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function _isBuy(address _sender) private view returns (bool) { return _sender == pair; } function originalPurchase(address account) public view returns (uint256) { return _buyMap[account]; } // ----------------------------------------------------------------------------------- function takeFee(address sender, uint256 amount) internal returns (uint256) { // ADD ANTI DUMP uint256 feeAmount; if (originalPurchase(sender) !=0 && ((originalPurchase(sender) + (10 minutes)) >= block.timestamp)) { feeAmount = amount.mul(AD_24HR_totalFee).div(10000); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } else { feeAmount = amount.mul(totalFee).div(10000); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 amountToSwap = _balances[address(this)]; uint256 amountReflection = amountToSwap.mul(reflectionFee).div(totalFee); uint256 amountMarketing = amountToSwap.mul(marketingFee).div(totalFee); uint256 amountDev = amountToSwap.mul(devFee).div(totalFee); uint256 amountLiquidity = amountToSwap.mul(liquidityFee).div(totalFee); swapAndSendToMarketing(amountMarketing); swapAndSendToRef(amountReflection); swapAndLiquify(amountLiquidity); swapAndSendToDev(amountDev); } // ----------------------------------------------------------------------------------- function swapAndSendToMarketing(uint256 tokens) private { uint256 initialETHBalance = address(this).balance; swapTokensForEth(tokens); uint256 newETHBalance = address(this).balance.sub(initialETHBalance); payable(marketingFeeReceiver).transfer(newETHBalance); } function swapAndSendToDev(uint256 tokens) private { uint256 initialETHBalance = address(this).balance; swapTokensForEth(tokens); uint256 newETHBalance = address(this).balance.sub(initialETHBalance); payable(devFeeReceiver).transfer(newETHBalance); } function swapAndSendToRef(uint256 tokens) private { uint256 initialETHBalance = address(this).balance; swapTokensForEth(tokens); uint256 newETHBalance = address(this).balance.sub(initialETHBalance); try distributor.deposit{value: newETHBalance}() {} catch {} } function swapAndLiquify(uint256 tokens) private { // split the contract balance into halves uint256 half = tokens.div(2); uint256 otherhalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherhalf, newBalance); emit SwapAndLiquify(half, newBalance, otherhalf); } 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] = router.WETH(); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityFeeReceiver, block.timestamp ); } function setTx_Wallet_Limits(uint256 maxBuyTxAmount, uint256 maxSellTxAmount, uint256 maxWalletAmt) external authorized { require(maxBuyTxAmount >= 500000, "Maxbuy cant be below 0.5%"); require(maxSellTxAmount >= 500000, "Maxsell cant be below 0.5%"); _maxBuyTxAmount = maxBuyTxAmount * (10 ** _decimals); _maxSellTxAmount = maxSellTxAmount * (10 ** _decimals); _maxWalletAmount = maxWalletAmt * (10 ** _decimals); } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsMaxWalletExempt(address holder, bool exempt) external authorized { isMaxWalletExempt[holder] = exempt; } function setFees(uint256 _reflectionFee, uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external authorized { reflectionFee = _reflectionFee; marketingFee = _marketingFee; liquidityFee = _liquidityFee; devFee = _devFee; totalFee = _reflectionFee.add(_marketingFee).add(_liquidityFee).add(_devFee); } function setWalletFeeReceivers(address _marketingFeeReceiver, address _devFeeReceiver) external authorized { marketingFeeReceiver = _marketingFeeReceiver; devFeeReceiver = _devFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount * (10 ** _decimals); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function setAutomatedMarketMakerPair(address _pair, bool value) public onlyOwner { require(_pair != pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(_pair, value); isMaxWalletExempt[pair] = true; isDividendExempt[pair] = true; } function _setAutomatedMarketMakerPair(address _pair, bool value) private { require(automatedMarketMakerPairs[_pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[_pair] = value; if(value) { isDividendExempt[_pair] = true; } emit SetAutomatedMarketMakerPair(_pair, value); } // will only be used if the factory fucks up on launch and calculates the wrong pair. function setpair(address _pair) public onlyOwner { automatedMarketMakerPairs[_pair] = true; isMaxWalletExempt[_pair] = true; isDividendExempt[_pair] = true; pair = _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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":"AD_24HR_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AD_24HR_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AD_24HR_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AD_24HR_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AD_24HR_totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"TimeLeftToDistribute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","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":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"originalPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFees","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","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":"maxBuyTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmt","type":"uint256"}],"name":"setTx_Wallet_Limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setWalletFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setpair","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","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":"tradingOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a655af3107a4000026005556064600160055402816200010157fe5b0460065560065460075560065460085560c8601155610320601255606460135560966014556200017a601454620001666013546200015260125460115462000fa060201b6200376c1790919060201c565b62000fa060201b6200376c1790919060201c565b62000fa060201b6200376c1790919060201c565b601555620001cf60c8620001bb6064620001a761070861019062000fa060201b6200376c1790919060201c565b62000fa060201b6200376c1790919060201c565b62000fa060201b6200376c1790919060201c565b6016556207a120601d556001601e60006101000a81548160ff021916908315150217905550614e20600554816200020257fe5b04601f556000602060016101000a81548160ff0219169083151502179055503480156200022e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044957600080fd5b505afa1580156200045e573d6000803e3d6000fd5b505050506040513d60208110156200047557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200052f57600080fd5b505af115801562000544573d6000803e3d6000fd5b505050506040513d60208110156200055b57600080fd5b8101908080519060200190929190505050601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005dd9062001029565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156200061a573d6000803e3d6000fd5b50601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550738a722de0803e0048e807a0bee0f0a179d7edb4c3601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734cfb05091aebbdf0a74f5d843a9d6e988fc563a2601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a362001037565b6000808284019050838110156200101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611699806200668c83390190565b61564580620010476000396000f3fe6080604052600436106103dd5760003560e01c80638b42507f116101fd578063cf4be39411610118578063f0b37c04116100ab578063f708a64f1161007a578063f708a64f14611537578063f84ba65d14611594578063f887ea40146115f1578063fd1bc2ca14611632578063fe9fbb801461165f576103e4565b8063f0b37c0414611453578063f0fc6bca146114a4578063f132b939146114bb578063f2fde38b146114e6576103e4565b8063df20fd49116100e7578063df20fd4914611375578063e2d2e219146113bc578063e96fada2146113e7578063efca2eed14611428576103e4565b8063cf4be39414611259578063dab84ee714611284578063dd62ed3e146112c5578063de9c37d41461134a576103e4565b8063a9059cbb11610190578063bfe109281161015f578063bfe109281461112b578063c04a78ad1461116c578063c2f56a6a146111c9578063cc653b44146111f4576103e4565b8063a9059cbb14610fc1578063b62496f514611032578063b6a5d7de14611099578063bfa21d6a146110ea576103e4565b80639a7a23d6116101cc5780639a7a23d614610e775780639d1944f514610ed45780639ebdbf1214610f0f578063a8aa1b3114610f80576103e4565b80638b42507f14610d2a57806395d89b4114610d9157806398118cb414610e21578063997664d714610e4c576103e4565b80633f4218e0116102f85780636c0a24eb1161028b57806377b7c74d1161025a57806377b7c74d14610bf35780637be673c614610c5857806383ad799414610ca7578063893d20e814610cd25780638a8c523c14610d13576103e4565b80636c0a24eb14610add5780636ddd171314610b085780636fcba37714610b3557806370a0823114610b8e576103e4565b806362778bd7116102c757806362778bd7146109d9578063658d4b7f14610a2a5780636827e76414610a875780636b67c4df14610ab2576103e4565b80633f4218e0146108795780634355855a146108e05780634fab0ae814610947578063571ac8b014610972576103e4565b806328fd319811610370578063313ce5671161033f578063313ce567146107ca57806333477327146107f8578063354fea4d146108235780633a98ef391461084e576103e4565b806328fd31981461068e5780632b112e49146106f35780632d48e8961461071e5780632f54bf6e14610763576103e4565b80630bd11f8a116103ac5780630bd11f8a1461054057806318160ddd146105a75780631df4ccfc146105d257806323b872dd146105fd576103e4565b80630445b667146103e957806306fdde03146104145780630926d719146104a4578063095ea7b3146104cf576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe6116c6565b6040518082815260200191505060405180910390f35b34801561042057600080fd5b506104296116cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046957808201518184015260208101905061044e565b50505050905090810190601f1680156104965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104b057600080fd5b506104b9611709565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b50610528600480360360408110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061170f565b60405180821515815260200191505060405180910390f35b34801561054c57600080fd5b5061058f6004803603602081101561056357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611801565b60405180821515815260200191505060405180910390f35b3480156105b357600080fd5b506105bc611821565b6040518082815260200191505060405180910390f35b3480156105de57600080fd5b506105e761182b565b6040518082815260200191505060405180910390f35b34801561060957600080fd5b506106766004803603606081101561062057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611831565b60405180821515815260200191505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a31565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708611afe565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b506107616004803603604081101561074157600080fd5b810190808035906020019092919080359060200190929190505050611b80565b005b34801561076f57600080fd5b506107b26004803603602081101561078657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c94565b60405180821515815260200191505060405180910390f35b3480156107d657600080fd5b506107df611ced565b604051808260ff16815260200191505060405180910390f35b34801561080457600080fd5b5061080d611cf6565b6040518082815260200191505060405180910390f35b34801561082f57600080fd5b50610838611cfc565b6040518082815260200191505060405180910390f35b34801561085a57600080fd5b50610863611d01565b6040518082815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156108ec57600080fd5b5061092f6004803603602081101561090357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b60405180821515815260200191505060405180910390f35b34801561095357600080fd5b5061095c611deb565b6040518082815260200191505060405180910390f35b34801561097e57600080fd5b506109c16004803603602081101561099557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e95565b60405180821515815260200191505060405180910390f35b3480156109e557600080fd5b50610a28600480360360208110156109fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec8565b005b348015610a3657600080fd5b50610a8560048036036040811015610a4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061208f565b005b348015610a9357600080fd5b50610a9c612165565b6040518082815260200191505060405180910390f35b348015610abe57600080fd5b50610ac761216b565b6040518082815260200191505060405180910390f35b348015610ae957600080fd5b50610af2612171565b6040518082815260200191505060405180910390f35b348015610b1457600080fd5b50610b1d612177565b60405180821515815260200191505060405180910390f35b348015610b4157600080fd5b50610b8c60048036036080811015610b5857600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919050505061218a565b005b348015610b9a57600080fd5b50610bdd60048036036020811015610bb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612264565b6040518082815260200191505060405180910390f35b348015610bff57600080fd5b50610c4260048036036020811015610c1657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122ad565b6040518082815260200191505060405180910390f35b348015610c6457600080fd5b50610ca560048036036060811015610c7b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061237a565b005b348015610cb357600080fd5b50610cbc61251c565b6040518082815260200191505060405180910390f35b348015610cde57600080fd5b50610ce7612522565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1f57600080fd5b50610d2861254b565b005b348015610d3657600080fd5b50610d7960048036036020811015610d4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f8565b60405180821515815260200191505060405180910390f35b348015610d9d57600080fd5b50610da6612618565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610de6578082015181840152602081019050610dcb565b50505050905090810190601f168015610e135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e2d57600080fd5b50610e36612655565b6040518082815260200191505060405180910390f35b348015610e5857600080fd5b50610e6161265b565b6040518082815260200191505060405180910390f35b348015610e8357600080fd5b50610ed260048036036040811015610e9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612705565b005b348015610ee057600080fd5b50610f0d60048036036020811015610ef757600080fd5b8101908080359060200190929190505050612929565b005b348015610f1b57600080fd5b50610f7e60048036036040811015610f3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bd565b005b348015610f8c57600080fd5b50610f95612abe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fcd57600080fd5b5061101a60048036036040811015610fe457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ae4565b60405180821515815260200191505060405180910390f35b34801561103e57600080fd5b506110816004803603602081101561105557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612af9565b60405180821515815260200191505060405180910390f35b3480156110a557600080fd5b506110e8600480360360208110156110bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b19565b005b3480156110f657600080fd5b506110ff612bee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561113757600080fd5b50611140612c14565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561117857600080fd5b506111c76004803603604081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c3a565b005b3480156111d557600080fd5b506111de612d10565b6040518082815260200191505060405180910390f35b34801561120057600080fd5b506112436004803603602081101561121757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d16565b6040518082815260200191505060405180910390f35b34801561126557600080fd5b5061126e612d5f565b6040518082815260200191505060405180910390f35b34801561129057600080fd5b50611299612d65565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112d157600080fd5b50611334600480360360408110156112e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8b565b6040518082815260200191505060405180910390f35b34801561135657600080fd5b5061135f612e12565b6040518082815260200191505060405180910390f35b34801561138157600080fd5b506113ba6004803603604081101561139857600080fd5b8101908080351515906020019092919080359060200190929190505050612e17565b005b3480156113c857600080fd5b506113d1612ec0565b6040518082815260200191505060405180910390f35b3480156113f357600080fd5b506113fc612f6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143457600080fd5b5061143d612f90565b6040518082815260200191505060405180910390f35b34801561145f57600080fd5b506114a26004803603602081101561147657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061303a565b005b3480156114b057600080fd5b506114b9613110565b005b3480156114c757600080fd5b506114d0613194565b6040518082815260200191505060405180910390f35b3480156114f257600080fd5b506115356004803603602081101561150957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061319a565b005b34801561154357600080fd5b506115926004803603604081101561155a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506132fc565b005b3480156115a057600080fd5b506115ef600480360360408110156115b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613607565b005b3480156115fd57600080fd5b506116066136dd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561163e57600080fd5b50611647613703565b60405180821515815260200191505060405180910390f35b34801561166b57600080fd5b506116ae6004803603602081101561168257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613716565b60405180821515815260200191505060405180910390f35b601f5481565b60606040518060400160405280600d81526020017f4d6567756d696e204b6974747900000000000000000000000000000000000000815250905090565b61019081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b60155481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611a1d5761199c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611a288484846138b4565b90509392505050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b81019080805190602001909291905050509050919050565b6000611b7b611b2e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612264565b611b6d611b5c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612264565b600554613fd290919063ffffffff16565b613fd290919063ffffffff16565b905090565b611b8933613716565b611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611c7857600080fd5b505af1158015611c8c573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60065481565b60c881565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6b57600080fd5b505afa158015611d7f573d6000803e3d6000fd5b505050506040513d6020811015611d9557600080fd5b8101908080519060200190929190505050905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fab0ae86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e5557600080fd5b505afa158015611e69573d6000803e3d6000fd5b505050506040513d6020811015611e7f57600080fd5b8101908080519060200190929190505050905090565b6000611ec1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61170f565b9050919050565b611ed133611c94565b611f43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61209833613716565b61210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60125481565b60085481565b601e60009054906101000a900460ff1681565b61219333613716565b612205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b836011819055508260128190555081601381905550806014819055506122588161224a8461223c878961376c90919063ffffffff16565b61376c90919063ffffffff16565b61376c90919063ffffffff16565b60158190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377b7c74d836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561233857600080fd5b505afa15801561234c573d6000803e3d6000fd5b505050506040513d602081101561236257600080fd5b81019080805190602001909291905050509050919050565b61238333613716565b6123f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6207a12083101561246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4d61786275792063616e742062652062656c6f7720302e35250000000000000081525060200191505060405180910390fd5b6207a1208210156124e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d617873656c6c2063616e742062652062656c6f7720302e352500000000000081525060200191505060405180910390fd5b601260ff16600a0a8302600681905550601260ff16600a0a8202600781905550601260ff16600a0a8102600881905550505050565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61255433611c94565b6125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b602060019054906101000a900460ff166125f6576001602060016101000a81548160ff0219169083151502179055505b565b600f6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600881526020017f244d4547554d494e000000000000000000000000000000000000000000000000815250905090565b60135481565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c557600080fd5b505afa1580156126d9573d6000803e3d6000fd5b505050506040513d60208110156126ef57600080fd5b8101908080519060200190929190505050905090565b61270e33611c94565b612780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806155726045913960600191505060405180910390fd5b612831828261401c565b6001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61293233613716565b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129b357600080fd5b80601d8190555050565b6129c633613716565b612a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612af13384846138b4565b905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b612b2233611c94565b612b94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612c4333613716565b612cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606481565b612e2033613716565b612e92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601e60006101000a81548160ff021916908315150217905550601260ff16600a0a8102601f819055505050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2d2e2196040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d6020811015612f5457600080fd5b8101908080519060200190929190505050905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efca2eed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffa57600080fd5b505afa15801561300e573d6000803e3d6000fd5b505050506040513d602081101561302457600080fd5b8101908080519060200190929190505050905090565b61304333611c94565b6130b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561317a57600080fd5b505af115801561318e573d6000803e3d6000fd5b50505050565b61070881565b6131a333611c94565b613215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b61330533613716565b613377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134015750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61340a57600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561351857601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156134fb57600080fd5b505af115801561350f573d6000803e3d6000fd5b50505050613603565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156135ea57600080fd5b505af11580156135fe573d6000803e3d6000fd5b505050505b5050565b61361033613716565b613682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808284019050838110156137ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906138a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561386657808201518184015260208101905061384b565b50505050905090810190601f1680156138935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561395f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156139e757602060019054906101000a900460ff166139e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54726164696e67206973206e6f74207475726e6564206f6e207965740000000081525060200191505060405180910390fd5b5b602060009054906101000a900460ff1615613a0e57613a078484846141c5565b9050613fcb565b613a198484846143a1565b613a21614687565b15613a2f57613a2e61475e565b5b613ab8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613b06856148b7565b613b105782613b1b565b613b1a858461490e565b5b9050613b6f81600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613cf157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cd557600080fd5b505af1925050508015613ce6575060015b613cef57613cf0565b5b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613e3057601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613e1457600080fd5b505af1925050508015613e25575060015b613e2e57613e2f565b5b5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601d546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613ea757600080fd5b505af1925050508015613eb8575060015b613ec157613ec2565b5b613ecb85614ba7565b8015613f1657506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613f605742600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061401483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137f4565b905092915050565b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806155b76038913960400191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561417b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000614250826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142e582600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061433183614c01565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156145cd57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166144bd576006548111156144bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166145c85760085481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111156145c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f57616c6c657420416d6f756e74204c696d69742045786365656465640000000081525060200191505060405180910390fd5b5b614682565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561468157600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166146805760075481111561467f57600080fd5b5b5b5b505050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156146f45750602060009054906101000a900460ff16155b801561470c5750601e60009054906101000a900460ff165b80156147595750601f54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147e86015546147da60115485614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061481560155461480760125486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061484260155461483460145487614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061486f60155461486160135488614d0f90919063ffffffff16565b614d9590919063ffffffff16565b905061487a83614ddf565b61488384614e72565b61488c81614f22565b61489582614fce565b50505050506000602060006101000a81548160ff021916908315150217905550565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080600061491c85612d16565b1415801561493657504261025861493286612d16565b0110155b15614a655761496461271061495660165486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b90506149b881600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3614b8b565b614a8e612710614a8060155486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050614ae281600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b614b9e8184613fd290919063ffffffff16565b91505092915050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580614c9a5750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f57616c6c657420416d6f756e74204c696d69742045786365656465640000000081525060200191505060405180910390fd5b50565b600080831415614d225760009050614d8f565b6000828402905082848281614d3357fe5b0414614d8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806155ef6021913960400191505060405180910390fd5b809150505b92915050565b6000614dd783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615061565b905092915050565b6000479050614ded82615127565b6000614e028247613fd290919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614e6c573d6000803e3d6000fd5b50505050565b6000479050614e8082615127565b6000614e958247613fd290919063ffffffff16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015614f0157600080fd5b505af193505050508015614f13575060015b614f1c57614f1d565b5b505050565b6000614f38600283614d9590919063ffffffff16565b90506000614f4f8284613fd290919063ffffffff16565b90506000479050614f5f83615127565b6000614f748247613fd290919063ffffffff16565b9050614f80838261542e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a15050505050565b6000479050614fdc82615127565b6000614ff18247613fd290919063ffffffff16565b9050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561505b573d6000803e3d6000fd5b50505050565b6000808311829061510d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150d25780820151818401526020810190506150b7565b50505050905090810190601f1680156150ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161511957fe5b049050809150509392505050565b6060600267ffffffffffffffff8111801561514157600080fd5b506040519080825280602002602001820160405280156151705781602001602082028036833780820191505090505b509050308160008151811061518157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b81019080805190602001909291905050508160018151811061526b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561536957808201518184015260208101905061534e565b505050509050019650505050505050600060405180830381600087803b15801561539257600080fd5b505af11580156153a6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156154165780820151818401526020810190506153fb565b50505050905001935050505060405180910390a15050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561551a57600080fd5b505af115801561552e573d6000803e3d6000fd5b50505050506040513d606081101561554557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe5468652050616e63616b655377617020706169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657250616972734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206d9c60ef4087b119a785afe1f876749fe28e5c803c74ef4e27ccb8c9bf4c6f4a64736f6c63430007040033608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600b5562015180600c55662386f26fc10000600d5534801561008a57600080fd5b50604051611699380380611699833981810160405260208110156100ad57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561010d57737a250d5630b4cf539739df2c5dacb4c659f2488d61010f565b805b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506114fa8061019f6000396000f3fe6080604052600436106100f35760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed146103fa578063f0fc6bca14610425578063ffb2c4791461043c578063ffd49c8414610477576100f3565b8063997664d714610327578063ce7c2ac214610352578063d0e30db0146103c5578063e2d2e219146103cf576100f3565b80633a98ef39116100c65780633a98ef39146102285780634fab0ae8146102535780635319504a1461027e57806377b7c74d146102c2576100f3565b806311ce023d146100f857806314b6ca961461012357806328fd31981461017e5780632d48e896146101e3575b600080fd5b34801561010457600080fd5b5061010d6104a2565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a8565b005b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610767565b6040518082815260200191505060405180910390f35b3480156101ef57600080fd5b506102266004803603604081101561020657600080fd5b810190808035906020019092919080359060200190929190505050610881565b005b34801561023457600080fd5b5061023d6108eb565b6040518082815260200191505060405180910390f35b34801561025f57600080fd5b506102686108f1565b6040518082815260200191505060405180910390f35b6102c06004803603602081101561029457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f7565b005b3480156102ce57600080fd5b50610311600480360360208110156102e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b35565b6040518082815260200191505060405180910390f35b34801561033357600080fd5b5061033c610bde565b6040518082815260200191505060405180910390f35b34801561035e57600080fd5b506103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be4565b60405180848152602001838152602001828152602001935050505060405180910390f35b6103cd610c0e565b005b3480156103db57600080fd5b506103e4610cc6565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b5061040f610ccc565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061043a610cd2565b005b34801561044857600080fd5b506104756004803603602081101561045f57600080fd5b8101908080359060200190929190505050610cdd565b005b34801561048357600080fd5b5061048c610e57565b6040518082815260200191505060405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461050057600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561055557610554826108f7565b5b6000811180156105a757506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105ba576105b582610e5d565b61061c565b60008114801561060c57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561061b5761061a82610f0c565b5b5b61068581610677600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546007546110e590919063ffffffff16565b61112f90919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061071d600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546111b7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107bc576000905061087c565b6000610809600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546111b7565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116108645760009250505061087c565b61087781836110e590919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d957600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561094757610b32565b600061095282610767565b90506000811115610b30576109728160095461112f90919063ffffffff16565b6009819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109be573d6000803e3d6000fd5b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a5881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461112f90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610ae9600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546111b7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b60008042600c54600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115610bd05742600c54600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401039050610bd5565b600090505b80915050919050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c6657600080fd5b610c7b3460085461112f90919063ffffffff16565b600881905550610cbe610cad600754610c9f34600b546111e990919063ffffffff16565b61126f90919063ffffffff16565b600a5461112f90919063ffffffff16565b600a81905550565b600a5481565b60095481565b610cdb336108f7565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3557600080fd5b600060038054905090506000811415610d4e5750610e54565b6000805a905060005b8483108015610d6557508381105b15610e4f5783600e5410610d7c576000600e819055505b610dbe6003600e5481548110610d8e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112b9565b15610e0657610e056003600e5481548110610dd557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108f7565b5b610e2b610e1c5a846110e590919063ffffffff16565b8461112f90919063ffffffff16565b92505a9150600e600081548092919060010191905055508080600101915050610d57565b505050505b50565b600c5481565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490500381548110610f2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610f9857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050038154811061103957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806110ad57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061112783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061131d565b905092915050565b6000808284019050838110156111ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006111e2600b546111d4600a54856111e990919063ffffffff16565b61126f90919063ffffffff16565b9050919050565b6000808314156111fc5760009050611269565b600082840290508284828161120d57fe5b0414611264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114a46021913960400191505060405180910390fd5b809150505b92915050565b60006112b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113dd565b905092915050565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156113165750600d5461131483610767565b115b9050919050565b60008383111582906113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561138f578082015181840152602081019050611374565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561144e578082015181840152602081019050611433565b50505050905090810190601f16801561147b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161149557fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e054e4ccf194daf6e47e644124d944d80f224c343bb2a5adca28202a01be7c5864736f6c63430007040033
Deployed Bytecode
0x6080604052600436106103dd5760003560e01c80638b42507f116101fd578063cf4be39411610118578063f0b37c04116100ab578063f708a64f1161007a578063f708a64f14611537578063f84ba65d14611594578063f887ea40146115f1578063fd1bc2ca14611632578063fe9fbb801461165f576103e4565b8063f0b37c0414611453578063f0fc6bca146114a4578063f132b939146114bb578063f2fde38b146114e6576103e4565b8063df20fd49116100e7578063df20fd4914611375578063e2d2e219146113bc578063e96fada2146113e7578063efca2eed14611428576103e4565b8063cf4be39414611259578063dab84ee714611284578063dd62ed3e146112c5578063de9c37d41461134a576103e4565b8063a9059cbb11610190578063bfe109281161015f578063bfe109281461112b578063c04a78ad1461116c578063c2f56a6a146111c9578063cc653b44146111f4576103e4565b8063a9059cbb14610fc1578063b62496f514611032578063b6a5d7de14611099578063bfa21d6a146110ea576103e4565b80639a7a23d6116101cc5780639a7a23d614610e775780639d1944f514610ed45780639ebdbf1214610f0f578063a8aa1b3114610f80576103e4565b80638b42507f14610d2a57806395d89b4114610d9157806398118cb414610e21578063997664d714610e4c576103e4565b80633f4218e0116102f85780636c0a24eb1161028b57806377b7c74d1161025a57806377b7c74d14610bf35780637be673c614610c5857806383ad799414610ca7578063893d20e814610cd25780638a8c523c14610d13576103e4565b80636c0a24eb14610add5780636ddd171314610b085780636fcba37714610b3557806370a0823114610b8e576103e4565b806362778bd7116102c757806362778bd7146109d9578063658d4b7f14610a2a5780636827e76414610a875780636b67c4df14610ab2576103e4565b80633f4218e0146108795780634355855a146108e05780634fab0ae814610947578063571ac8b014610972576103e4565b806328fd319811610370578063313ce5671161033f578063313ce567146107ca57806333477327146107f8578063354fea4d146108235780633a98ef391461084e576103e4565b806328fd31981461068e5780632b112e49146106f35780632d48e8961461071e5780632f54bf6e14610763576103e4565b80630bd11f8a116103ac5780630bd11f8a1461054057806318160ddd146105a75780631df4ccfc146105d257806323b872dd146105fd576103e4565b80630445b667146103e957806306fdde03146104145780630926d719146104a4578063095ea7b3146104cf576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe6116c6565b6040518082815260200191505060405180910390f35b34801561042057600080fd5b506104296116cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046957808201518184015260208101905061044e565b50505050905090810190601f1680156104965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104b057600080fd5b506104b9611709565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b50610528600480360360408110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061170f565b60405180821515815260200191505060405180910390f35b34801561054c57600080fd5b5061058f6004803603602081101561056357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611801565b60405180821515815260200191505060405180910390f35b3480156105b357600080fd5b506105bc611821565b6040518082815260200191505060405180910390f35b3480156105de57600080fd5b506105e761182b565b6040518082815260200191505060405180910390f35b34801561060957600080fd5b506106766004803603606081101561062057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611831565b60405180821515815260200191505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a31565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708611afe565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b506107616004803603604081101561074157600080fd5b810190808035906020019092919080359060200190929190505050611b80565b005b34801561076f57600080fd5b506107b26004803603602081101561078657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c94565b60405180821515815260200191505060405180910390f35b3480156107d657600080fd5b506107df611ced565b604051808260ff16815260200191505060405180910390f35b34801561080457600080fd5b5061080d611cf6565b6040518082815260200191505060405180910390f35b34801561082f57600080fd5b50610838611cfc565b6040518082815260200191505060405180910390f35b34801561085a57600080fd5b50610863611d01565b6040518082815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156108ec57600080fd5b5061092f6004803603602081101561090357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b60405180821515815260200191505060405180910390f35b34801561095357600080fd5b5061095c611deb565b6040518082815260200191505060405180910390f35b34801561097e57600080fd5b506109c16004803603602081101561099557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e95565b60405180821515815260200191505060405180910390f35b3480156109e557600080fd5b50610a28600480360360208110156109fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec8565b005b348015610a3657600080fd5b50610a8560048036036040811015610a4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061208f565b005b348015610a9357600080fd5b50610a9c612165565b6040518082815260200191505060405180910390f35b348015610abe57600080fd5b50610ac761216b565b6040518082815260200191505060405180910390f35b348015610ae957600080fd5b50610af2612171565b6040518082815260200191505060405180910390f35b348015610b1457600080fd5b50610b1d612177565b60405180821515815260200191505060405180910390f35b348015610b4157600080fd5b50610b8c60048036036080811015610b5857600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919050505061218a565b005b348015610b9a57600080fd5b50610bdd60048036036020811015610bb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612264565b6040518082815260200191505060405180910390f35b348015610bff57600080fd5b50610c4260048036036020811015610c1657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122ad565b6040518082815260200191505060405180910390f35b348015610c6457600080fd5b50610ca560048036036060811015610c7b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061237a565b005b348015610cb357600080fd5b50610cbc61251c565b6040518082815260200191505060405180910390f35b348015610cde57600080fd5b50610ce7612522565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1f57600080fd5b50610d2861254b565b005b348015610d3657600080fd5b50610d7960048036036020811015610d4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f8565b60405180821515815260200191505060405180910390f35b348015610d9d57600080fd5b50610da6612618565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610de6578082015181840152602081019050610dcb565b50505050905090810190601f168015610e135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e2d57600080fd5b50610e36612655565b6040518082815260200191505060405180910390f35b348015610e5857600080fd5b50610e6161265b565b6040518082815260200191505060405180910390f35b348015610e8357600080fd5b50610ed260048036036040811015610e9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612705565b005b348015610ee057600080fd5b50610f0d60048036036020811015610ef757600080fd5b8101908080359060200190929190505050612929565b005b348015610f1b57600080fd5b50610f7e60048036036040811015610f3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bd565b005b348015610f8c57600080fd5b50610f95612abe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fcd57600080fd5b5061101a60048036036040811015610fe457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ae4565b60405180821515815260200191505060405180910390f35b34801561103e57600080fd5b506110816004803603602081101561105557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612af9565b60405180821515815260200191505060405180910390f35b3480156110a557600080fd5b506110e8600480360360208110156110bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b19565b005b3480156110f657600080fd5b506110ff612bee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561113757600080fd5b50611140612c14565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561117857600080fd5b506111c76004803603604081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c3a565b005b3480156111d557600080fd5b506111de612d10565b6040518082815260200191505060405180910390f35b34801561120057600080fd5b506112436004803603602081101561121757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d16565b6040518082815260200191505060405180910390f35b34801561126557600080fd5b5061126e612d5f565b6040518082815260200191505060405180910390f35b34801561129057600080fd5b50611299612d65565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112d157600080fd5b50611334600480360360408110156112e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8b565b6040518082815260200191505060405180910390f35b34801561135657600080fd5b5061135f612e12565b6040518082815260200191505060405180910390f35b34801561138157600080fd5b506113ba6004803603604081101561139857600080fd5b8101908080351515906020019092919080359060200190929190505050612e17565b005b3480156113c857600080fd5b506113d1612ec0565b6040518082815260200191505060405180910390f35b3480156113f357600080fd5b506113fc612f6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143457600080fd5b5061143d612f90565b6040518082815260200191505060405180910390f35b34801561145f57600080fd5b506114a26004803603602081101561147657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061303a565b005b3480156114b057600080fd5b506114b9613110565b005b3480156114c757600080fd5b506114d0613194565b6040518082815260200191505060405180910390f35b3480156114f257600080fd5b506115356004803603602081101561150957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061319a565b005b34801561154357600080fd5b506115926004803603604081101561155a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506132fc565b005b3480156115a057600080fd5b506115ef600480360360408110156115b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613607565b005b3480156115fd57600080fd5b506116066136dd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561163e57600080fd5b50611647613703565b60405180821515815260200191505060405180910390f35b34801561166b57600080fd5b506116ae6004803603602081101561168257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613716565b60405180821515815260200191505060405180910390f35b601f5481565b60606040518060400160405280600d81526020017f4d6567756d696e204b6974747900000000000000000000000000000000000000815250905090565b61019081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b60155481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611a1d5761199c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611a288484846138b4565b90509392505050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b81019080805190602001909291905050509050919050565b6000611b7b611b2e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612264565b611b6d611b5c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612264565b600554613fd290919063ffffffff16565b613fd290919063ffffffff16565b905090565b611b8933613716565b611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611c7857600080fd5b505af1158015611c8c573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60065481565b60c881565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6b57600080fd5b505afa158015611d7f573d6000803e3d6000fd5b505050506040513d6020811015611d9557600080fd5b8101908080519060200190929190505050905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fab0ae86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e5557600080fd5b505afa158015611e69573d6000803e3d6000fd5b505050506040513d6020811015611e7f57600080fd5b8101908080519060200190929190505050905090565b6000611ec1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61170f565b9050919050565b611ed133611c94565b611f43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61209833613716565b61210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60125481565b60085481565b601e60009054906101000a900460ff1681565b61219333613716565b612205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b836011819055508260128190555081601381905550806014819055506122588161224a8461223c878961376c90919063ffffffff16565b61376c90919063ffffffff16565b61376c90919063ffffffff16565b60158190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377b7c74d836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561233857600080fd5b505afa15801561234c573d6000803e3d6000fd5b505050506040513d602081101561236257600080fd5b81019080805190602001909291905050509050919050565b61238333613716565b6123f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6207a12083101561246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4d61786275792063616e742062652062656c6f7720302e35250000000000000081525060200191505060405180910390fd5b6207a1208210156124e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d617873656c6c2063616e742062652062656c6f7720302e352500000000000081525060200191505060405180910390fd5b601260ff16600a0a8302600681905550601260ff16600a0a8202600781905550601260ff16600a0a8102600881905550505050565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61255433611c94565b6125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b602060019054906101000a900460ff166125f6576001602060016101000a81548160ff0219169083151502179055505b565b600f6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600881526020017f244d4547554d494e000000000000000000000000000000000000000000000000815250905090565b60135481565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c557600080fd5b505afa1580156126d9573d6000803e3d6000fd5b505050506040513d60208110156126ef57600080fd5b8101908080519060200190929190505050905090565b61270e33611c94565b612780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806155726045913960600191505060405180910390fd5b612831828261401c565b6001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61293233613716565b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129b357600080fd5b80601d8190555050565b6129c633613716565b612a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612af13384846138b4565b905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b612b2233611c94565b612b94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612c4333613716565b612cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606481565b612e2033613716565b612e92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601e60006101000a81548160ff021916908315150217905550601260ff16600a0a8102601f819055505050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2d2e2196040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d6020811015612f5457600080fd5b8101908080519060200190929190505050905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efca2eed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffa57600080fd5b505afa15801561300e573d6000803e3d6000fd5b505050506040513d602081101561302457600080fd5b8101908080519060200190929190505050905090565b61304333611c94565b6130b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561317a57600080fd5b505af115801561318e573d6000803e3d6000fd5b50505050565b61070881565b6131a333611c94565b613215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b61330533613716565b613377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134015750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61340a57600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561351857601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156134fb57600080fd5b505af115801561350f573d6000803e3d6000fd5b50505050613603565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156135ea57600080fd5b505af11580156135fe573d6000803e3d6000fd5b505050505b5050565b61361033613716565b613682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808284019050838110156137ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906138a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561386657808201518184015260208101905061384b565b50505050905090810190601f1680156138935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561395f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156139e757602060019054906101000a900460ff166139e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54726164696e67206973206e6f74207475726e6564206f6e207965740000000081525060200191505060405180910390fd5b5b602060009054906101000a900460ff1615613a0e57613a078484846141c5565b9050613fcb565b613a198484846143a1565b613a21614687565b15613a2f57613a2e61475e565b5b613ab8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613b06856148b7565b613b105782613b1b565b613b1a858461490e565b5b9050613b6f81600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613cf157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cd557600080fd5b505af1925050508015613ce6575060015b613cef57613cf0565b5b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613e3057601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613e1457600080fd5b505af1925050508015613e25575060015b613e2e57613e2f565b5b5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601d546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613ea757600080fd5b505af1925050508015613eb8575060015b613ec157613ec2565b5b613ecb85614ba7565b8015613f1657506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613f605742600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061401483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137f4565b905092915050565b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806155b76038913960400191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561417b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000614250826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137f49092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142e582600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061433183614c01565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156145cd57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166144bd576006548111156144bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166145c85760085481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111156145c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f57616c6c657420416d6f756e74204c696d69742045786365656465640000000081525060200191505060405180910390fd5b5b614682565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561468157600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166146805760075481111561467f57600080fd5b5b5b5b505050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156146f45750602060009054906101000a900460ff16155b801561470c5750601e60009054906101000a900460ff165b80156147595750601f54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147e86015546147da60115485614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061481560155461480760125486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061484260155461483460145487614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050600061486f60155461486160135488614d0f90919063ffffffff16565b614d9590919063ffffffff16565b905061487a83614ddf565b61488384614e72565b61488c81614f22565b61489582614fce565b50505050506000602060006101000a81548160ff021916908315150217905550565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080600061491c85612d16565b1415801561493657504261025861493286612d16565b0110155b15614a655761496461271061495660165486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b90506149b881600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3614b8b565b614a8e612710614a8060155486614d0f90919063ffffffff16565b614d9590919063ffffffff16565b9050614ae281600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b614b9e8184613fd290919063ffffffff16565b91505092915050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580614c9a5750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f57616c6c657420416d6f756e74204c696d69742045786365656465640000000081525060200191505060405180910390fd5b50565b600080831415614d225760009050614d8f565b6000828402905082848281614d3357fe5b0414614d8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806155ef6021913960400191505060405180910390fd5b809150505b92915050565b6000614dd783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615061565b905092915050565b6000479050614ded82615127565b6000614e028247613fd290919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614e6c573d6000803e3d6000fd5b50505050565b6000479050614e8082615127565b6000614e958247613fd290919063ffffffff16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015614f0157600080fd5b505af193505050508015614f13575060015b614f1c57614f1d565b5b505050565b6000614f38600283614d9590919063ffffffff16565b90506000614f4f8284613fd290919063ffffffff16565b90506000479050614f5f83615127565b6000614f748247613fd290919063ffffffff16565b9050614f80838261542e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a15050505050565b6000479050614fdc82615127565b6000614ff18247613fd290919063ffffffff16565b9050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561505b573d6000803e3d6000fd5b50505050565b6000808311829061510d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150d25780820151818401526020810190506150b7565b50505050905090810190601f1680156150ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161511957fe5b049050809150509392505050565b6060600267ffffffffffffffff8111801561514157600080fd5b506040519080825280602002602001820160405280156151705781602001602082028036833780820191505090505b509050308160008151811061518157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b81019080805190602001909291905050508160018151811061526b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561536957808201518184015260208101905061534e565b505050509050019650505050505050600060405180830381600087803b15801561539257600080fd5b505af11580156153a6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156154165780820151818401526020810190506153fb565b50505050905001935050505060405180910390a15050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561551a57600080fd5b505af115801561552e573d6000803e3d6000fd5b50505050506040513d606081101561554557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe5468652050616e63616b655377617020706169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657250616972734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206d9c60ef4087b119a785afe1f876749fe28e5c803c74ef4e27ccb8c9bf4c6f4a64736f6c63430007040033
Deployed Bytecode Sourcemap
11694:17656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14176:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17309:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12973:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17731:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12628:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17039:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13216:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18429:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15948:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28147:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27808:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3461:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17133:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12164:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13153:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16360:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12577:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12740:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16852:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17955:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29128:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26625:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12923:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12843:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12280:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14139:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27029:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17479:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16196:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25796:466;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12802:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17395:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18302:119;;;;;;;;;;;;;:::i;:::-;;12685:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17219:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12883:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16476:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28301:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27999:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27403:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13607:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18079:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12461:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3134:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13522:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14054:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26889:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13310:127;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21477:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12224:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13486:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17590:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13096:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27624:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16724:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13444:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16598:114;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3304:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16106:78;;;;;;;;;;;;;:::i;:::-;;13031:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3861:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26270:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26753:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13570:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14331:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3635:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14176:51;;;;:::o;17309:80::-;17357:13;17381:5;;;;;;;;;;;;;;;;;17374:12;;17309:80;:::o;12973:51::-;13021:3;12973:51;:::o;17731:216::-;17806:4;17858:6;17823:11;:23;17835:10;17823:23;;;;;;;;;;;;;;;:32;17847:7;17823:32;;;;;;;;;;;;;;;:41;;;;17901:7;17880:37;;17889:10;17880:37;;;17910:6;17880:37;;;;;;;;;;;;;;;;;;17935:4;17928:11;;17731:216;;;;:::o;12628:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;17039:88::-;17094:7;17112:12;;17105:19;;17039:88;:::o;13216:87::-;;;;:::o;18429:364::-;18529:4;18592:2;18549:11;:19;18561:6;18549:19;;;;;;;;;;;;;;;:31;18569:10;18549:31;;;;;;;;;;;;;;;;:46;18546:180;;18645:69;18681:6;18645:69;;;;;;;;;;;;;;;;;:11;:19;18657:6;18645:19;;;;;;;;;;;;;;;:31;18665:10;18645:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18611:11;:19;18623:6;18611:19;;;;;;;;;;;;;;;:31;18631:10;18611:31;;;;;;;;;;;;;;;:103;;;;18546:180;18745:40;18759:6;18767:9;18778:6;18745:13;:40::i;:::-;18738:47;;18429:364;;;;;:::o;15948:146::-;16017:7;16044:11;;;;;;;;;;;:29;;;16074:11;16044:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16037:49;;15948:146;;;:::o;28147:142::-;28200:7;28227:54;28265:15;28275:4;;;;;;;;;;;28265:9;:15::i;:::-;28227:33;28244:15;28254:4;;;;;;;;;;;28244:9;:15::i;:::-;28227:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;28220:61;;28147:142;:::o;27808:183::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27918:11:::1;;;;;;;;;;;:35;;;27954:10;27966:16;27918:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27808:183:::0;;:::o;3461:103::-;3516:4;3551:5;;;;;;;;;;;3540:16;;:7;:16;;;3533:23;;3461:103;;;:::o;17133:80::-;17185:5;12084:2;17194:16;;17133:80;:::o;12164:53::-;;;;:::o;13153:44::-;13194:3;13153:44;:::o;16360:104::-;16404:7;16431:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16424:32;;16360:104;:::o;12577:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12740:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;16852:112::-;16900:7;16927:11;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16920:36;;16852:112;:::o;17955:116::-;18010:4;18034:29;18042:7;18059:2;18034:7;:29::i;:::-;18027:36;;17955:116;;;:::o;29128:213::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29223:4:::1;29188:25;:32;29214:5;29188:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;29265:4;29238:17;:24;29256:5;29238:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29306:4;29280:16;:23;29297:5;29280:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29328:5;29321:4;;:12;;;;;;;;;;;;;;;;;;29128:213:::0;:::o;26625:120::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26731:6:::1;26709:11;:19;26721:6;26709:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26625:120:::0;;:::o;12923:27::-;;;;:::o;12843:33::-;;;;:::o;12280:49::-;;;;:::o;14139:30::-;;;;;;;;;;;;;:::o;27029:366::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27180:14:::1;27164:13;:30;;;;27220:13;27205:12;:28;;;;27259:13;27244:12;:28;;;;27292:7;27283:6;:16;;;;27322:65;27379:7;27322:52;27360:13;27322:33;27341:13;27322:14;:18;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:65;;;;:::i;:::-;27311:8;:76;;;;27029:366:::0;;;;:::o;17479:105::-;17545:7;17563:9;:18;17573:7;17563:18;;;;;;;;;;;;;;;;17556:25;;17479:105;;;:::o;16196:152::-;16268:7;16295:11;;;;;;;;;;;:32;;;16328:11;16295:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16288:52;;16196:152;;;:::o;25796:466::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25953:6:::1;25935:14;:24;;25927:62;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26027:6;26008:15;:25;;26000:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12084:2;26111:15;;:2;:15;26093:14;:34;26075:15;:52;;;;12084:2;26176:15;;:2;:15;26157;:35;26138:16;:54;;;;12084:2;26238:15;;:2;:15;26222:12;:32;26203:16;:51;;;;25796:466:::0;;;:::o;12802:34::-;;;;:::o;17395:78::-;17447:7;17465:5;;;;;;;;;;;17458:12;;17395:78;:::o;18302:119::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18360:9:::1;;;;;;;;;;;18355:59;;18398:4;18386:9;;:16;;;;;;;;;;;;;;;;;;18355:59;18302:119::o:0;12685:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;17219:84::-;17269:13;17293:7;;;;;;;;;;;;;;;;;17286:14;;17219:84;:::o;12883:33::-;;;;:::o;16476:110::-;16523:7;16550:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16543:35;;16476:110;:::o;28301:331::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28410:4:::1;;;;;;;;;;;28401:13;;:5;:13;;;;28393:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28501:42;28530:5;28537;28501:28;:42::i;:::-;28580:4;28554:17;:23;28572:4;;;;;;;;;;;28554:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28620:4;28595:16;:22;28612:4;;;;;;;;;;;28595:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28301:331:::0;;:::o;27999:136::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28089:6:::1;28083:3;:12;28075:21;;;::::0;::::1;;28124:3;28107:14;:20;;;;27999:136:::0;:::o;27403:213::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27544:21:::1;27521:20;;:44;;;;;;;;;;;;;;;;;;27593:15;27576:14;;:32;;;;;;;;;;;;;;;;;;27403:213:::0;;:::o;13607:19::-;;;;;;;;;;;;;:::o;18079:156::-;18159:4;18183:44;18197:10;18209:9;18220:6;18183:13;:44::i;:::-;18176:51;;18079:156;;;;:::o;12461:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;3134:94::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3216:4:::1;3194:14:::0;:19:::1;3209:3;3194:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3134:94:::0;:::o;13522:35::-;;;;;;;;;;;;;:::o;14054:38::-;;;;;;;;;;;;;:::o;26889:132::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27007:6:::1;26979:17;:25;26997:6;26979:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;26889:132:::0;;:::o;13310:127::-;;;;:::o;21477:116::-;21542:7;21569;:16;21577:7;21569:16;;;;;;;;;;;;;;;;21562:23;;21477:116;;;:::o;12224:49::-;;;;:::o;13486:29::-;;;;;;;;;;;;;:::o;17590:133::-;17674:7;17692:11;:19;17704:6;17692:19;;;;;;;;;;;;;;;:28;17712:7;17692:28;;;;;;;;;;;;;;;;17685:35;;17590:133;;;;:::o;13096:50::-;13143:3;13096:50;:::o;27624:176::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27730:8:::1;27716:11;;:22;;;;;;;;;;;;;;;;;;12084:2;27776:15;;:2;:15;27765:7;:27;27749:13;:43;;;;27624:176:::0;;:::o;16724:116::-;16774:7;16801:11;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16794:38;;16724:116;:::o;13444:35::-;;;;;;;;;;;;;:::o;16598:114::-;16647:7;16674:11;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16667:37;;16598:114;:::o;3304:97::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3388:5:::1;3366:14;:19;3381:3;3366:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3304:97:::0;:::o;16106:78::-;16149:11;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16106:78::o;13031:51::-;13078:4;13031:51;:::o;3861:173::-;2850:19;2858:10;2850:7;:19::i;:::-;2842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:3:::1;3937:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3981:4;3959:14:::0;:19:::1;3974:3;3959:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4001:25;4022:3;4001:25;;;;;;;;;;;;;;;;;;;;3861:173:::0;:::o;26270:347::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26385:4:::1;26367:23;;:6;:23;;;;:41;;;;;26404:4;;;;;;;;;;;26394:14;;:6;:14;;;;26367:41;26359:50;;;::::0;::::1;;26447:6;26420:16;:24;26437:6;26420:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26467:6;26464:146;;;26489:11;;;;;;;;;;;:20;;;26510:6;26518:1;26489:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26464:146;;;26551:11;;;;;;;;;;;:20;;;26572:6;26580:9;:17;26590:6;26580:17;;;;;;;;;;;;;;;;26551:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26464:146;26270:347:::0;;:::o;26753:128::-;3019:24;3032:10;3019:12;:24::i;:::-;3011:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26867:6:::1;26841:15;:23;26857:6;26841:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26753:128:::0;;:::o;13570:30::-;;;;;;;;;;;;;:::o;14331:29::-;;;;;;;;;;;;;:::o;3635:107::-;3691:4;3715:14;:19;3730:3;3715:19;;;;;;;;;;;;;;;;;;;;;;;;;3708:26;;3635:107;;;:::o;231:181::-;289:7;309:9;325:1;321;:5;309:17;;350:1;345;:6;;337:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;403:1;396:8;;;231:181;;;;:::o;560:192::-;646:7;679:1;674;:6;;682:12;666:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;706:9;722:1;718;:5;706:17;;743:1;736:8;;;560:192;;;;;:::o;18801:1183::-;18893:4;18934:5;;;;;;;;;;;18924:15;;:6;:15;;;;:37;;;;;18956:5;;;;;;;;;;18943:18;;:9;:18;;;;18924:37;18920:120;;;18986:9;;;;;;;;;;;18978:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18920:120;19063:6;;;;;;;;;;;19060:63;;;19079:41;19094:6;19102:9;19113:6;19079:14;:41::i;:::-;19072:48;;;;19060:63;19143:39;19156:6;19164:9;19175:6;19143:12;:39::i;:::-;19202:16;:14;:16::i;:::-;19199:35;;;19221:10;:8;:10::i;:::-;19199:35;19266:53;19288:6;19266:53;;;;;;;;;;;;;;;;;:9;:17;19276:6;19266:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19246:9;:17;19256:6;19246:17;;;;;;;;;;;;;;;:73;;;;19332:22;19357:21;19371:6;19357:13;:21::i;:::-;:56;;19407:6;19357:56;;;19381:23;19389:6;19397;19381:7;:23::i;:::-;19357:56;19332:81;;19447:40;19472:14;19447:9;:20;19457:9;19447:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19424:9;:20;19434:9;19424:20;;;;;;;;;;;;;;;:63;;;;19504:16;:24;19521:6;19504:24;;;;;;;;;;;;;;;;;;;;;;;;;19500:96;;19535:11;;;;;;;;;;;:20;;;19556:6;19564:9;:17;19574:6;19564:17;;;;;;;;;;;;;;;;19535:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19531:63;;;;;;19500:96;19610:16;:27;19627:9;19610:27;;;;;;;;;;;;;;;;;;;;;;;;;19606:105;;19644:11;;;;;;;;;;;:20;;;19665:9;19676;:20;19686:9;19676:20;;;;;;;;;;;;;;;;19644:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19640:69;;;;;;19606:105;19727:11;;;;;;;;;;;:19;;;19747:14;;19727:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19723:51;;;;;;19790:14;19797:6;19790;:14::i;:::-;:41;;;;;19830:1;19808:7;:18;19816:9;19808:18;;;;;;;;;;;;;;;;:23;19790:41;19786:110;;;19869:15;19848:7;:18;19856:9;19848:18;;;;;;;;;;;;;;;:36;;;;19786:110;19928:9;19911:43;;19920:6;19911:43;;;19939:14;19911:43;;;;;;;;;;;;;;;;;;19972:4;19965:11;;;18801:1183;;;;;;:::o;418:136::-;476:7;503:43;507:1;510;503:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;496:50;;418:136;;;;:::o;28640:391::-;28768:5;28732:41;;:25;:32;28758:5;28732:32;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;28724:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28880:5;28845:25;:32;28871:5;28845:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;28901:5;28898:67;;;28949:4;28923:16;:23;28940:5;28923:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28898:67;29017:5;28982:41;;29010:5;28982:41;;;;;;;;;;;;28640:391;;:::o;19996:368::-;20089:4;20126:53;20148:6;20126:53;;;;;;;;;;;;;;;;;:9;:17;20136:6;20126:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20106:9;:17;20116:6;20106:17;;;;;;;;;;;;;;;:73;;;;20213:32;20238:6;20213:9;:20;20223:9;20213:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20190:9;:20;20200:9;20190:20;;;;;;;;;;;;;;;:55;;;;20256:27;20273:9;20256:16;:27::i;:::-;20316:9;20299:35;;20308:6;20299:35;;;20327:6;20299:35;;;;;;;;;;;;;;;;;;20352:4;20345:11;;19996:368;;;;;:::o;20372:662::-;20474:25;:33;20500:6;20474:33;;;;;;;;;;;;;;;;;;;;;;;;;20470:557;;;20530:15;:26;20546:9;20530:26;;;;;;;;;;;;;;;;;;;;;;;;;20525:124;;20595:15;;20585:6;:25;;20577:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20525:124;20684:17;:28;20702:9;20684:28;;;;;;;;;;;;;;;;;;;;;;;;;20679:163;;20776:16;;20765:6;20742:9;:20;20752:9;20742:20;;;;;;;;;;;;;;;;:29;20741:51;;20733:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20679:163;20470:557;;;20863:25;:36;20889:9;20863:36;;;;;;;;;;;;;;;;;;;;;;;;;20859:168;;;20921:15;:23;20937:6;20921:23;;;;;;;;;;;;;;;;;;;;;;;;;20916:100;;20983:16;;20973:6;:26;;20965:35;;;;;;20916:100;20859:168;20470:557;20372:662;;;:::o;22465:197::-;22514:4;22552;;;;;;;;;;;22538:18;;:10;:18;;;;:38;;;;;22570:6;;;;;;;;;;;22569:7;22538:38;:62;;;;;22589:11;;;;;;;;;;;22538:62;:116;;;;;22641:13;;22613:9;:24;22631:4;22613:24;;;;;;;;;;;;;;;;:41;;22538:116;22531:123;;22465:197;:::o;22670:598::-;14293:4;14284:6;;:13;;;;;;;;;;;;;;;;;;22719:20:::1;22742:9;:24;22760:4;22742:24;;;;;;;;;;;;;;;;22719:47;;22779:24;22806:45;22842:8;;22806:31;22823:13;;22806:12;:16;;:31;;;;:::i;:::-;:35;;:45;;;;:::i;:::-;22779:72;;22862:23;22888:44;22923:8;;22888:30;22905:12;;22888;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;22862:70;;22943:17;22963:38;22992:8;;22963:24;22980:6;;22963:12;:16;;:24;;;;:::i;:::-;:28;;:38;;;;:::i;:::-;22943:58;;23012:23;23038:44;23073:8;;23038:30;23055:12;;23038;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;23012:70;;23096:39;23119:15;23096:22;:39::i;:::-;23146:34;23163:16;23146;:34::i;:::-;23191:31;23206:15;23191:14;:31::i;:::-;23233:27;23250:9;23233:16;:27::i;:::-;14299:1;;;;;14311:5:::0;14302:6;;:14;;;;;;;;;;;;;;;;;;22670:598::o;21241:114::-;21303:4;21328:11;:19;21340:6;21328:19;;;;;;;;;;;;;;;;;;;;;;;;;21327:20;21320:27;;21241:114;;;:::o;21691:766::-;21758:7;21804:17;21863:1;21836:24;21853:6;21836:16;:24::i;:::-;:28;;:107;;;;;21927:15;21911:10;21883:24;21900:6;21883:16;:24::i;:::-;:39;21882:60;;21836:107;21832:579;;;21976:39;22009:5;21976:28;21987:16;;21976:6;:10;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;21964:51;;22061:39;22090:9;22061;:24;22079:4;22061:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22034:9;:24;22052:4;22034:24;;;;;;;;;;;;;;;:66;;;;22149:4;22124:42;;22133:6;22124:42;;;22156:9;22124:42;;;;;;;;;;;;;;;;;;21832:579;;;22225:31;22250:5;22225:20;22236:8;;22225:6;:10;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;22213:43;;22298:39;22327:9;22298;:24;22316:4;22298:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22271:9;:24;22289:4;22271:24;;;;;;;;;;;;;;;:66;;;;22382:4;22357:42;;22366:6;22357:42;;;22389:9;22357:42;;;;;;;;;;;;;;;;;;21832:579;22428:21;22439:9;22428:6;:10;;:21;;;;:::i;:::-;22421:28;;;21691:766;;;;:::o;21367:102::-;21422:4;21457;;;;;;;;;;;21446:15;;:7;:15;;;21439:22;;21367:102;;;:::o;21042:191::-;21144:16;;21120:9;:20;21130:9;21120:20;;;;;;;;;;;;;;;;:40;;:72;;;;21164:17;:28;21182:9;21164:28;;;;;;;;;;;;;;;;;;;;;;;;;21120:72;21112:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21042:191;:::o;758:250::-;816:7;845:1;840;:6;836:47;;;870:1;863:8;;;;836:47;895:9;911:1;907;:5;895:17;;940:1;935;931;:5;;;;;;:10;923:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:1;992:8;;;758:250;;;;;:::o;1014:132::-;1072:7;1099:39;1103:1;1106;1099:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1092:46;;1014:132;;;;:::o;23366:303::-;23434:25;23462:21;23434:49;;23494:24;23511:6;23494:16;:24::i;:::-;23529:21;23553:44;23579:17;23553:21;:25;;:44;;;;:::i;:::-;23529:68;;23616:20;;;;;;;;;;;23608:38;;:53;23647:13;23608:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23366:303;;;:::o;23980:316::-;24044:25;24072:21;24044:49;;24106:24;24123:6;24106:16;:24::i;:::-;24141:21;24165:44;24191:17;24165:21;:25;;:44;;;;:::i;:::-;24141:68;;24234:11;;;;;;;;;;;:19;;;24261:13;24234:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24230:59;;;;;;23980:316;;;:::o;24308:533::-;24418:12;24433:13;24444:1;24433:6;:10;;:13;;;;:::i;:::-;24418:28;;24457:17;24477:16;24488:4;24477:6;:10;;:16;;;;:::i;:::-;24457:36;;24514:22;24539:21;24514:46;;24581:22;24598:4;24581:16;:22::i;:::-;24616:18;24638:41;24664:14;24638:21;:25;;:41;;;;:::i;:::-;24616:63;;24729:35;24742:9;24753:10;24729:12;:35::i;:::-;24790:43;24805:4;24811:10;24823:9;24790:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24308:533;;;;;:::o;23681:291::-;23743:25;23771:21;23743:49;;23803:24;23820:6;23803:16;:24::i;:::-;23838:21;23862:44;23888:17;23862:21;:25;;:44;;;;:::i;:::-;23838:68;;23925:14;;;;;;;;;;;23917:32;;:47;23950:13;23917:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23681:291;;;:::o;1152:345::-;1238:7;1337:1;1333;:5;1340:12;1325:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:9;1380:1;1376;:5;;;;;;1364:17;;1488:1;1481:8;;;1152:345;;;;;:::o;24853:569::-;24991:21;25029:1;25015:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24991:40;;25060:4;25042;25047:1;25042:7;;;;;;;;;;;;;:23;;;;;;;;;;;25086:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25076:4;25081:1;25076:7;;;;;;;;;;;;;:23;;;;;;;;;;;25138:6;;;;;;;;;;;:57;;;25210:11;25236:1;25280:4;25307;25327:15;25138:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25379:35;25396:11;25409:4;25379:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24853:569;;:::o;25430:354::-;25510:6;;;;;;;;;;;:22;;;25540:9;25573:4;25593:11;25619:1;25662;25705:20;;;;;;;;;;;25740:15;25510:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25430:354;;:::o
Swarm Source
ipfs://e054e4ccf194daf6e47e644124d944d80f224c343bb2a5adca28202a01be7c58
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.