Token CroPunks Coin
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000,000,000 CroPunks
Holders:
308 addresses
Contract:
Decimals:
9
Official Site:
Balance
9,741,957,962.827307393 CroPunksValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
OVERVIEW
CROPUNKS Club is an ecosystem on the Cronos Blockchain, consisting of 1024 AI generated non-fungible tokens, the CroPunks Coin, and much more.Update? Click here to update the token ICO / general information
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CroPunksCoin
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-26 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; //Website: www.CROPUNKS.club //Whitepaper: http://cropunks.club/whitepaper //Twitter: https://twitter.com/CROPUNKSclub //Telegram: https://t.me/CROPUNKS_club interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library Address{ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract CroPunksCoin is Context, IERC20, Ownable { using Address for address payable; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; bool public swapEnabled = true; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100_000_000_000_000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public swapTokensAtAmount = 800_000_000_000 * 10**_decimals; uint256 public maxTxAmount = 2_000_000_000_000 * 10**_decimals; uint256 public maxWalletAmount = 2_000_000_000_000 * 10**_decimals; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; address public marketingWallet = 0xc19994D3620833409Af6F169f1918e625328ba77; string private constant _name = "CroPunks Coin"; string private constant _symbol = "CroPunks"; struct Taxes { uint256 rfi; uint256 marketing; uint256 liquidity; uint256 burn; } Taxes public taxes = Taxes(2,4,4,0); struct TotFeesPaidStruct{ uint256 rfi; uint256 marketing; uint256 liquidity; uint256 burn; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 rLiquidity; uint256 rBurn; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; uint256 tLiquidity; uint256 tBurn; } event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor () { IRouter _router = IRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); excludeFromReward(deadAddress); _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingWallet]=true; _isExcludedFromFee[deadAddress] = false; emit Transfer(address(0), owner(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _burn) public onlyOwner { taxes = Taxes(_rfi, _marketing, _liquidity, _burn); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tMarketing; } _rOwned[address(this)] +=rMarketing; } function _takeBurn(uint256 rBurn, uint256 tBurn) private{ totFeesPaid.burn +=tBurn; if(_isExcluded[deadAddress]) { _tOwned[deadAddress]+=tBurn; } _rOwned[deadAddress] +=rBurn; } function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity, to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } s.tRfi = tAmount*taxes.rfi/100; s.tMarketing = tAmount*taxes.marketing/100; s.tLiquidity = tAmount*taxes.liquidity/100; s.tBurn = tAmount*taxes.burn/100; s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tBurn; return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0); } rRfi = s.tRfi*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rBurn = s.rBurn*currentRate; rTransferAmount = rAmount-rRfi-rMarketing-rLiquidity-rBurn; return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity, rBurn); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ if(to != pair) require(balanceOf(to) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount"); require(amount <= maxTxAmount, "You are esceeding maxTxAmount"); } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ swapAndLiquify(swapTokensAtAmount); } _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to])); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi); if(s.rLiquidity > 0 || s.tLiquidity > 0) { _takeLiquidity(s.rLiquidity,s.tLiquidity); } if(s.rMarketing > 0 || s.tMarketing > 0){ _takeMarketing(s.rMarketing, s.tMarketing); } if(s.rBurn > 0 || s.tBurn > 0){ _takeBurn(s.rBurn, s.tBurn); emit Transfer(sender, deadAddress, s.tBurn); } emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator = (taxes.liquidity + taxes.marketing ) * 2; uint256 tokensToAddLiquidityWith = tokens * taxes.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForBNB(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - taxes.liquidity); uint256 bnbToAddLiquidityWith = unitBalance * taxes.liquidity; if(bnbToAddLiquidityWith > 0){ // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * taxes.marketing; if(marketingAmt > 0){ payable(marketingWallet).sendValue(marketingAmt); } } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable marketingWallet, block.timestamp ); } function swapTokensForBNB(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(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updatemarketingWallet(address newWallet) external onlyOwner{ marketingWallet = newWallet; _isExcludedFromFee[marketingWallet] = true; } function updateMaxTxAmount(uint256 amount) external onlyOwner{ maxTxAmount = amount * 10**_decimals; } function updateMaxWalletBalance(uint256 amount) external onlyOwner{ maxWalletAmount = amount * 10**_decimals; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ // Thanks Freezy router = IRouter(newRouter); pair = newPair; } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake) // Owner cannot transfer out catecoin from this smart contract function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount); } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatemarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805460ff191660011790556200001f6009600a6200098d565b6200003190655af3107a40006200099e565b60098190556200004490600019620009d6565b6200005290600019620009ed565b600a556009600a6200006591906200098d565b620000769064ba43b740006200099e565b600b55620000876009600a6200098d565b62000099906501d1a94a20006200099e565b600c55620000aa6009600a6200098d565b620000bc906501d1a94a20006200099e565b600d55600e80546001600160a01b03191673c19994d3620833409af6f169f1918e625328ba7717905560408051608081018252600280825260046020830181905292820183905260006060909201829052600f5560108290556011919091556012553480156200012b57600080fd5b5062000137336200043f565b600073145677fc4d9b8f19b5d56d1820c48e0443049a3090506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b7919062000a07565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b919062000a07565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062000a07565b600780546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600880549183166001600160a01b031990921682179055909150620002ed906200048f565b620002fa61dead6200048f565b600a5460016000620003146000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200034e6200061d60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155600e54909116835290822080548416909117905561dead90527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169055620003e76000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200042f91815260200190565b60405180910390a3505062000a7d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200055a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620004e6565b6001600160a01b03811660009081526001602052604090205415620005b7576001600160a01b0381166000908152600160205260409020546200059d906200062c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600a54821115620006955760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620004e6565b6000620006a1620006b6565b9050620006af818462000a32565b9392505050565b60008080620006c4620006dc565b9092509050620006d5818362000a32565b9250505090565b600a546009546000918291825b60065481101562000844578260016000600684815481106200070f576200070f62000a49565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200077e575081600260006006848154811062000757576200075762000a49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200079557600a54600954945094505050509091565b6001600060068381548110620007af57620007af62000a49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007e09084620009ed565b92506002600060068381548110620007fc57620007fc62000a49565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200082d9083620009ed565b9150806200083b8162000a5f565b915050620006e9565b50600954600a5462000857919062000a32565b8210156200086f57600a546009549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008cf578160001904821115620008b357620008b362000878565b80851615620008c157918102915b93841c939080029062000893565b509250929050565b600082620008e85750600162000987565b81620008f75750600062000987565b81600181146200091057600281146200091b576200093b565b600191505062000987565b60ff8411156200092f576200092f62000878565b50506001821b62000987565b5060208310610133831016604e8410600b841016171562000960575081810a62000987565b6200096c83836200088e565b806000190482111562000983576200098362000878565b0290505b92915050565b6000620006af60ff841683620008d7565b6000816000190483118215151615620009bb57620009bb62000878565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620009e857620009e8620009c0565b500690565b60008282101562000a025762000a0262000878565b500390565b60006020828403121562000a1a57600080fd5b81516001600160a01b0381168114620006af57600080fd5b60008262000a445762000a44620009c0565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141562000a765762000a7662000878565b5060010190565b6129f48062000a8d6000396000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063a457c2d7116100b6578063d257b34f1161007a578063d257b34f1461073b578063dd62ed3e1461075b578063e2f45605146107a1578063ea2f0b37146107b7578063f2fde38b146107d7578063f887ea40146107f757600080fd5b8063a457c2d7146106a5578063a8aa1b31146106c5578063a9059cbb146106e5578063aa4bde2814610705578063bff781691461071b57600080fd5b80638da5cb5b116100fd5780638da5cb5b146105f3578063924de9b71461061157806395d89b41146106315780639ba5e4d514610662578063a12a7d611461068557600080fd5b8063715018a61461052c578063728f8eea1461054157806375f0a8741461058457806388f82020146105a45780638c0b5e22146105dd57600080fd5b806340b28c2f116101c757806352390c021161018b57806352390c02146104795780635342acb4146104995780636256d181146104d25780636ddd1713146104f257806370a082311461050c57600080fd5b806340b28c2f146103d9578063437823ec146103f9578063441b1d30146104195780634549b0391461043957806347c230921461045957600080fd5b806327c8f8351161020e57806327c8f8351461032f5780632d8381191461035d578063313ce5671461037d5780633685d4191461039957806339509351146103b957600080fd5b806306fdde0314610256578063095ea7b31461029e57806318160ddd146102ce578063188b1bf1146102ed57806323b872dd1461030f57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5060408051808201909152600d81526c21b937a83ab735b99021b7b4b760991b60208201525b6040516102959190612528565b60405180910390f35b3480156102aa57600080fd5b506102be6102b9366004612592565b61081d565b6040519015158152602001610295565b3480156102da57600080fd5b506009545b604051908152602001610295565b3480156102f957600080fd5b5061030d6103083660046125be565b610834565b005b34801561031b57600080fd5b506102be61032a3660046125d7565b610883565b34801561033b57600080fd5b5061034561dead81565b6040516001600160a01b039091168152602001610295565b34801561036957600080fd5b506102df6103783660046125be565b610934565b34801561038957600080fd5b5060405160098152602001610295565b3480156103a557600080fd5b5061030d6103b4366004612618565b6109b8565b3480156103c557600080fd5b506102be6103d4366004612592565b610b6f565b3480156103e557600080fd5b5061030d6103f4366004612635565b610ba6565b34801561040557600080fd5b5061030d610414366004612618565b610c0a565b34801561042557600080fd5b5061030d6104343660046125be565b610c58565b34801561044557600080fd5b506102df61045436600461267c565b610cff565b34801561046557600080fd5b5061030d6104743660046125d7565b610d89565b34801561048557600080fd5b5061030d610494366004612618565b610e2c565b3480156104a557600080fd5b506102be6104b4366004612618565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104de57600080fd5b5061030d6104ed3660046125be565b610f7f565b3480156104fe57600080fd5b506007546102be9060ff1681565b34801561051857600080fd5b506102df610527366004612618565b610fc5565b34801561053857600080fd5b5061030d611024565b34801561054d57600080fd5b50600f546010546011546012546105649392919084565b604080519485526020850193909352918301526060820152608001610295565b34801561059057600080fd5b50600e54610345906001600160a01b031681565b3480156105b057600080fd5b506102be6105bf366004612618565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e957600080fd5b506102df600c5481565b3480156105ff57600080fd5b506000546001600160a01b0316610345565b34801561061d57600080fd5b5061030d61062c3660046126a1565b61105a565b34801561063d57600080fd5b5060408051808201909152600881526743726f50756e6b7360c01b6020820152610288565b34801561066e57600080fd5b506013546014546015546016546105649392919084565b34801561069157600080fd5b5061030d6106a03660046126be565b611097565b3480156106b157600080fd5b506102be6106c0366004612592565b6110f5565b3480156106d157600080fd5b50600854610345906001600160a01b031681565b3480156106f157600080fd5b506102be610700366004612592565b611190565b34801561071157600080fd5b506102df600d5481565b34801561072757600080fd5b5061030d610736366004612618565b61119d565b34801561074757600080fd5b5061030d6107563660046125be565b611201565b34801561076757600080fd5b506102df610776366004612635565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107ad57600080fd5b506102df600b5481565b3480156107c357600080fd5b5061030d6107d2366004612618565b611247565b3480156107e357600080fd5b5061030d6107f2366004612618565b611292565b34801561080357600080fd5b50600754610345906201000090046001600160a01b031681565b600061082a33848461132d565b5060015b92915050565b6000546001600160a01b031633146108675760405162461bcd60e51b815260040161085e906126f0565b60405180910390fd5b6108736009600a61281f565b61087d908261282e565b600d5550565b6000610890848484611451565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156109155760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085e565b6109298533610924868561284d565b61132d565b506001949350505050565b6000600a5482111561099b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161085e565b60006109a5611801565b90506109b18184612864565b9392505050565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03811660009081526005602052604090205460ff16610a4a5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161085e565b60005b600654811015610b6b57816001600160a01b031660068281548110610a7457610a74612886565b6000918252602090912001546001600160a01b03161415610b595760068054610a9f9060019061284d565b81548110610aaf57610aaf612886565b600091825260209091200154600680546001600160a01b039092169183908110610adb57610adb612886565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610b3357610b3361289c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b63816128b2565b915050610a4d565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161082a9185906109249086906128cd565b6000546001600160a01b03163314610bd05760405162461bcd60e51b815260040161085e906126f0565b6007805462010000600160b01b031916620100006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b815260040161085e906126f0565b80471015610cd25760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e63650000000000000000604482015260640161085e565b604051339082156108fc029083906000818181858888f19350505050158015610b6b573d6000803e3d6000fd5b6000600954831115610d535760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161085e565b81610d6f576000610d65846001611824565b51915061082e9050565b6000610d7c846001611824565b60200151915061082e9050565b6000546001600160a01b03163314610db35760405162461bcd60e51b815260040161085e906126f0565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906128e5565b50505050565b6000546001600160a01b03163314610e565760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03811660009081526005602052604090205460ff1615610ebf5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161085e565b6001600160a01b03811660009081526001602052604090205415610f19576001600160a01b038116600090815260016020526040902054610eff90610934565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fa95760405162461bcd60e51b815260040161085e906126f0565b610fb56009600a61281f565b610fbf908261282e565b600c5550565b6001600160a01b03811660009081526005602052604081205460ff161561100257506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461082e90610934565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161085e906126f0565b611058600061186c565b565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161085e906126f0565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260040161085e906126f0565b6040805160808101825285815260208101859052908101839052606001819052600f93909355601091909155601155601255565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156111775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085e565b6111863385610924868561284d565b5060019392505050565b600061082a338484611451565b6000546001600160a01b031633146111c75760405162461bcd60e51b815260040161085e906126f0565b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b6000546001600160a01b0316331461122b5760405162461bcd60e51b815260040161085e906126f0565b6112376009600a61281f565b611241908261282e565b600b5550565b6000546001600160a01b031633146112715760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112bc5760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b0381166113215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085e565b61132a8161186c565b50565b6001600160a01b03831661138f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085e565b6001600160a01b0382166113f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161085e565b6001600160a01b0382166115175760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161085e565b600081116115795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161085e565b61158283610fc5565b8111156115eb5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161085e565b6001600160a01b03831660009081526004602052604090205460ff1615801561162d57506001600160a01b03821660009081526004602052604090205460ff16155b15611708576008546001600160a01b038381169116146116b657600d548161165484610fc5565b61165e91906128cd565b11156116b65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161085e565b600c548111156117085760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657363656564696e67206d61785478416d6f756e74000000604482015260640161085e565b6000600b5461171630610fc5565b6007549111159150610100900460ff16158015611735575060075460ff165b801561173e5750805b801561175857506008546001600160a01b03858116911614155b801561177d57506001600160a01b03841660009081526004602052604090205460ff16155b80156117a257506001600160a01b03831660009081526004602052604090205460ff16155b156117b2576117b2600b546118bc565b6001600160a01b038416600090815260046020526040902054610e269085908590859060ff16806117fb57506001600160a01b03871660009081526004602052604090205460ff165b156119bf565b600080600061180e611cce565b909250905061181d8183612864565b9250505090565b61182c6124ce565b6118368383611e51565b905061184b818484611846611801565b611f2f565b60a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff0019166101001790556010546011546000916118dd916128cd565b6118e890600261282e565b9050600081600f60020154846118fe919061282e565b6119089190612864565b90506000611916828561284d565b90504761192282611fe0565b600061192e824761284d565b601154909150600090611941908761284d565b61194b9083612864565b60115490915060009061195e908361282e565b9050801561197057611970868261215f565b60105460009061198184600261282e565b61198b919061282e565b905080156119a957600e546119a9906001600160a01b03168261221f565b50506007805461ff001916905550505050505050565b60006119cb8383611824565b6001600160a01b03861660009081526005602052604090205490915060ff1615611a2d576001600160a01b038516600090815260026020526040902054611a1390849061284d565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611a905760c08101516001600160a01b038516600090815260026020526040902054611a7691906128cd565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611ab5919061284d565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611aec91906128cd565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611b1e575060008160e00151115b15611b3557611b3581604001518260e0015161233d565b600081608001511180611b4d57506000816101200151115b15611b6557611b658160800151826101200151612372565b600081606001511180611b7d57506000816101000151115b15611b9557611b9581606001518261010001516123e8565b60008160a001511180611bad57506000816101400151115b15611c1a57611bc58160a001518261014001516123fd565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151604051611c1191815260200190565b60405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611c6391815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151846101200151611cb691906128cd565b60405190815260200160405180910390a35050505050565b600a546009546000918291825b600654811015611e2057826001600060068481548110611cfd57611cfd612886565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611d685750816002600060068481548110611d4157611d41612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611d7e57600a54600954945094505050509091565b6001600060068381548110611d9557611d95612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611dc4908461284d565b92506002600060068381548110611ddd57611ddd612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e0c908361284d565b915080611e18816128b2565b915050611cdb565b50600954600a54611e319190612864565b821015611e4857600a546009549350935050509091565b90939092509050565b611e596124ce565b81611e6a5760c0810183905261082e565b600f54606490611e7a908561282e565b611e849190612864565b60e0820152601054606490611e99908561282e565b611ea39190612864565b610100820152601154606490611eb9908561282e565b611ec39190612864565b610120820152601254606490611ed9908561282e565b611ee39190612864565b610140820181905261012082015161010083015160e0840151611f06908761284d565b611f10919061284d565b611f1a919061284d565b611f24919061284d565b60c082015292915050565b60008080808080611f40878a61282e565b955087611f5b57508493506000925082915081905080611fd3565b868a60e00151611f6b919061282e565b9350868a6101000151611f7e919061282e565b9250868a6101200151611f91919061282e565b9150868a60a00151611fa3919061282e565b9050808284611fb2878a61284d565b611fbc919061284d565b611fc6919061284d565b611fd0919061284d565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061201557612015612886565b60200260200101906001600160a01b031690816001600160a01b031681525050600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190612902565b816001815181106120bf576120bf612886565b6001600160a01b0392831660209182029290920101526007546120eb913091620100009004168461132d565b60075460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061212990859060009086903090429060040161291f565b600060405180830381600087803b15801561214357600080fd5b505af1158015612157573d6000803e3d6000fd5b505050505050565b60075461217d9030906201000090046001600160a01b03168461132d565b600754600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af11580156121f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122189190612990565b5050505050565b8047101561226f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161085e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122bc576040519150601f19603f3d011682016040523d82523d6000602084013e6122c1565b606091505b50509050806123385760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161085e565b505050565b81600a600082825461234f919061284d565b9091555050601380548291906000906123699084906128cd565b90915550505050565b806013600201600082825461238791906128cd565b90915550503060009081526005602052604090205460ff16156123c95730600090815260026020526040812080548392906123c39084906128cd565b90915550505b30600090815260016020526040812080548492906123699084906128cd565b806013600101600082825461238791906128cd565b806013600301600082825461241291906128cd565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff16156124905761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc805483929061248a9084906128cd565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548492906123699084906128cd565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b8181101561255557858101830151858201604001528201612539565b81811115612567576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461132a57600080fd5b600080604083850312156125a557600080fd5b82356125b08161257d565b946020939093013593505050565b6000602082840312156125d057600080fd5b5035919050565b6000806000606084860312156125ec57600080fd5b83356125f78161257d565b925060208401356126078161257d565b929592945050506040919091013590565b60006020828403121561262a57600080fd5b81356109b18161257d565b6000806040838503121561264857600080fd5b82356126538161257d565b915060208301356126638161257d565b809150509250929050565b801515811461132a57600080fd5b6000806040838503121561268f57600080fd5b8235915060208301356126638161266e565b6000602082840312156126b357600080fd5b81356109b18161266e565b600080600080608085870312156126d457600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561277657816000190482111561275c5761275c612725565b8085161561276957918102915b93841c9390800290612740565b509250929050565b60008261278d5750600161082e565b8161279a5750600061082e565b81600181146127b057600281146127ba576127d6565b600191505061082e565b60ff8411156127cb576127cb612725565b50506001821b61082e565b5060208310610133831016604e8410600b84101617156127f9575081810a61082e565b612803838361273b565b806000190482111561281757612817612725565b029392505050565b60006109b160ff84168361277e565b600081600019048311821515161561284857612848612725565b500290565b60008282101561285f5761285f612725565b500390565b60008261288157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156128c6576128c6612725565b5060010190565b600082198211156128e0576128e0612725565b500190565b6000602082840312156128f757600080fd5b81516109b18161266e565b60006020828403121561291457600080fd5b81516109b18161257d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561296f5784516001600160a01b03168352938301939183019160010161294a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129a557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207146983c6cc8061b080e5d424dd6b9559e895d656aef5b2cad2c4774f14ff6b164736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c8063715018a611610139578063a457c2d7116100b6578063d257b34f1161007a578063d257b34f1461073b578063dd62ed3e1461075b578063e2f45605146107a1578063ea2f0b37146107b7578063f2fde38b146107d7578063f887ea40146107f757600080fd5b8063a457c2d7146106a5578063a8aa1b31146106c5578063a9059cbb146106e5578063aa4bde2814610705578063bff781691461071b57600080fd5b80638da5cb5b116100fd5780638da5cb5b146105f3578063924de9b71461061157806395d89b41146106315780639ba5e4d514610662578063a12a7d611461068557600080fd5b8063715018a61461052c578063728f8eea1461054157806375f0a8741461058457806388f82020146105a45780638c0b5e22146105dd57600080fd5b806340b28c2f116101c757806352390c021161018b57806352390c02146104795780635342acb4146104995780636256d181146104d25780636ddd1713146104f257806370a082311461050c57600080fd5b806340b28c2f146103d9578063437823ec146103f9578063441b1d30146104195780634549b0391461043957806347c230921461045957600080fd5b806327c8f8351161020e57806327c8f8351461032f5780632d8381191461035d578063313ce5671461037d5780633685d4191461039957806339509351146103b957600080fd5b806306fdde0314610256578063095ea7b31461029e57806318160ddd146102ce578063188b1bf1146102ed57806323b872dd1461030f57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5060408051808201909152600d81526c21b937a83ab735b99021b7b4b760991b60208201525b6040516102959190612528565b60405180910390f35b3480156102aa57600080fd5b506102be6102b9366004612592565b61081d565b6040519015158152602001610295565b3480156102da57600080fd5b506009545b604051908152602001610295565b3480156102f957600080fd5b5061030d6103083660046125be565b610834565b005b34801561031b57600080fd5b506102be61032a3660046125d7565b610883565b34801561033b57600080fd5b5061034561dead81565b6040516001600160a01b039091168152602001610295565b34801561036957600080fd5b506102df6103783660046125be565b610934565b34801561038957600080fd5b5060405160098152602001610295565b3480156103a557600080fd5b5061030d6103b4366004612618565b6109b8565b3480156103c557600080fd5b506102be6103d4366004612592565b610b6f565b3480156103e557600080fd5b5061030d6103f4366004612635565b610ba6565b34801561040557600080fd5b5061030d610414366004612618565b610c0a565b34801561042557600080fd5b5061030d6104343660046125be565b610c58565b34801561044557600080fd5b506102df61045436600461267c565b610cff565b34801561046557600080fd5b5061030d6104743660046125d7565b610d89565b34801561048557600080fd5b5061030d610494366004612618565b610e2c565b3480156104a557600080fd5b506102be6104b4366004612618565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104de57600080fd5b5061030d6104ed3660046125be565b610f7f565b3480156104fe57600080fd5b506007546102be9060ff1681565b34801561051857600080fd5b506102df610527366004612618565b610fc5565b34801561053857600080fd5b5061030d611024565b34801561054d57600080fd5b50600f546010546011546012546105649392919084565b604080519485526020850193909352918301526060820152608001610295565b34801561059057600080fd5b50600e54610345906001600160a01b031681565b3480156105b057600080fd5b506102be6105bf366004612618565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e957600080fd5b506102df600c5481565b3480156105ff57600080fd5b506000546001600160a01b0316610345565b34801561061d57600080fd5b5061030d61062c3660046126a1565b61105a565b34801561063d57600080fd5b5060408051808201909152600881526743726f50756e6b7360c01b6020820152610288565b34801561066e57600080fd5b506013546014546015546016546105649392919084565b34801561069157600080fd5b5061030d6106a03660046126be565b611097565b3480156106b157600080fd5b506102be6106c0366004612592565b6110f5565b3480156106d157600080fd5b50600854610345906001600160a01b031681565b3480156106f157600080fd5b506102be610700366004612592565b611190565b34801561071157600080fd5b506102df600d5481565b34801561072757600080fd5b5061030d610736366004612618565b61119d565b34801561074757600080fd5b5061030d6107563660046125be565b611201565b34801561076757600080fd5b506102df610776366004612635565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107ad57600080fd5b506102df600b5481565b3480156107c357600080fd5b5061030d6107d2366004612618565b611247565b3480156107e357600080fd5b5061030d6107f2366004612618565b611292565b34801561080357600080fd5b50600754610345906201000090046001600160a01b031681565b600061082a33848461132d565b5060015b92915050565b6000546001600160a01b031633146108675760405162461bcd60e51b815260040161085e906126f0565b60405180910390fd5b6108736009600a61281f565b61087d908261282e565b600d5550565b6000610890848484611451565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156109155760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085e565b6109298533610924868561284d565b61132d565b506001949350505050565b6000600a5482111561099b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161085e565b60006109a5611801565b90506109b18184612864565b9392505050565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03811660009081526005602052604090205460ff16610a4a5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161085e565b60005b600654811015610b6b57816001600160a01b031660068281548110610a7457610a74612886565b6000918252602090912001546001600160a01b03161415610b595760068054610a9f9060019061284d565b81548110610aaf57610aaf612886565b600091825260209091200154600680546001600160a01b039092169183908110610adb57610adb612886565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610b3357610b3361289c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b63816128b2565b915050610a4d565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161082a9185906109249086906128cd565b6000546001600160a01b03163314610bd05760405162461bcd60e51b815260040161085e906126f0565b6007805462010000600160b01b031916620100006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b815260040161085e906126f0565b80471015610cd25760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e63650000000000000000604482015260640161085e565b604051339082156108fc029083906000818181858888f19350505050158015610b6b573d6000803e3d6000fd5b6000600954831115610d535760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161085e565b81610d6f576000610d65846001611824565b51915061082e9050565b6000610d7c846001611824565b60200151915061082e9050565b6000546001600160a01b03163314610db35760405162461bcd60e51b815260040161085e906126f0565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906128e5565b50505050565b6000546001600160a01b03163314610e565760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03811660009081526005602052604090205460ff1615610ebf5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161085e565b6001600160a01b03811660009081526001602052604090205415610f19576001600160a01b038116600090815260016020526040902054610eff90610934565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fa95760405162461bcd60e51b815260040161085e906126f0565b610fb56009600a61281f565b610fbf908261282e565b600c5550565b6001600160a01b03811660009081526005602052604081205460ff161561100257506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461082e90610934565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161085e906126f0565b611058600061186c565b565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161085e906126f0565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260040161085e906126f0565b6040805160808101825285815260208101859052908101839052606001819052600f93909355601091909155601155601255565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156111775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085e565b6111863385610924868561284d565b5060019392505050565b600061082a338484611451565b6000546001600160a01b031633146111c75760405162461bcd60e51b815260040161085e906126f0565b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b6000546001600160a01b0316331461122b5760405162461bcd60e51b815260040161085e906126f0565b6112376009600a61281f565b611241908261282e565b600b5550565b6000546001600160a01b031633146112715760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112bc5760405162461bcd60e51b815260040161085e906126f0565b6001600160a01b0381166113215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085e565b61132a8161186c565b50565b6001600160a01b03831661138f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085e565b6001600160a01b0382166113f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161085e565b6001600160a01b0382166115175760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161085e565b600081116115795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161085e565b61158283610fc5565b8111156115eb5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161085e565b6001600160a01b03831660009081526004602052604090205460ff1615801561162d57506001600160a01b03821660009081526004602052604090205460ff16155b15611708576008546001600160a01b038381169116146116b657600d548161165484610fc5565b61165e91906128cd565b11156116b65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161085e565b600c548111156117085760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657363656564696e67206d61785478416d6f756e74000000604482015260640161085e565b6000600b5461171630610fc5565b6007549111159150610100900460ff16158015611735575060075460ff165b801561173e5750805b801561175857506008546001600160a01b03858116911614155b801561177d57506001600160a01b03841660009081526004602052604090205460ff16155b80156117a257506001600160a01b03831660009081526004602052604090205460ff16155b156117b2576117b2600b546118bc565b6001600160a01b038416600090815260046020526040902054610e269085908590859060ff16806117fb57506001600160a01b03871660009081526004602052604090205460ff165b156119bf565b600080600061180e611cce565b909250905061181d8183612864565b9250505090565b61182c6124ce565b6118368383611e51565b905061184b818484611846611801565b611f2f565b60a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff0019166101001790556010546011546000916118dd916128cd565b6118e890600261282e565b9050600081600f60020154846118fe919061282e565b6119089190612864565b90506000611916828561284d565b90504761192282611fe0565b600061192e824761284d565b601154909150600090611941908761284d565b61194b9083612864565b60115490915060009061195e908361282e565b9050801561197057611970868261215f565b60105460009061198184600261282e565b61198b919061282e565b905080156119a957600e546119a9906001600160a01b03168261221f565b50506007805461ff001916905550505050505050565b60006119cb8383611824565b6001600160a01b03861660009081526005602052604090205490915060ff1615611a2d576001600160a01b038516600090815260026020526040902054611a1390849061284d565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611a905760c08101516001600160a01b038516600090815260026020526040902054611a7691906128cd565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611ab5919061284d565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611aec91906128cd565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611b1e575060008160e00151115b15611b3557611b3581604001518260e0015161233d565b600081608001511180611b4d57506000816101200151115b15611b6557611b658160800151826101200151612372565b600081606001511180611b7d57506000816101000151115b15611b9557611b9581606001518261010001516123e8565b60008160a001511180611bad57506000816101400151115b15611c1a57611bc58160a001518261014001516123fd565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151604051611c1191815260200190565b60405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611c6391815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151846101200151611cb691906128cd565b60405190815260200160405180910390a35050505050565b600a546009546000918291825b600654811015611e2057826001600060068481548110611cfd57611cfd612886565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611d685750816002600060068481548110611d4157611d41612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611d7e57600a54600954945094505050509091565b6001600060068381548110611d9557611d95612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611dc4908461284d565b92506002600060068381548110611ddd57611ddd612886565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e0c908361284d565b915080611e18816128b2565b915050611cdb565b50600954600a54611e319190612864565b821015611e4857600a546009549350935050509091565b90939092509050565b611e596124ce565b81611e6a5760c0810183905261082e565b600f54606490611e7a908561282e565b611e849190612864565b60e0820152601054606490611e99908561282e565b611ea39190612864565b610100820152601154606490611eb9908561282e565b611ec39190612864565b610120820152601254606490611ed9908561282e565b611ee39190612864565b610140820181905261012082015161010083015160e0840151611f06908761284d565b611f10919061284d565b611f1a919061284d565b611f24919061284d565b60c082015292915050565b60008080808080611f40878a61282e565b955087611f5b57508493506000925082915081905080611fd3565b868a60e00151611f6b919061282e565b9350868a6101000151611f7e919061282e565b9250868a6101200151611f91919061282e565b9150868a60a00151611fa3919061282e565b9050808284611fb2878a61284d565b611fbc919061284d565b611fc6919061284d565b611fd0919061284d565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061201557612015612886565b60200260200101906001600160a01b031690816001600160a01b031681525050600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190612902565b816001815181106120bf576120bf612886565b6001600160a01b0392831660209182029290920101526007546120eb913091620100009004168461132d565b60075460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061212990859060009086903090429060040161291f565b600060405180830381600087803b15801561214357600080fd5b505af1158015612157573d6000803e3d6000fd5b505050505050565b60075461217d9030906201000090046001600160a01b03168461132d565b600754600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af11580156121f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122189190612990565b5050505050565b8047101561226f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161085e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122bc576040519150601f19603f3d011682016040523d82523d6000602084013e6122c1565b606091505b50509050806123385760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161085e565b505050565b81600a600082825461234f919061284d565b9091555050601380548291906000906123699084906128cd565b90915550505050565b806013600201600082825461238791906128cd565b90915550503060009081526005602052604090205460ff16156123c95730600090815260026020526040812080548392906123c39084906128cd565b90915550505b30600090815260016020526040812080548492906123699084906128cd565b806013600101600082825461238791906128cd565b806013600301600082825461241291906128cd565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff16156124905761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc805483929061248a9084906128cd565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548492906123699084906128cd565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b8181101561255557858101830151858201604001528201612539565b81811115612567576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461132a57600080fd5b600080604083850312156125a557600080fd5b82356125b08161257d565b946020939093013593505050565b6000602082840312156125d057600080fd5b5035919050565b6000806000606084860312156125ec57600080fd5b83356125f78161257d565b925060208401356126078161257d565b929592945050506040919091013590565b60006020828403121561262a57600080fd5b81356109b18161257d565b6000806040838503121561264857600080fd5b82356126538161257d565b915060208301356126638161257d565b809150509250929050565b801515811461132a57600080fd5b6000806040838503121561268f57600080fd5b8235915060208301356126638161266e565b6000602082840312156126b357600080fd5b81356109b18161266e565b600080600080608085870312156126d457600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561277657816000190482111561275c5761275c612725565b8085161561276957918102915b93841c9390800290612740565b509250929050565b60008261278d5750600161082e565b8161279a5750600061082e565b81600181146127b057600281146127ba576127d6565b600191505061082e565b60ff8411156127cb576127cb612725565b50506001821b61082e565b5060208310610133831016604e8410600b84101617156127f9575081810a61082e565b612803838361273b565b806000190482111561281757612817612725565b029392505050565b60006109b160ff84168361277e565b600081600019048311821515161561284857612848612725565b500290565b60008282101561285f5761285f612725565b500390565b60008261288157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156128c6576128c6612725565b5060010190565b600082198211156128e0576128e0612725565b500190565b6000602082840312156128f757600080fd5b81516109b18161266e565b60006020828403121561291457600080fd5b81516109b18161257d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561296f5784516001600160a01b03168352938301939183019160010161294a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129a557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207146983c6cc8061b080e5d424dd6b9559e895d656aef5b2cad2c4774f14ff6b164736f6c634300080a0033
Deployed ByteCode Sourcemap
3354:16681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6135:83;;;;;;;;;;-1:-1:-1;6205:5:0;;;;;;;;;;;;-1:-1:-1;;;6205:5:0;;;;6135:83;;;;;;;:::i;:::-;;;;;;;;7043:161;;;;;;;;;;-1:-1:-1;7043:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7043:161:0;1072:187:1;6408:95:0;;;;;;;;;;-1:-1:-1;6488:7:0;;6408:95;;;1410:25:1;;;1398:2;1383:18;6408:95:0;1264:177:1;18827:125:0;;;;;;;;;;-1:-1:-1;18827:125:0;;;;;:::i;:::-;;:::i;:::-;;7212:422;;;;;;;;;;-1:-1:-1;7212:422:0;;;;;:::i;:::-;;:::i;4347:80::-;;;;;;;;;;;;4385:42;4347:80;;;;;-1:-1:-1;;;;;2256:32:1;;;2238:51;;2226:2;2211:18;4347:80:0;2092:203:1;8842:248:0;;;;;;;;;;-1:-1:-1;8842:248:0;;;;;:::i;:::-;;:::i;6317:83::-;;;;;;;;;;-1:-1:-1;6317:83:0;;3938:1;2442:36:1;;2430:2;2415:18;6317:83:0;2300:184:1;9437:473:0;;;;;;;;;;-1:-1:-1;9437:473:0;;;;;:::i;:::-;;:::i;7642:215::-;;;;;;;;;;-1:-1:-1;7642:215:0;;;;;:::i;:::-;;:::i;19211:180::-;;;;;;;;;;-1:-1:-1;19211:180:0;;;;;:::i;:::-;;:::i;9920:111::-;;;;;;;;;;-1:-1:-1;9920:111:0;;;;;:::i;:::-;;:::i;19463:196::-;;;;;;;;;;-1:-1:-1;19463:196:0;;;;;:::i;:::-;;:::i;8378:456::-;;;;;;;;;;-1:-1:-1;8378:456:0;;;;;:::i;:::-;;:::i;19836:154::-;;;;;;;;;;-1:-1:-1;19836:154:0;;;;;:::i;:::-;;:::i;9098:331::-;;;;;;;;;;-1:-1:-1;9098:331:0;;;;;:::i;:::-;;:::i;10159:123::-;;;;;;;;;;-1:-1:-1;10159:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10247:27:0;10223:4;10247:27;;;:18;:27;;;;;;;;;10159:123;18703:116;;;;;;;;;;-1:-1:-1;18703:116:0;;;;;:::i;:::-;;:::i;3780:30::-;;;;;;;;;;-1:-1:-1;3780:30:0;;;;;;;;6511:198;;;;;;;;;;-1:-1:-1;6511:198:0;;;;;:::i;:::-;;:::i;2131:94::-;;;;;;;;;;;;;:::i;4747:35::-;;;;;;;;;;-1:-1:-1;4747:35:0;;;;;;;;;;;;;;;;;;;3802:25:1;;;3858:2;3843:18;;3836:34;;;;3886:18;;;3879:34;3944:2;3929:18;;3922:34;3789:3;3774:19;4747:35:0;3571:391:1;4434:75:0;;;;;;;;;;-1:-1:-1;4434:75:0;;;;-1:-1:-1;;;;;4434:75:0;;;8250:120;;;;;;;;;;-1:-1:-1;8250:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8342:20:0;8318:4;8342:20;;;:11;:20;;;;;;;;;8250:120;4203:62;;;;;;;;;;;;;;;;1908:87;;;;;;;;;;-1:-1:-1;1954:7:0;1981:6;-1:-1:-1;;;;;1981:6:0;1908:87;;19098:101;;;;;;;;;;-1:-1:-1;19098:101:0;;;;;:::i;:::-;;:::i;6224:87::-;;;;;;;;;;-1:-1:-1;6296:7:0;;;;;;;;;;;;-1:-1:-1;;;6296:7:0;;;;6224:87;;4930:36;;;;;;;;;;-1:-1:-1;4930:36:0;;;;;;;;;;;;;;;10290:173;;;;;;;;;;-1:-1:-1;10290:173:0;;;;;:::i;:::-;;:::i;7865:377::-;;;;;;;;;;-1:-1:-1;7865:377:0;;;;;:::i;:::-;;:::i;3875:19::-;;;;;;;;;;-1:-1:-1;3875:19:0;;;;-1:-1:-1;;;;;3875:19:0;;;6717:167;;;;;;;;;;-1:-1:-1;6717:167:0;;;;;:::i;:::-;;:::i;4272:66::-;;;;;;;;;;;;;;;;18528:167;;;;;;;;;;-1:-1:-1;18528:167:0;;;;;:::i;:::-;;:::i;18960:130::-;;;;;;;;;;-1:-1:-1;18960:130:0;;;;;:::i;:::-;;:::i;6892:143::-;;;;;;;;;;-1:-1:-1;6892:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7000:18:0;;;6973:7;7000:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6892:143;4129:67;;;;;;;;;;;;;;;;10039:110;;;;;;;;;;-1:-1:-1;10039:110:0;;;;;:::i;:::-;;:::i;2233:192::-;;;;;;;;;;-1:-1:-1;2233:192:0;;;;;:::i;:::-;;:::i;3847:21::-;;;;;;;;;;-1:-1:-1;3847:21:0;;;;;;;-1:-1:-1;;;;;3847:21:0;;;7043:161;7118:4;7135:39;1409:10;7158:7;7167:6;7135:8;:39::i;:::-;-1:-1:-1;7192:4:0;7043:161;;;;;:::o;18827:125::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;;;;;;;;;18931:13:::1;3938:1;18931:2;:13;:::i;:::-;18922:22;::::0;:6;:22:::1;:::i;:::-;18904:15;:40:::0;-1:-1:-1;18827:125:0:o;7212:422::-;7318:4;7335:36;7345:6;7353:9;7364:6;7335:9;:36::i;:::-;-1:-1:-1;;;;;7411:19:0;;7384:24;7411:19;;;:11;:19;;;;;;;;1409:10;7411:33;;;;;;;;7463:26;;;;7455:79;;;;-1:-1:-1;;;7455:79:0;;7077:2:1;7455:79:0;;;7059:21:1;7116:2;7096:18;;;7089:30;7155:34;7135:18;;;7128:62;-1:-1:-1;;;7206:18:1;;;7199:38;7254:19;;7455:79:0;6875:404:1;7455:79:0;7545:57;7554:6;1409:10;7576:25;7595:6;7576:16;:25;:::i;:::-;7545:8;:57::i;:::-;-1:-1:-1;7622:4:0;;7212:422;-1:-1:-1;;;;7212:422:0:o;8842:248::-;8908:7;8947;;8936;:18;;8928:73;;;;-1:-1:-1;;;8928:73:0;;7616:2:1;8928:73:0;;;7598:21:1;7655:2;7635:18;;;7628:30;7694:34;7674:18;;;7667:62;-1:-1:-1;;;7745:18:1;;;7738:40;7795:19;;8928:73:0;7414:406:1;8928:73:0;9012:19;9035:10;:8;:10::i;:::-;9012:33;-1:-1:-1;9063:19:0;9012:33;9063:7;:19;:::i;:::-;9056:26;8842:248;-1:-1:-1;;;8842:248:0:o;9437:473::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9517:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9509:56;;;::::0;-1:-1:-1;;;9509:56:0;;8249:2:1;9509:56:0::1;::::0;::::1;8231:21:1::0;8288:2;8268:18;;;8261:30;8327:25;8307:18;;;8300:53;8370:18;;9509:56:0::1;8047:347:1::0;9509:56:0::1;9581:9;9576:327;9600:9;:16:::0;9596:20;::::1;9576:327;;;9658:7;-1:-1:-1::0;;;;;9642:23:0::1;:9;9652:1;9642:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9642:12:0::1;:23;9638:254;;;9701:9;9711:16:::0;;:20:::1;::::0;9730:1:::1;::::0;9711:20:::1;:::i;:::-;9701:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9686:9:::1;:12:::0;;-1:-1:-1;;;;;9701:31:0;;::::1;::::0;9696:1;;9686:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9686:46:0::1;-1:-1:-1::0;;;;;9686:46:0;;::::1;;::::0;;9751:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9790:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9790:28:0::1;::::0;;9837:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9837:15:0;;;;;-1:-1:-1;;;;;;9837:15:0::1;::::0;;;;;9576:327:::1;9437:473:::0;:::o;9638:254::-:1;9618:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9576:327;;;;9437:473:::0;:::o;7642:215::-;1409:10;7730:4;7779:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7779:34:0;;;;;;;;;;7730:4;;7747:80;;7770:7;;7779:47;;7816:10;;7779:47;:::i;19211:180::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;19331:6:::1;:27:::0;;-1:-1:-1;;;;;;19331:27:0::1;::::0;-1:-1:-1;;;;;19331:27:0;;::::1;;;::::0;;19369:4:::1;:14:::0;;-1:-1:-1;;;;;;19369:14:0::1;::::0;;;::::1;;::::0;;19211:180::o;9920:111::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9989:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9989:34:0::1;10019:4;9989:34;::::0;;9920:111::o;19463:196::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;19563:9:::1;19538:21;:34;;19530:71;;;::::0;-1:-1:-1;;;19530:71:0;;9138:2:1;19530:71:0::1;::::0;::::1;9120:21:1::0;9177:2;9157:18;;;9150:30;9216:26;9196:18;;;9189:54;9260:18;;19530:71:0::1;8936:348:1::0;19530:71:0::1;19612:39;::::0;19620:10:::1;::::0;19612:39;::::1;;;::::0;19641:9;;19612:39:::1;::::0;;;19641:9;19620:10;19612:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;8378:456:::0;8468:7;8507;;8496;:18;;8488:62;;;;-1:-1:-1;;;8488:62:0;;9491:2:1;8488:62:0;;;9473:21:1;9530:2;9510:18;;;9503:30;9569:33;9549:18;;;9542:61;9620:18;;8488:62:0;9289:355:1;8488:62:0;8566:17;8561:266;;8600:28;8631:25;8642:7;8651:4;8631:10;:25::i;:::-;8678:9;;-1:-1:-1;8671:16:0;;-1:-1:-1;8671:16:0;8561:266;8720:28;8751:25;8762:7;8771:4;8751:10;:25::i;:::-;8798:17;;;;-1:-1:-1;8791:24:0;;-1:-1:-1;8791:24:0;19836:154;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;19941:41:::1;::::0;-1:-1:-1;;;19941:41:0;;-1:-1:-1;;;;;9841:32:1;;;19941:41:0::1;::::0;::::1;9823:51:1::0;9890:18;;;9883:34;;;19941:27:0;::::1;::::0;::::1;::::0;9796:18:1;;19941:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19836:154:::0;;;:::o;9098:331::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9179:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9178:21;9170:61;;;::::0;-1:-1:-1;;;9170:61:0;;10380:2:1;9170:61:0::1;::::0;::::1;10362:21:1::0;10419:2;10399:18;;;10392:30;10458:29;10438:18;;;10431:57;10505:18;;9170:61:0::1;10178:351:1::0;9170:61:0::1;-1:-1:-1::0;;;;;9245:16:0;::::1;9264:1;9245:16:::0;;;:7:::1;:16;::::0;;;;;:20;9242:108:::1;;-1:-1:-1::0;;;;;9321:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9301:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9282:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9242:108:::1;-1:-1:-1::0;;;;;9360:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9360:27:0::1;9383:4;9360:27:::0;;::::1;::::0;;;9398:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9398:23:0::1;::::0;;::::1;::::0;;9098:331::o;18703:116::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;18798:13:::1;3938:1;18798:2;:13;:::i;:::-;18789:22;::::0;:6;:22:::1;:::i;:::-;18775:11;:36:::0;-1:-1:-1;18703:116:0:o;6511:198::-;-1:-1:-1;;;;;6601:20:0;;6577:7;6601:20;;;:11;:20;;;;;;;;6597:49;;;-1:-1:-1;;;;;;6630:16:0;;;;;:7;:16;;;;;;;6511:198::o;6597:49::-;-1:-1:-1;;;;;6684:16:0;;;;;;:7;:16;;;;;;6664:37;;:19;:37::i;2131:94::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;2196:21:::1;2214:1;2196:9;:21::i;:::-;2131:94::o:0;19098:101::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;19169:11:::1;:22:::0;;-1:-1:-1;;19169:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19098:101::o;10290:173::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;10413:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10405:5:::1;:50:::0;;;;;;;;;;;;;10290:173::o;7865:377::-;1409:10;7958:4;8002:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8002:34:0;;;;;;;;;;8055:35;;;;8047:85;;;;-1:-1:-1;;;8047:85:0;;10736:2:1;8047:85:0;;;10718:21:1;10775:2;10755:18;;;10748:30;10814:34;10794:18;;;10787:62;-1:-1:-1;;;10865:18:1;;;10858:35;10910:19;;8047:85:0;10534:401:1;8047:85:0;8143:67;1409:10;8166:7;8175:34;8194:15;8175:16;:34;:::i;8143:67::-;-1:-1:-1;8230:4:0;;7865:377;-1:-1:-1;;;7865:377:0:o;6717:167::-;6795:4;6812:42;1409:10;6836:9;6847:6;6812:9;:42::i;18528:167::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;18607:15:::1;:27:::0;;-1:-1:-1;;;;;18607:27:0;;::::1;-1:-1:-1::0;;;;;;18607:27:0;;::::1;::::0;::::1;::::0;;:15:::1;18645:35:::0;;;:18:::1;:35;::::0;;;;:42;;-1:-1:-1;;18645:42:0::1;18607:27:::0;18645:42:::1;::::0;;18528:167::o;18960:130::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;19069:13:::1;3938:1;19069:2;:13;:::i;:::-;19060:22;::::0;:6;:22:::1;:::i;:::-;19039:18;:43:::0;-1:-1:-1;18960:130:0:o;10039:110::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10106:27:0::1;10136:5;10106:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10106:35:0::1;::::0;;10039:110::o;2233:192::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1409:10;2043:23;2035:68;;;;-1:-1:-1;;;2035:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2322:22:0;::::1;2314:73;;;::::0;-1:-1:-1;;;2314:73:0;;11142:2:1;2314:73:0::1;::::0;::::1;11124:21:1::0;11181:2;11161:18;;;11154:30;11220:34;11200:18;;;11193:62;-1:-1:-1;;;11271:18:1;;;11264:36;11317:19;;2314:73:0::1;10940:402:1::0;2314:73:0::1;2398:19;2408:8;2398:9;:19::i;:::-;2233:192:::0;:::o;13753:335::-;-1:-1:-1;;;;;13846:19:0;;13838:68;;;;-1:-1:-1;;;13838:68:0;;11549:2:1;13838:68:0;;;11531:21:1;11588:2;11568:18;;;11561:30;11627:34;11607:18;;;11600:62;-1:-1:-1;;;11678:18:1;;;11671:34;11722:19;;13838:68:0;11347:400:1;13838:68:0;-1:-1:-1;;;;;13925:21:0;;13917:68;;;;-1:-1:-1;;;13917:68:0;;11954:2:1;13917:68:0;;;11936:21:1;11993:2;11973:18;;;11966:30;12032:34;12012:18;;;12005:62;-1:-1:-1;;;12083:18:1;;;12076:32;12125:19;;13917:68:0;11752:398:1;13917:68:0;-1:-1:-1;;;;;13996:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14048:32;;1410:25:1;;;14048:32:0;;1383:18:1;14048:32:0;;;;;;;13753:335;;;:::o;14098:1055::-;-1:-1:-1;;;;;14186:18:0;;14178:68;;;;-1:-1:-1;;;14178:68:0;;12357:2:1;14178:68:0;;;12339:21:1;12396:2;12376:18;;;12369:30;12435:34;12415:18;;;12408:62;-1:-1:-1;;;12486:18:1;;;12479:35;12531:19;;14178:68:0;12155:401:1;14178:68:0;-1:-1:-1;;;;;14265:16:0;;14257:64;;;;-1:-1:-1;;;14257:64:0;;12763:2:1;14257:64:0;;;12745:21:1;12802:2;12782:18;;;12775:30;12841:34;12821:18;;;12814:62;-1:-1:-1;;;12892:18:1;;;12885:33;12935:19;;14257:64:0;12561:399:1;14257:64:0;14349:1;14340:6;:10;14332:64;;;;-1:-1:-1;;;14332:64:0;;13167:2:1;14332:64:0;;;13149:21:1;13206:2;13186:18;;;13179:30;13245:34;13225:18;;;13218:62;-1:-1:-1;;;13296:18:1;;;13289:39;13345:19;;14332:64:0;12965:405:1;14332:64:0;14425:15;14435:4;14425:9;:15::i;:::-;14415:6;:25;;14407:86;;;;-1:-1:-1;;;14407:86:0;;13577:2:1;14407:86:0;;;13559:21:1;13616:2;13596:18;;;13589:30;13655:34;13635:18;;;13628:62;-1:-1:-1;;;13706:18:1;;;13699:47;13763:19;;14407:86:0;13375:413:1;14407:86:0;-1:-1:-1;;;;;14518:24:0;;;;;;:18;:24;;;;;;;;14517:25;:52;;;;-1:-1:-1;;;;;;14547:22:0;;;;;;:18;:22;;;;;;;;14546:23;14517:52;14514:263;;;14594:4;;-1:-1:-1;;;;;14588:10:0;;;14594:4;;14588:10;14585:102;;14634:15;;14624:6;14608:13;14618:2;14608:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;14600:87;;;;-1:-1:-1;;;14600:87:0;;13995:2:1;14600:87:0;;;13977:21:1;14034:2;14014:18;;;14007:30;14073:34;14053:18;;;14046:62;-1:-1:-1;;;14124:18:1;;;14117:31;14165:19;;14600:87:0;13793:397:1;14600:87:0;14720:11;;14710:6;:21;;14702:63;;;;-1:-1:-1;;;14702:63:0;;14397:2:1;14702:63:0;;;14379:21:1;14436:2;14416:18;;;14409:30;14475:31;14455:18;;;14448:59;14524:18;;14702:63:0;14195:353:1;14702:63:0;14802:12;14845:18;;14817:24;14835:4;14817:9;:24::i;:::-;14878:8;;-1:-1:-1;;14817:46:0;;-1:-1:-1;14878:8:0;;;;;14877:9;:24;;;;-1:-1:-1;14890:11:0;;;;14877:24;:35;;;;;14905:7;14877:35;:51;;;;-1:-1:-1;14924:4:0;;-1:-1:-1;;;;;14916:12:0;;;14924:4;;14916:12;;14877:51;:80;;;;-1:-1:-1;;;;;;14933:24:0;;;;;;:18;:24;;;;;;;;14932:25;14877:80;:107;;;;-1:-1:-1;;;;;;14962:22:0;;;;;;:18;:22;;;;;;;;14961:23;14877:107;14874:172;;;15000:34;15015:18;;15000:14;:34::i;:::-;-1:-1:-1;;;;;15093:24:0;;;;;;:18;:24;;;;;;15058:87;;15073:4;;15079:2;;15083:6;;15093:24;;;:50;;-1:-1:-1;;;;;;15121:22:0;;;;;;:18;:22;;;;;;;;15093:50;15091:53;15058:14;:87::i;13039:158::-;13080:7;13101:15;13118;13137:19;:17;:19::i;:::-;13100:56;;-1:-1:-1;13100:56:0;-1:-1:-1;13174:15:0;13100:56;;13174:15;:::i;:::-;13167:22;;;;13039:158;:::o;11440:387::-;11513:36;;:::i;:::-;11574:29;11586:7;11595;11574:11;:29::i;:::-;11562:41;;11740:52;11752:9;11763:7;11772;11781:10;:8;:10::i;:::-;11740:11;:52::i;:::-;11721:15;;;11614:178;11699:20;;;11614:178;11677:20;;;11614:178;11661:14;;;11614:178;11634:25;;;11614:178;;;11440:387;;;;:::o;2433:173::-;2489:16;2508:6;;-1:-1:-1;;;;;2525:17:0;;;-1:-1:-1;;;;;;2525:17:0;;;;;;2558:40;;2508:6;;;;;;;2558:40;;2489:16;2558:40;2478:128;2433:173;:::o;16438:1001::-;5397:8;:15;;-1:-1:-1;;5397:15:0;;;;;16599;;16581;;5397;;16581:33:::1;::::0;::::1;:::i;:::-;16580:40;::::0;16619:1:::1;16580:40;:::i;:::-;16558:62;;16631:32;16693:11;16675:5;:15;;;16666:6;:24;;;;:::i;:::-;:38;;;;:::i;:::-;16631:73:::0;-1:-1:-1;16715:14:0::1;16732:33;16631:73:::0;16732:6;:33:::1;:::i;:::-;16715:50:::0;-1:-1:-1;16803:21:0::1;16837:24;16715:50:::0;16837:16:::1;:24::i;:::-;16874:20;16897:38;16921:14:::0;16897:21:::1;:38;:::i;:::-;16997:15:::0;;16874:61;;-1:-1:-1;16946:19:0::1;::::0;16983:29:::1;::::0;:11;:29:::1;:::i;:::-;16967:46;::::0;:12;:46:::1;:::i;:::-;17070:15:::0;;16946:67;;-1:-1:-1;17024:29:0::1;::::0;17056::::1;::::0;16946:67;17056:29:::1;:::i;:::-;17024:61:::0;-1:-1:-1;17101:25:0;;17098:158:::1;;17183:61;17196:24;17222:21;17183:12;:61::i;:::-;17309:15:::0;;17268:20:::1;::::0;17291:15:::1;:11:::0;17305:1:::1;17291:15;:::i;:::-;:33;;;;:::i;:::-;17268:56:::0;-1:-1:-1;17338:16:0;;17335:95:::1;;17378:15;::::0;17370:48:::1;::::0;-1:-1:-1;;;;;17378:15:0::1;17405:12:::0;17370:34:::1;:48::i;:::-;-1:-1:-1::0;;5435:8:0;:16;;-1:-1:-1;;5435:16:0;;;-1:-1:-1;;;;;;;16438:1001:0:o;15236:1194::-;15347:28;15378;15389:7;15398;15378:10;:28::i;:::-;-1:-1:-1;;;;;15423:19:0;;;;;;:11;:19;;;;;;15347:59;;-1:-1:-1;15423:19:0;;15419:115;;;-1:-1:-1;;;;;15499:15:0;;;;;;:7;:15;;;;;;:23;;15515:7;;15499:23;:::i;:::-;-1:-1:-1;;;;;15481:15:0;;;;;;:7;:15;;;;;:41;15419:115;-1:-1:-1;;;;;15548:22:0;;;;;;:11;:22;;;;;;;;15544:130;;;15645:17;;;;-1:-1:-1;;;;;15626:18:0;;;;;;:7;:18;;;;;;:36;;15645:17;15626:36;:::i;:::-;-1:-1:-1;;;;;15605:18:0;;;;;;:7;:18;;;;;:57;15544:130;15720:9;;-1:-1:-1;;;;;15704:15:0;;15720:9;15704:15;;;:7;:15;;;;;;:25;;15720:9;15704:25;:::i;:::-;-1:-1:-1;;;;;15686:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;15780:17;;;15761:18;;;;;;;;;;:36;;15780:17;15761:36;:::i;:::-;-1:-1:-1;;;;;15740:18:0;;;;;;:7;:18;;;;;;;:57;;;;15821:6;;;:10;;;:24;;;15844:1;15835;:6;;;:10;15821:24;15818:56;;;15847:27;15859:1;:6;;;15867:1;:6;;;15847:11;:27::i;:::-;15903:1;15888;:12;;;:16;:36;;;;15923:1;15908;:12;;;:16;15888:36;15885:109;;;15941:41;15956:1;:12;;;15969:1;:12;;;15941:14;:41::i;:::-;16022:1;16007;:12;;;:16;:36;;;;16042:1;16027;:12;;;:16;16007:36;16004:109;;;16059:42;16074:1;:12;;;16088:1;:12;;;16059:14;:42::i;:::-;16136:1;16126;:7;;;:11;:26;;;;16151:1;16141;:7;;;:11;16126:26;16123:142;;;16168:27;16178:1;:7;;;16187:1;:7;;;16168:9;:27::i;:::-;4385:42;-1:-1:-1;;;;;16215:38:0;16224:6;-1:-1:-1;;;;;16215:38:0;;16245:1;:7;;;16215:38;;;;1410:25:1;;1398:2;1383:18;;1264:177;16215:38:0;;;;;;;;16123:142;16307:9;-1:-1:-1;;;;;16290:46:0;16299:6;-1:-1:-1;;;;;16290:46:0;;16318:1;:17;;;16290:46;;;;1410:25:1;;1398:2;1383:18;;1264:177;16290:46:0;;;;;;;;16377:4;-1:-1:-1;;;;;16352:60:0;16361:6;-1:-1:-1;;;;;16352:60:0;;16399:1;:12;;;16384:1;:12;;;:27;;;;:::i;:::-;16352:60;;1410:25:1;;;1398:2;1383:18;16352:60:0;;;;;;;15334:1096;15236:1194;;;;:::o;13205:540::-;13302:7;;13338;;13255;;;;;13356:279;13380:9;:16;13376:20;;13356:279;;;13446:7;13422;:21;13430:9;13440:1;13430:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13430:12:0;13422:21;;;;;;;;;;;;;:31;;:66;;;13481:7;13457;:21;13465:9;13475:1;13465:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13465:12:0;13457:21;;;;;;;;;;;;;:31;13422:66;13418:97;;;13498:7;;13507;;13490:25;;;;;;;13205:540;;:::o;13418:97::-;13548:7;:21;13556:9;13566:1;13556:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13556:12:0;13548:21;;;;;;;;;;;;;13540:29;;:7;:29;:::i;:::-;13530:39;;13602:7;:21;13610:9;13620:1;13610:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13610:12:0;13602:21;;;;;;;;;;;;;13594:29;;:7;:29;:::i;:::-;13584:39;-1:-1:-1;13398:3:0;;;;:::i;:::-;;;;13356:279;;;;13667:7;;13659;;:15;;;;:::i;:::-;13649:7;:25;13645:56;;;13684:7;;13693;;13676:25;;;;;;13205:540;;:::o;13645:56::-;13720:7;;13729;;-1:-1:-1;13205:540:0;-1:-1:-1;13205:540:0:o;11835:500::-;11909:28;;:::i;:::-;11956:7;11952:86;;11978:17;;;:27;;;12018:8;;11952:86;12067:5;:9;12077:3;;12059:17;;:7;:17;:::i;:::-;:21;;;;:::i;:::-;12050:6;;;:30;12114:15;;12130:3;;12106:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12091:12;;;:42;12167:15;;12183:3;;12159:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12144:12;;;:42;12215:10;;12226:3;;12207:18;;:7;:18;:::i;:::-;:22;;;;:::i;:::-;12197:7;;;:32;;;12288:12;;;;12275;;;;12268:6;;;;12260:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;12240:17;;;:68;11835:500;;;;:::o;12343:688::-;12468:15;;;;;;12600:19;12608:11;12600:7;:19;:::i;:::-;12590:29;;12636:7;12632:71;;-1:-1:-1;12665:7:0;;-1:-1:-1;12683:1:0;;-1:-1:-1;12683:1:0;;-1:-1:-1;12683:1:0;;-1:-1:-1;12683:1:0;12658:33;;12632:71;12729:11;12722:1;:6;;;:18;;;;:::i;:::-;12715:25;;12777:11;12764:1;:12;;;:24;;;;:::i;:::-;12751:37;;12825:11;12812:1;:12;;;:24;;;;:::i;:::-;12799:37;;12863:11;12855:1;:7;;;:19;;;;:::i;:::-;12847:27;-1:-1:-1;12847:27:0;12928:10;12917;12904:12;12912:4;12904:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:40;;;;:::i;:::-;12885:59;;12343:688;;;;;;;;;;;;:::o;17958:562::-;18108:16;;;18122:1;18108:16;;;;;;;;18084:21;;18108:16;;;;;;;;;;-1:-1:-1;18108:16:0;18084:40;;18153:4;18135;18140:1;18135:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18135:23:0;;;-1:-1:-1;;;;;18135:23:0;;;;;18179:6;;;;;;;;;-1:-1:-1;;;;;18179:6:0;-1:-1:-1;;;;;18179:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18169:4;18174:1;18169:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18169:23:0;;;:7;;;;;;;;;:23;18237:6;;18205:53;;18222:4;;18237:6;;;;18246:11;18205:8;:53::i;:::-;18297:6;;:215;;-1:-1:-1;;;18297:215:0;;:6;;;;-1:-1:-1;;;;;18297:6:0;;:57;;:215;;18369:11;;18395:1;;18439:4;;18466;;18486:15;;18297:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18013:507;17958:562;:::o;17447:503::-;17627:6;;17595:53;;17612:4;;17627:6;;;-1:-1:-1;;;;;17627:6:0;17636:11;17595:8;:53::i;:::-;17691:6;;17886:15;;17691:251;;-1:-1:-1;;;17691:251:0;;17754:4;17691:251;;;16267:34:1;16317:18;;;16310:34;;;17800:1:0;16360:18:1;;;16353:34;;;16403:18;;;16396:34;-1:-1:-1;;;;;17886:15:0;;;16446:19:1;;;16439:44;17916:15:0;16499:19:1;;;16492:35;17691:6:0;;;;;;:22;;17721:9;;16201:19:1;;17691:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17447:503;;:::o;972:317::-;1087:6;1062:21;:31;;1054:73;;;;-1:-1:-1;;;1054:73:0;;17051:2:1;1054:73:0;;;17033:21:1;17090:2;17070:18;;;17063:30;17129:31;17109:18;;;17102:59;17178:18;;1054:73:0;16849:353:1;1054:73:0;1141:12;1159:9;-1:-1:-1;;;;;1159:14:0;1181:6;1159:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:52;;;1211:7;1203:78;;;;-1:-1:-1;;;1203:78:0;;17619:2:1;1203:78:0;;;17601:21:1;17658:2;17638:18;;;17631:30;17697:34;17677:18;;;17670:62;17768:28;17748:18;;;17741:56;17814:19;;1203:78:0;17417:422:1;1203:78:0;1043:246;972:317;;:::o;10471:123::-;10549:4;10539:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10564:11:0;:22;;10582:4;;10564:11;:15;;:22;;10582:4;;10564:22;:::i;:::-;;;;-1:-1:-1;;;;10471:123:0:o;10602:284::-;10709:10;10685:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;10755:4:0;10735:26;;;;:11;:26;;;;;;;;10732:101;;;10803:4;10787:22;;;;:7;:22;;;;;:34;;10811:10;;10787:22;:34;;10811:10;;10787:34;:::i;:::-;;;;-1:-1:-1;;10732:101:0;10859:4;10843:22;;;;:7;:22;;;;;:35;;10868:10;;10843:22;:35;;10868:10;;10843:35;:::i;10894:284::-;11001:10;10977:11;:21;;;:34;;;;;;;:::i;11190:242::-;11276:5;11257:11;:16;;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;4385:42:0;11297:24;;:11;:24;;;;;;11294:92;;;4385:42;11347:20;;;;:7;:20;;;:27;;11369:5;;11347:20;:27;;11369:5;;11347:27;:::i;:::-;;;;-1:-1:-1;;11294:92:0;4385:42;11396:20;;;;:7;:20;;;:28;;11419:5;;11396:20;:28;;11419:5;;11396:28;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:118::-;3220:5;3213:13;3206:21;3199:5;3196:32;3186:60;;3242:1;3239;3232:12;3257:309;3322:6;3330;3383:2;3371:9;3362:7;3358:23;3354:32;3351:52;;;3399:1;3396;3389:12;3351:52;3435:9;3422:23;3412:33;;3495:2;3484:9;3480:18;3467:32;3508:28;3530:5;3508:28;:::i;3967:241::-;4023:6;4076:2;4064:9;4055:7;4051:23;4047:32;4044:52;;;4092:1;4089;4082:12;4044:52;4131:9;4118:23;4150:28;4172:5;4150:28;:::i;4213:385::-;4299:6;4307;4315;4323;4376:3;4364:9;4355:7;4351:23;4347:33;4344:53;;;4393:1;4390;4383:12;4344:53;-1:-1:-1;;4416:23:1;;;4486:2;4471:18;;4458:32;;-1:-1:-1;4537:2:1;4522:18;;4509:32;;4588:2;4573:18;4560:32;;-1:-1:-1;4213:385:1;-1:-1:-1;4213:385:1:o;4826:356::-;5028:2;5010:21;;;5047:18;;;5040:30;5106:34;5101:2;5086:18;;5079:62;5173:2;5158:18;;4826:356::o;5187:127::-;5248:10;5243:3;5239:20;5236:1;5229:31;5279:4;5276:1;5269:15;5303:4;5300:1;5293:15;5319:422;5408:1;5451:5;5408:1;5465:270;5486:7;5476:8;5473:21;5465:270;;;5545:4;5541:1;5537:6;5533:17;5527:4;5524:27;5521:53;;;5554:18;;:::i;:::-;5604:7;5594:8;5590:22;5587:55;;;5624:16;;;;5587:55;5703:22;;;;5663:15;;;;5465:270;;;5469:3;5319:422;;;;;:::o;5746:806::-;5795:5;5825:8;5815:80;;-1:-1:-1;5866:1:1;5880:5;;5815:80;5914:4;5904:76;;-1:-1:-1;5951:1:1;5965:5;;5904:76;5996:4;6014:1;6009:59;;;;6082:1;6077:130;;;;5989:218;;6009:59;6039:1;6030:10;;6053:5;;;6077:130;6114:3;6104:8;6101:17;6098:43;;;6121:18;;:::i;:::-;-1:-1:-1;;6177:1:1;6163:16;;6192:5;;5989:218;;6291:2;6281:8;6278:16;6272:3;6266:4;6263:13;6259:36;6253:2;6243:8;6240:16;6235:2;6229:4;6226:12;6222:35;6219:77;6216:159;;;-1:-1:-1;6328:19:1;;;6360:5;;6216:159;6407:34;6432:8;6426:4;6407:34;:::i;:::-;6477:6;6473:1;6469:6;6465:19;6456:7;6453:32;6450:58;;;6488:18;;:::i;:::-;6526:20;;5746:806;-1:-1:-1;;;5746:806:1:o;6557:140::-;6615:5;6644:47;6685:4;6675:8;6671:19;6665:4;6644:47;:::i;6702:168::-;6742:7;6808:1;6804;6800:6;6796:14;6793:1;6790:21;6785:1;6778:9;6771:17;6767:45;6764:71;;;6815:18;;:::i;:::-;-1:-1:-1;6855:9:1;;6702:168::o;7284:125::-;7324:4;7352:1;7349;7346:8;7343:34;;;7357:18;;:::i;:::-;-1:-1:-1;7394:9:1;;7284:125::o;7825:217::-;7865:1;7891;7881:132;;7935:10;7930:3;7926:20;7923:1;7916:31;7970:4;7967:1;7960:15;7998:4;7995:1;7988:15;7881:132;-1:-1:-1;8027:9:1;;7825:217::o;8399:127::-;8460:10;8455:3;8451:20;8448:1;8441:31;8491:4;8488:1;8481:15;8515:4;8512:1;8505:15;8531:127;8592:10;8587:3;8583:20;8580:1;8573:31;8623:4;8620:1;8613:15;8647:4;8644:1;8637:15;8663:135;8702:3;-1:-1:-1;;8723:17:1;;8720:43;;;8743:18;;:::i;:::-;-1:-1:-1;8790:1:1;8779:13;;8663:135::o;8803:128::-;8843:3;8874:1;8870:6;8867:1;8864:13;8861:39;;;8880:18;;:::i;:::-;-1:-1:-1;8916:9:1;;8803:128::o;9928:245::-;9995:6;10048:2;10036:9;10027:7;10023:23;10019:32;10016:52;;;10064:1;10061;10054:12;10016:52;10096:9;10090:16;10115:28;10137:5;10115:28;:::i;14685:251::-;14755:6;14808:2;14796:9;14787:7;14783:23;14779:32;14776:52;;;14824:1;14821;14814:12;14776:52;14856:9;14850:16;14875:31;14900:5;14875:31;:::i;14941:980::-;15203:4;15251:3;15240:9;15236:19;15282:6;15271:9;15264:25;15308:2;15346:6;15341:2;15330:9;15326:18;15319:34;15389:3;15384:2;15373:9;15369:18;15362:31;15413:6;15448;15442:13;15479:6;15471;15464:22;15517:3;15506:9;15502:19;15495:26;;15556:2;15548:6;15544:15;15530:29;;15577:1;15587:195;15601:6;15598:1;15595:13;15587:195;;;15666:13;;-1:-1:-1;;;;;15662:39:1;15650:52;;15757:15;;;;15722:12;;;;15698:1;15616:9;15587:195;;;-1:-1:-1;;;;;;;15838:32:1;;;;15833:2;15818:18;;15811:60;-1:-1:-1;;;15902:3:1;15887:19;15880:35;15799:3;14941:980;-1:-1:-1;;;14941:980:1:o;16538:306::-;16626:6;16634;16642;16695:2;16683:9;16674:7;16670:23;16666:32;16663:52;;;16711:1;16708;16701:12;16663:52;16740:9;16734:16;16724:26;;16790:2;16779:9;16775:18;16769:25;16759:35;;16834:2;16823:9;16819:18;16813:25;16803:35;;16538:306;;;;;:::o
Swarm Source
ipfs://7146983c6cc8061b080e5d424dd6b9559e895d656aef5b2cad2c4774f14ff6b1