Token CRONG FINANCE
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000,000 CRONG
Holders:
178 addresses
Contract:
Decimals:
9
Balance
18,285,735.068805512 CRONGValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Crong
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-05-05 */ pragma solidity ^0.8.7; interface ICRC20 { 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); } 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; } 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"); } } contract Crong is Context, ICRC20, 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; mapping (address => bool) public allowedTransfer; mapping (address => bool) private _isBlacklisted; mapping (address => bool) public _canTransferBeforeTradingIsEnabled; address[] private _excluded; bool public tradingEnabled; bool public swapEnabled; bool private swapping; //Anti Dump mapping(address => uint256) private _lastSell; bool public coolDownEnabled = true; uint256 public coolDownTime = 60 seconds; modifier antiBot(address account){ require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet"); _; } IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1e11 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public swapTokensAtAmount = 3_000_000 * 10*11; uint256 public maxBuyLimit = 10_000_000 * 10**11; uint256 public maxSellLimit = 5_000_000 * 10**11; uint256 public maxWalletLimit = 10_000_000 * 10**11; uint256 public genesis_block; address private marketingWallet = 0xF1aBf4aa2d4f7842503c2f3BaC5ea595e899E7dB; address private donationWallet = 0xF1aBf4aa2d4f7842503c2f3BaC5ea595e899E7dB; address private buybackWallet = 0xF1aBf4aa2d4f7842503c2f3BaC5ea595e899E7dB; string private constant _name = "CRONG FINANCE"; string private constant _symbol = "CRONG"; struct Taxes { uint256 rfi; uint256 marketing; uint256 liquidity; uint256 donation; uint256 buyback; } Taxes private taxes = Taxes(0, 0, 0, 0, 0); Taxes private sellTaxes = Taxes(0, 0, 0, 0, 0); struct TotFeesPaidStruct{ uint256 rfi; uint256 marketing; uint256 liquidity; uint256 donation; uint256 buyback; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 rLiquidity; uint256 rDonation; uint256 rBuyback; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; uint256 tLiquidity; uint256 tDonation; uint256 tBuyback; } event FeesChanged(); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); _rOwned[owner()] = _rTotal; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[donationWallet] = true; _isExcludedFromFee[buybackWallet] = true; allowedTransfer[address(this)] = true; allowedTransfer[owner()] = true; allowedTransfer[pair] = true; allowedTransfer[marketingWallet] = true; allowedTransfer[donationWallet] = true; allowedTransfer[buybackWallet] = true; emit Transfer(address(0), owner(), _tTotal); } function allowPreTrading(address account, bool allowed) public onlyOwner { require(_canTransferBeforeTradingIsEnabled[account] != allowed, "Pre trading is already the value of 'excluded'"); _canTransferBeforeTradingIsEnabled[account] = allowed; } //std ERC20: 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; } //override ERC20: 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 allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override antiBot(msg.sender) returns(bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "CRC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public antiBot(msg.sender) returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public antiBot(msg.sender) returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "CRC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool) { _transfer(msg.sender, recipient, amount); 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, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function setTradingStatus(bool state) external onlyOwner{ tradingEnabled = state; swapEnabled = state; if(state == true && genesis_block == 0) genesis_block = block.number; } 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 _donation, uint256 _buyback) public onlyOwner { taxes = Taxes(_rfi,_marketing,_liquidity,_donation,_buyback); emit FeesChanged(); } function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _donation, uint256 _buyback) public onlyOwner { sellTaxes = Taxes(_rfi,_marketing,_liquidity,_donation,_buyback); emit FeesChanged(); } 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 _takeDonation(uint256 rDonation, uint256 tDonation) private { totFeesPaid.donation +=tDonation; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tDonation; } _rOwned[address(this)] +=rDonation; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyback +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSell); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity, to_return.rBuyback) = _getRValues1(to_return, tAmount, takeFee, _getRate()); (to_return.rDonation) = _getRValues2(to_return, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } Taxes memory temp; if(isSell) temp = sellTaxes; else temp = taxes; s.tRfi = tAmount*temp.rfi/100; s.tMarketing = tAmount*temp.marketing/100; s.tLiquidity = tAmount*temp.liquidity/100; s.tDonation = tAmount*temp.donation/100; s.tBuyback = tAmount*temp.buyback/100; s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDonation-s.tBuyback; return s; } function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity, uint256 rBuyback){ rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0); } rRfi = s.tRfi*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; uint256 rDonation = s.tDonation*currentRate; rBuyback = s.tBuyback*currentRate; rTransferAmount = rAmount-rRfi-rMarketing-rLiquidity-rDonation-rBuyback; return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity,rBuyback); } function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDonation) { if(!takeFee) { return(0); } rDonation = s.tDonation*currentRate; return (rDonation); } 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), "CRC20: approve from the zero address"); require(spender != address(0), "CRC20: 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), "CRC20: transfer from the zero address"); require(to != address(0), "CRC20: 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"); require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled, "Trading not active"); } if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) { require(to != pair, "Sells not allowed for first 3 blocks"); } if(from == pair && !_isExcludedFromFee[to] && !swapping){ require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit"); } if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){ require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if(to != pair){ require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit"); } if(coolDownEnabled){ uint256 timePassed = block.timestamp - _lastSell[from]; require(timePassed >= coolDownTime, "Cooldown enabled"); _lastSell[from] = block.timestamp; } } if(balanceOf(from) - amount <= 10 * 10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from)); bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ if(to == pair) swapAndLiquify(swapTokensAtAmount, sellTaxes); else swapAndLiquify(swapTokensAtAmount, taxes); } bool takeFee = true; bool isSell = false; if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false; if(to == pair) isSell = true; if(!tradingEnabled) { require(_canTransferBeforeTradingIsEnabled[from], "Trading not open yet"); } _tokenTransfer(from, to, amount, takeFee, isSell); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell); 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); emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDonation + s.tBuyback); } if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing); if(s.rDonation > 0 || s.tDonation > 0) _takeDonation(s.rDonation, s.tDonation); if(s.rBuyback > 0 || s.tBuyback > 0) _takeBuyback(s.rBuyback, s.tBuyback); emit Transfer(sender, recipient, s.tTransferAmount); } function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{ uint256 denominator = (temp.liquidity + temp.marketing + temp.donation + temp.buyback) * 2; uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForCronos(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - temp.liquidity); uint256 cronosToAddLiquidityWith = unitBalance * temp.liquidity; if(cronosToAddLiquidityWith > 0){ // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, cronosToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * temp.marketing; if(marketingAmt > 0){ payable(marketingWallet).sendValue(marketingAmt); } uint256 donationAmt = unitBalance * 2 * temp.donation; if(donationAmt > 0){ payable(donationWallet).sendValue(donationAmt); } uint256 buybackAmt = unitBalance * 2 * temp.buyback; if(buybackAmt > 0){ payable(buybackWallet).sendValue(buybackAmt); } } function addLiquidity(uint256 tokenAmount, uint256 cronosAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: cronosAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForCronos(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 airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{ require(accounts.length == amounts.length, "Arrays must have same size"); for(uint256 i = 0; i < accounts.length; i++){ _tokenTransfer(msg.sender, accounts[i], amounts[i], false, false); } } function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i = 0; i < accounts.length; i++){ _isExcludedFromFee[accounts[i]] = state; } } function updateMarketingWallet(address newWallet) external onlyOwner{ marketingWallet = newWallet; } function updateDonationWallet(address newWallet) external onlyOwner{ donationWallet = newWallet; } function updateBuybackWallet(address newWallet) external onlyOwner{ buybackWallet = newWallet; } function updateCooldown(bool state, uint256 time) external onlyOwner{ coolDownTime = time * 1 seconds; coolDownEnabled = state; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateIsBlacklisted(address account, bool state) external onlyOwner{ _isBlacklisted[account] = state; } function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i =0; i < accounts.length; i++){ _isBlacklisted[accounts[i]] = state; } } function updateAllowedTransfer(address account, bool state) external onlyOwner{ allowedTransfer[account] = state; } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{ maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); } function updateMaxWalletlimit(uint256 amount) external onlyOwner{ maxWalletLimit = amount * 10**decimals(); } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ router = IRouter(newRouter); pair = newPair; } function weiETH(uint256 weiAmount, address _to) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient Cronos balance"); payable(_to).transfer(weiAmount); } function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { ICRC20(_tokenAddr).transfer(_to, _amount); } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","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":"","type":"address"}],"name":"_canTransferBeforeTradingIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":[],"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":"_donation","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_donation","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","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":[{"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":"donation","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDonationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","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":"uint256","name":"weiAmount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"weiETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600c805460ff19166001179055603c600d55620000246009600a620009d6565b620000359064174876e80062000a97565b6010819055620000489060001962000af1565b620000569060001962000ab9565b6011556313ab6680601255670de0b6b3a764000060138190556706f05b59d3b200006014556015556017805473f1abf4aa2d4f7842503c2f3bac5ea595e899e7db6001600160a01b03199182168117909255601880548216831790556019805490911690911790556040805160a080820183526000808352602080840182905283850182905260608085018390526080948501839052601a839055601b839055601c839055601d839055601e839055855193840186528284528382018390529483018290529382018190529101819052601f81905590819055602181905560228190556023553480156200014957600080fd5b50604051620048cb380380620048cb8339810160408190526200016c916200094b565b620001773362000521565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b857600080fd5b505afa158015620001cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f391906200094b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023c57600080fd5b505afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027791906200094b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002c057600080fd5b505af1158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb91906200094b565b600e80546001600160a01b038086166001600160a01b031992831617909255600f80549284169290911682179055909150620003379062000571565b60115460016000620003516000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003a06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560175482168152600484528281208054861660019081179091556018548316825283822080548716821790556019549092168152828120805486168317905530815260069384905291822080549094168117909355620004366000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600f54821681526006909352818320805485166001908117909155601754821684528284208054861682179055601854821684528284208054861682179055601954909116835291208054909216179055620004c86000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516200051091815260200190565b60405180910390a350505062000b4a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200063c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005c8565b6001600160a01b0381166000908152600160205260409020541562000699576001600160a01b0381166000908152600160205260409020546200067f90620006ff565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000601154821115620007685760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005c8565b60006200077462000789565b905062000782818462000976565b9392505050565b6000808062000797620007af565b9092509050620007a8818362000976565b9250505090565b6011546010546000918291825b6009548110156200091757826001600060098481548110620007e257620007e262000b34565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200085157508160026000600984815481106200082a576200082a62000b34565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200086857601154601054945094505050509091565b600160006009838154811062000882576200088262000b34565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008b3908462000ab9565b92506002600060098381548110620008cf57620008cf62000b34565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000900908362000ab9565b9150806200090e8162000ad3565b915050620007bc565b506010546011546200092a919062000976565b82101562000942576011546010549350935050509091565b90939092509050565b6000602082840312156200095e57600080fd5b81516001600160a01b03811681146200078257600080fd5b60008262000988576200098862000b1e565b500490565b600181815b80851115620009ce578160001904821115620009b257620009b262000b08565b80851615620009c057918102915b93841c939080029062000992565b509250929050565b60006200078260ff841683600082620009f25750600162000a91565b8162000a015750600062000a91565b816001811462000a1a576002811462000a255762000a45565b600191505062000a91565b60ff84111562000a395762000a3962000b08565b50506001821b62000a91565b5060208310610133831016604e8410600b841016171562000a6a575081810a62000a91565b62000a7683836200098d565b806000190482111562000a8d5762000a8d62000b08565b0290505b92915050565b600081600019048311821515161562000ab45762000ab462000b08565b500290565b60008282101562000ace5762000ace62000b08565b500390565b600060001982141562000aea5762000aea62000b08565b5060010190565b60008262000b035762000b0362000b1e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b613d718062000b5a6000396000f3fe60806040526004361061036f5760003560e01c806366a88d96116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610aa9578063ee36e35914610ac9578063f2fde38b14610ae3578063f887ea4014610b0357600080fd5b8063dd62ed3e14610a2d578063e2f4560514610a73578063e517f2b914610a8957600080fd5b8063c791fc54116100d1578063c791fc54146109b7578063d257b34f146109d7578063d2ce0db2146109f7578063d8672e5114610a0d57600080fd5b8063a9059cbb14610957578063aacebbe314610977578063b5c571451461099757600080fd5b80638da5cb5b1161016457806395d89b411161013e57806395d89b411461089a5780639ba5e4d5146108c8578063a457c2d714610917578063a8aa1b311461093757600080fd5b80638da5cb5b146108285780638e2839ff1461085a578063924de9b71461087a57600080fd5b8063706f6937116101a0578063706f69371461079a57806370a08231146107ba578063715018a6146107da57806388f82020146107ef57600080fd5b806366a88d961461074f5780636aa5b37f146107655780636ddd17131461077b57600080fd5b806339509351116102a057806352390c021161023e5780635b24ea5e116102185780635b24ea5e146106c95780635fcefa42146106e957806362695eae14610709578063652e2f041461073957600080fd5b806352390c02146106505780635342acb41461067057806359759f61146106a957600080fd5b8063437823ec1161027a578063437823ec146105d65780634549b039146105f657806347c23092146106165780634ada218b1461063657600080fd5b806339509351146105765780633d9d590c1461059657806340b28c2f146105b657600080fd5b8063274a533c1161030d5780632f9c4569116102e75780632f9c4569146104fa578063313ce5671461051a5780633685d41914610536578063379ba1d91461055657600080fd5b8063274a533c146104a45780632a088da6146104ba5780632d838119146104da57600080fd5b80630b31799f116103495780630b31799f1461041557806313f97a8e1461044557806318160ddd1461046557806323b872dd1461048457600080fd5b806304dacd501461037b57806306fdde031461039d578063095ea7b3146103e557600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613663565b610b23565b005b3480156103a957600080fd5b5060408051808201909152600d81526c43524f4e472046494e414e434560981b60208201525b6040516103dc91906139c0565b60405180910390f35b3480156103f157600080fd5b50610405610400366004613745565b610b78565b60405190151581526020016103dc565b34801561042157600080fd5b50610405610430366004613663565b60086020526000908152604090205460ff1681565b34801561045157600080fd5b5061039b610460366004613833565b610bd7565b34801561047157600080fd5b506010545b6040519081526020016103dc565b34801561049057600080fd5b5061040561049f3660046136d6565b610c6d565b3480156104b057600080fd5b5061047660165481565b3480156104c657600080fd5b5061039b6104d5366004613663565b610d67565b3480156104e657600080fd5b506104766104f53660046138d2565b610db3565b34801561050657600080fd5b5061039b610515366004613717565b610e37565b34801561052657600080fd5b50604051600981526020016103dc565b34801561054257600080fd5b5061039b610551366004613663565b610f12565b34801561056257600080fd5b5061039b61057136600461387a565b6110c9565b34801561058257600080fd5b50610405610591366004613745565b61112f565b3480156105a257600080fd5b5061039b6105b13660046138eb565b6111af565b3480156105c257600080fd5b5061039b6105d136600461369d565b61125f565b3480156105e257600080fd5b5061039b6105f1366004613663565b6112b7565b34801561060257600080fd5b50610476610611366004613910565b611305565b34801561062257600080fd5b5061039b6106313660046136d6565b611399565b34801561064257600080fd5b50600a546104059060ff1681565b34801561065c57600080fd5b5061039b61066b366004613663565b61144b565b34801561067c57600080fd5b5061040561068b366004613663565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106b557600080fd5b5061039b6106c4366004613935565b61159e565b3480156106d557600080fd5b5061039b6106e4366004613717565b6115fe565b3480156106f557600080fd5b5061039b610704366004613985565b611653565b34801561071557600080fd5b50610405610724366004613663565b60066020526000908152604090205460ff1681565b34801561074557600080fd5b5061047660145481565b34801561075b57600080fd5b5061047660155481565b34801561077157600080fd5b5061047660135481565b34801561078757600080fd5b50600a5461040590610100900460ff1681565b3480156107a657600080fd5b5061039b6107b5366004613771565b6116eb565b3480156107c657600080fd5b506104766107d5366004613663565b6117c4565b3480156107e657600080fd5b5061039b611823565b3480156107fb57600080fd5b5061040561080a366004613663565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083457600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103dc565b34801561086657600080fd5b5061039b610875366004613833565b611859565b34801561088657600080fd5b5061039b61089536600461387a565b6118ea565b3480156108a657600080fd5b5060408051808201909152600581526443524f4e4760d81b60208201526103cf565b3480156108d457600080fd5b506024546025546026546027546028546108ef949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103dc565b34801561092357600080fd5b50610405610932366004613745565b61192e565b34801561094357600080fd5b50600f54610842906001600160a01b031681565b34801561096357600080fd5b50610405610972366004613745565b611a14565b34801561098357600080fd5b5061039b610992366004613663565b611a69565b3480156109a357600080fd5b5061039b6109b2366004613717565b611ab5565b3480156109c357600080fd5b5061039b6109d2366004613985565b611b0a565b3480156109e357600080fd5b5061039b6109f23660046138d2565b611ba3565b348015610a0357600080fd5b50610476600d5481565b348015610a1957600080fd5b5061039b610a283660046138d2565b611be9565b348015610a3957600080fd5b50610476610a4836600461369d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061047660125481565b348015610a9557600080fd5b5061039b610aa43660046138b4565b611c2f565b348015610ab557600080fd5b5061039b610ac4366004613663565b611c7b565b348015610ad557600080fd5b50600c546104059060ff1681565b348015610aef57600080fd5b5061039b610afe366004613663565b611cc6565b348015610b0f57600080fd5b50600e54610842906001600160a01b031681565b6000546001600160a01b03163314610b565760405162461bcd60e51b8152600401610b4d90613a15565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600090339060ff1680610ba657506001600160a01b03811660009081526006602052604090205460ff165b610bc25760405162461bcd60e51b8152600401610b4d90613a4a565b610bcd338585611d5e565b5060019392505050565b6000546001600160a01b03163314610c015760405162461bcd60e51b8152600401610b4d90613a15565b60005b8251811015610c68578160076000858481518110610c2457610c24613cec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c6081613ca5565b915050610c04565b505050565b600a54600090849060ff1680610c9b57506001600160a01b03811660009081526006602052604090205460ff165b610cb75760405162461bcd60e51b8152600401610b4d90613a4a565b610cc2858585611e82565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d475760405162461bcd60e51b815260206004820152602860248201527f43524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b4d565b610d5b8633610d568785613c8e565b611d5e565b50600195945050505050565b6000546001600160a01b03163314610d915760405162461bcd60e51b8152600401610b4d90613a15565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000601154821115610e1a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b4d565b6000610e24612775565b9050610e308184613b5f565b9392505050565b6000546001600160a01b03163314610e615760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03821660009081526008602052604090205460ff1615158115151415610ee75760405162461bcd60e51b815260206004820152602e60248201527f5072652074726164696e6720697320616c7265616479207468652076616c756560448201526d206f6620276578636c756465642760901b6064820152608401610b4d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03811660009081526005602052604090205460ff16610fa45760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b4d565b60005b6009548110156110c557816001600160a01b031660098281548110610fce57610fce613cec565b6000918252602090912001546001600160a01b031614156110b35760098054610ff990600190613c8e565b8154811061100957611009613cec565b600091825260209091200154600980546001600160a01b03909216918390811061103557611035613cec565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600980548061108d5761108d613cd6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110bd81613ca5565b915050610fa7565b5050565b6000546001600160a01b031633146110f35760405162461bcd60e51b8152600401610b4d90613a15565b600a805461ffff191661ff00198315159081169190911761010082021790915560011480156111225750601654155b1561112c57436016555b50565b600a54600090339060ff168061115d57506001600160a01b03811660009081526006602052604090205460ff165b6111795760405162461bcd60e51b8152600401610b4d90613a4a565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bcd91908690610d56908790613b47565b6000546001600160a01b031633146111d95760405162461bcd60e51b8152600401610b4d90613a15565b814710156112295760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e742043726f6e6f732062616c616e636500000000006044820152606401610b4d565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610c68573d6000803e3d6000fd5b6000546001600160a01b031633146112895760405162461bcd60e51b8152600401610b4d90613a15565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60006010548311156113595760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b4d565b8161137757600061136d8460016000612798565b5191506113939050565b60006113868460016000612798565b6020015191506113939050565b92915050565b6000546001600160a01b031633146113c35760405162461bcd60e51b8152600401610b4d90613a15565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561140d57600080fd5b505af1158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190613897565b50505050565b6000546001600160a01b031633146114755760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03811660009081526005602052604090205460ff16156114de5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b4d565b6001600160a01b03811660009081526001602052604090205415611538576001600160a01b03811660009081526001602052604090205461151e90610db3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146115c85760405162461bcd60e51b8152600401610b4d90613a15565b6115d46009600a613bc4565b6115de9083613c6f565b6013556115ed6009600a613bc4565b6115f79082613c6f565b6014555050565b6000546001600160a01b031633146116285760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461167d5760405162461bcd60e51b8152600401610b4d90613a15565b6040805160a0810182528681526020810186905280820185905260608101849052608001829052601a869055601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146117155760405162461bcd60e51b8152600401610b4d90613a15565b80518251146117665760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b4d565b60005b8251811015610c68576117b23384838151811061178857611788613cec565b60200260200101518484815181106117a2576117a2613cec565b60200260200101516000806127f9565b806117bc81613ca5565b915050611769565b6001600160a01b03811660009081526005602052604081205460ff161561180157506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461139390610db3565b6000546001600160a01b0316331461184d5760405162461bcd60e51b8152600401610b4d90613a15565b6118576000612b08565b565b6000546001600160a01b031633146118835760405162461bcd60e51b8152600401610b4d90613a15565b60005b8251811015610c685781600460008584815181106118a6576118a6613cec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806118e281613ca5565b915050611886565b6000546001600160a01b031633146119145760405162461bcd60e51b8152600401610b4d90613a15565b600a80549115156101000261ff0019909216919091179055565b600a54600090339060ff168061195c57506001600160a01b03811660009081526006602052604090205460ff165b6119785760405162461bcd60e51b8152600401610b4d90613a4a565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156119fa5760405162461bcd60e51b815260206004820152602560248201527f43524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b4d565b611a093386610d568785613c8e565b506001949350505050565b600a54600090339060ff1680611a4257506001600160a01b03811660009081526006602052604090205460ff165b611a5e5760405162461bcd60e51b8152600401610b4d90613a4a565b610bcd338585611e82565b6000546001600160a01b03163314611a935760405162461bcd60e51b8152600401610b4d90613a15565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611adf5760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611b345760405162461bcd60e51b8152600401610b4d90613a15565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601f879055859055602184905560228390556023829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611bcd5760405162461bcd60e51b8152600401610b4d90613a15565b611bd96009600a613bc4565b611be39082613c6f565b60125550565b6000546001600160a01b03163314611c135760405162461bcd60e51b8152600401610b4d90613a15565b611c1f6009600a613bc4565b611c299082613c6f565b60155550565b6000546001600160a01b03163314611c595760405162461bcd60e51b8152600401610b4d90613a15565b611c64816001613c6f565b600d5550600c805460ff1916911515919091179055565b6000546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611cf05760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b038116611d555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4d565b61112c81612b08565b6001600160a01b038316611dc05760405162461bcd60e51b8152602060048201526024808201527f43524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b4d565b6001600160a01b038216611e215760405162461bcd60e51b815260206004820152602260248201527f43524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b4d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ee65760405162461bcd60e51b815260206004820152602560248201527f43524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b4d565b6001600160a01b038216611f485760405162461bcd60e51b815260206004820152602360248201527f43524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b4d565b60008111611faa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b4d565b611fb3836117c4565b81111561201c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b4d565b6001600160a01b03831660009081526007602052604090205460ff1615801561205e57506001600160a01b03821660009081526007602052604090205460ff16155b61209a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b4d565b6001600160a01b03831660009081526004602052604090205460ff161580156120dc57506001600160a01b03821660009081526004602052604090205460ff16155b1561212857600a5460ff166121285760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b4d565b6001600160a01b03831660009081526004602052604090205460ff1615801561216a57506001600160a01b03821660009081526004602052604090205460ff16155b8015612183575060165461217f906003613b47565b4311155b156121f257600f546001600160a01b03838116911614156121f25760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b4d565b600f546001600160a01b03848116911614801561222857506001600160a01b03821660009081526004602052604090205460ff16155b801561223d5750600a5462010000900460ff16155b156122f9576013548111156122945760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b4d565b601554816122a1846117c4565b6122ab9190613b47565b11156122f95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b4d565b600f546001600160a01b0384811691161480159061233057506001600160a01b03821660009081526004602052604090205460ff16155b801561235557506001600160a01b03831660009081526004602052604090205460ff16155b801561236a5750600a5462010000900460ff16155b156124cd576014548111156123c15760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b4d565b600f546001600160a01b0383811691161461243b57601554816123e3846117c4565b6123ed9190613b47565b111561243b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b4d565b600c5460ff16156124cd576001600160a01b0383166000908152600b60205260408120546124699042613c8e565b9050600d548110156124b05760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b4d565b506001600160a01b0383166000908152600b602052604090204290555b6124d96009600a613bc4565b6124e490600a613c6f565b816124ee856117c4565b6124f89190613c8e565b1161253f57612506836117c4565b816125136009600a613bc4565b61251e90600a613c6f565b6125289190613b47565b6125329190613c8e565b61253c9082613c8e565b90505b600060125461254d306117c4565b600a54911115915062010000900460ff161580156125725750600a54610100900460ff165b801561257b5750805b80156125955750600f546001600160a01b03858116911614155b80156125ba57506001600160a01b03841660009081526004602052604090205460ff16155b80156125df57506001600160a01b03831660009081526004602052604090205460ff16155b1561267b57600f546001600160a01b038481169116141561263d576012546040805160a081018252601f548152602080549082015260215491810191909152602254606082015260235460808201526126389190612b58565b61267b565b6012546040805160a081018252601a548152601b546020820152601c5491810191909152601d546060820152601e54608082015261267b9190612b58565b600a5460019060009062010000900460ff16806126b057506001600160a01b03861660009081526004602052604090205460ff165b806126d357506001600160a01b03851660009081526004602052604090205460ff165b156126dd57600091505b600f546001600160a01b03868116911614156126f7575060015b600a5460ff16612760576001600160a01b03861660009081526008602052604090205460ff166127605760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b4d565b61276d86868685856127f9565b505050505050565b6000806000612782612cfe565b90925090506127918183613b5f565b9250505090565b6127a0613580565b6127ab848484612e81565b90506127c08185856127bb612775565b61303c565b60c0870152608086015260608501526040840152602083015281526127ed81846127e8612775565b613110565b60a08201529392505050565b6000612806848484612798565b6001600160a01b03871660009081526005602052604090205490915060ff1615612868576001600160a01b03861660009081526002602052604090205461284e908590613c8e565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128cb5760e08101516001600160a01b0386166000908152600260205260409020546128b19190613b47565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546128f09190613c8e565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546129279190613b47565b6001600160a01b038616600090815260016020526040908190209190915581015115158061295a57506000816101000151115b15612972576129728160400151826101000151613138565b60008160800151118061298a57506000816101400151115b15612a1f576129a2816080015182610140015161316d565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516129f99190613b47565b612a039190613b47565b612a0d9190613b47565b60405190815260200160405180910390a35b600081606001511180612a3757506000816101200151115b15612a4f57612a4f81606001518261012001516131e3565b60008160a001511180612a6757506000816101600151115b15612a7f57612a7f8160a001518261016001516131f8565b60008160c001511180612a9757506000816101800151115b15612aaf57612aaf8160c0015182610180015161320d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612af891815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff000019166201000017905560808101516060820151602083015160408401516000939291612b8b91613b47565b612b959190613b47565b612b9f9190613b47565b612baa906002613c6f565b9050600081836040015185612bbf9190613c6f565b612bc99190613b5f565b90506000612bd78286613c8e565b905047612be382613222565b6000612bef8247613c8e565b90506000866040015186612c039190613c8e565b612c0d9083613b5f565b90506000876040015182612c219190613c6f565b90508015612c3357612c338682613383565b6020880151600090612c46846002613c6f565b612c509190613c6f565b90508015612c6e57601754612c6e906001600160a01b031682613467565b6060890151600090612c81856002613c6f565b612c8b9190613c6f565b90508015612ca957601854612ca9906001600160a01b031682613467565b60808a0151600090612cbc866002613c6f565b612cc69190613c6f565b90508015612ce457601954612ce4906001600160a01b031682613467565b5050600a805462ff00001916905550505050505050505050565b6011546010546000918291825b600954811015612e5057826001600060098481548110612d2d57612d2d613cec565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612d985750816002600060098481548110612d7157612d71613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612dae57601154601054945094505050509091565b6001600060098381548110612dc557612dc5613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612df49084613c8e565b92506002600060098381548110612e0d57612e0d613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612e3c9083613c8e565b915080612e4881613ca5565b915050612d0b565b50601054601154612e619190613b5f565b821015612e78576011546010549350935050509091565b90939092509050565b612e89613580565b82612e9a5760e08101849052610e30565b612ecc6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612f0957506040805160a081018252601f54815260208054908201526021549181019190915260225460608201526023546080820152612f3c565b506040805160a081018252601a548152601b546020820152601c5491810191909152601d546060820152601e5460808201525b8051606490612f4b9087613c6f565b612f559190613b5f565b6101008301526020810151606490612f6d9087613c6f565b612f779190613b5f565b6101208301526040810151606490612f8f9087613c6f565b612f999190613b5f565b6101408301526060810151606490612fb19087613c6f565b612fbb9190613b5f565b6101608301526080810151606490612fd39087613c6f565b612fdd9190613b5f565b6101808301819052610160830151610140840151610120850151610100860151613007908a613c8e565b6130119190613c8e565b61301b9190613c8e565b6130259190613c8e565b61302f9190613c8e565b60e0830152509392505050565b6000808080808061304d878a613c6f565b95508761306857508493506000925082915081905080613103565b868a61010001516130799190613c6f565b9350868a610120015161308c9190613c6f565b9250868a610140015161309f9190613c6f565b91506000878b61016001516130b49190613c6f565b9050878b61018001516130c79190613c6f565b9150818184866130d7898c613c8e565b6130e19190613c8e565b6130eb9190613c8e565b6130f59190613c8e565b6130ff9190613c8e565b9550505b9499939850945094509450565b60008261311f57506000610e30565b818461016001516131309190613c6f565b949350505050565b816011600082825461314a9190613c8e565b909155505060248054829190600090613164908490613b47565b90915550505050565b80602460020160008282546131829190613b47565b90915550503060009081526005602052604090205460ff16156131c45730600090815260026020526040812080548392906131be908490613b47565b90915550505b3060009081526001602052604081208054849290613164908490613b47565b80602460010160008282546131829190613b47565b80602460030160008282546131829190613b47565b80602460040160008282546131829190613b47565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325757613257613cec565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156132ab57600080fd5b505afa1580156132bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e39190613680565b816001815181106132f6576132f6613cec565b6001600160a01b039283166020918202929092010152600e5461331c9130911684611d5e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613355908590600090869030904290600401613a81565b600060405180830381600087803b15801561336f57600080fd5b505af115801561276d573d6000803e3d6000fd5b600e5461339b9030906001600160a01b031684611d5e565b600e546001600160a01b031663f305d7198230856000806133c46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561342757600080fd5b505af115801561343b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134609190613957565b5050505050565b804710156134b75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b4d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613504576040519150601f19603f3d011682016040523d82523d6000602084013e613509565b606091505b5050905080610c685760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b4d565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600082601f8301126135f957600080fd5b8135602061360e61360983613b23565b613af2565b80838252828201915082860187848660051b890101111561362e57600080fd5b60005b8581101561365657813561364481613d18565b84529284019290840190600101613631565b5090979650505050505050565b60006020828403121561367557600080fd5b8135610e3081613d18565b60006020828403121561369257600080fd5b8151610e3081613d18565b600080604083850312156136b057600080fd5b82356136bb81613d18565b915060208301356136cb81613d18565b809150509250929050565b6000806000606084860312156136eb57600080fd5b83356136f681613d18565b9250602084013561370681613d18565b929592945050506040919091013590565b6000806040838503121561372a57600080fd5b823561373581613d18565b915060208301356136cb81613d2d565b6000806040838503121561375857600080fd5b823561376381613d18565b946020939093013593505050565b6000806040838503121561378457600080fd5b823567ffffffffffffffff8082111561379c57600080fd5b6137a8868387016135e8565b93506020915081850135818111156137bf57600080fd5b85019050601f810186136137d257600080fd5b80356137e061360982613b23565b80828252848201915084840189868560051b870101111561380057600080fd5b600094505b83851015613823578035835260019490940193918501918501613805565b5080955050505050509250929050565b6000806040838503121561384657600080fd5b823567ffffffffffffffff81111561385d57600080fd5b613869858286016135e8565b92505060208301356136cb81613d2d565b60006020828403121561388c57600080fd5b8135610e3081613d2d565b6000602082840312156138a957600080fd5b8151610e3081613d2d565b600080604083850312156138c757600080fd5b823561376381613d2d565b6000602082840312156138e457600080fd5b5035919050565b600080604083850312156138fe57600080fd5b8235915060208301356136cb81613d18565b6000806040838503121561392357600080fd5b8235915060208301356136cb81613d2d565b6000806040838503121561394857600080fd5b50508035926020909101359150565b60008060006060848603121561396c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561399d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156139ed578581018301518582016040015282016139d1565b818111156139ff576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613ad15784516001600160a01b031683529383019391830191600101613aac565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1b57613b1b613d02565b604052919050565b600067ffffffffffffffff821115613b3d57613b3d613d02565b5060051b60200190565b60008219821115613b5a57613b5a613cc0565b500190565b600082613b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613bbc578160001904821115613ba257613ba2613cc0565b80851615613baf57918102915b93841c9390800290613b86565b509250929050565b6000610e3060ff841683600082613bdd57506001611393565b81613bea57506000611393565b8160018114613c005760028114613c0a57613c26565b6001915050611393565b60ff841115613c1b57613c1b613cc0565b50506001821b611393565b5060208310610133831016604e8410600b8410161715613c49575081810a611393565b613c538383613b81565b8060001904821115613c6757613c67613cc0565b029392505050565b6000816000190483118215151615613c8957613c89613cc0565b500290565b600082821015613ca057613ca0613cc0565b500390565b6000600019821415613cb957613cb9613cc0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461112c57600080fd5b801515811461112c57600080fdfea264697066735822122079f099e27e5b337ba840db5468ea2e59b11a5c16570a5aed0f40d2fbaa82a8dc64736f6c63430008070033000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806366a88d96116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610aa9578063ee36e35914610ac9578063f2fde38b14610ae3578063f887ea4014610b0357600080fd5b8063dd62ed3e14610a2d578063e2f4560514610a73578063e517f2b914610a8957600080fd5b8063c791fc54116100d1578063c791fc54146109b7578063d257b34f146109d7578063d2ce0db2146109f7578063d8672e5114610a0d57600080fd5b8063a9059cbb14610957578063aacebbe314610977578063b5c571451461099757600080fd5b80638da5cb5b1161016457806395d89b411161013e57806395d89b411461089a5780639ba5e4d5146108c8578063a457c2d714610917578063a8aa1b311461093757600080fd5b80638da5cb5b146108285780638e2839ff1461085a578063924de9b71461087a57600080fd5b8063706f6937116101a0578063706f69371461079a57806370a08231146107ba578063715018a6146107da57806388f82020146107ef57600080fd5b806366a88d961461074f5780636aa5b37f146107655780636ddd17131461077b57600080fd5b806339509351116102a057806352390c021161023e5780635b24ea5e116102185780635b24ea5e146106c95780635fcefa42146106e957806362695eae14610709578063652e2f041461073957600080fd5b806352390c02146106505780635342acb41461067057806359759f61146106a957600080fd5b8063437823ec1161027a578063437823ec146105d65780634549b039146105f657806347c23092146106165780634ada218b1461063657600080fd5b806339509351146105765780633d9d590c1461059657806340b28c2f146105b657600080fd5b8063274a533c1161030d5780632f9c4569116102e75780632f9c4569146104fa578063313ce5671461051a5780633685d41914610536578063379ba1d91461055657600080fd5b8063274a533c146104a45780632a088da6146104ba5780632d838119146104da57600080fd5b80630b31799f116103495780630b31799f1461041557806313f97a8e1461044557806318160ddd1461046557806323b872dd1461048457600080fd5b806304dacd501461037b57806306fdde031461039d578063095ea7b3146103e557600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613663565b610b23565b005b3480156103a957600080fd5b5060408051808201909152600d81526c43524f4e472046494e414e434560981b60208201525b6040516103dc91906139c0565b60405180910390f35b3480156103f157600080fd5b50610405610400366004613745565b610b78565b60405190151581526020016103dc565b34801561042157600080fd5b50610405610430366004613663565b60086020526000908152604090205460ff1681565b34801561045157600080fd5b5061039b610460366004613833565b610bd7565b34801561047157600080fd5b506010545b6040519081526020016103dc565b34801561049057600080fd5b5061040561049f3660046136d6565b610c6d565b3480156104b057600080fd5b5061047660165481565b3480156104c657600080fd5b5061039b6104d5366004613663565b610d67565b3480156104e657600080fd5b506104766104f53660046138d2565b610db3565b34801561050657600080fd5b5061039b610515366004613717565b610e37565b34801561052657600080fd5b50604051600981526020016103dc565b34801561054257600080fd5b5061039b610551366004613663565b610f12565b34801561056257600080fd5b5061039b61057136600461387a565b6110c9565b34801561058257600080fd5b50610405610591366004613745565b61112f565b3480156105a257600080fd5b5061039b6105b13660046138eb565b6111af565b3480156105c257600080fd5b5061039b6105d136600461369d565b61125f565b3480156105e257600080fd5b5061039b6105f1366004613663565b6112b7565b34801561060257600080fd5b50610476610611366004613910565b611305565b34801561062257600080fd5b5061039b6106313660046136d6565b611399565b34801561064257600080fd5b50600a546104059060ff1681565b34801561065c57600080fd5b5061039b61066b366004613663565b61144b565b34801561067c57600080fd5b5061040561068b366004613663565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106b557600080fd5b5061039b6106c4366004613935565b61159e565b3480156106d557600080fd5b5061039b6106e4366004613717565b6115fe565b3480156106f557600080fd5b5061039b610704366004613985565b611653565b34801561071557600080fd5b50610405610724366004613663565b60066020526000908152604090205460ff1681565b34801561074557600080fd5b5061047660145481565b34801561075b57600080fd5b5061047660155481565b34801561077157600080fd5b5061047660135481565b34801561078757600080fd5b50600a5461040590610100900460ff1681565b3480156107a657600080fd5b5061039b6107b5366004613771565b6116eb565b3480156107c657600080fd5b506104766107d5366004613663565b6117c4565b3480156107e657600080fd5b5061039b611823565b3480156107fb57600080fd5b5061040561080a366004613663565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083457600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103dc565b34801561086657600080fd5b5061039b610875366004613833565b611859565b34801561088657600080fd5b5061039b61089536600461387a565b6118ea565b3480156108a657600080fd5b5060408051808201909152600581526443524f4e4760d81b60208201526103cf565b3480156108d457600080fd5b506024546025546026546027546028546108ef949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103dc565b34801561092357600080fd5b50610405610932366004613745565b61192e565b34801561094357600080fd5b50600f54610842906001600160a01b031681565b34801561096357600080fd5b50610405610972366004613745565b611a14565b34801561098357600080fd5b5061039b610992366004613663565b611a69565b3480156109a357600080fd5b5061039b6109b2366004613717565b611ab5565b3480156109c357600080fd5b5061039b6109d2366004613985565b611b0a565b3480156109e357600080fd5b5061039b6109f23660046138d2565b611ba3565b348015610a0357600080fd5b50610476600d5481565b348015610a1957600080fd5b5061039b610a283660046138d2565b611be9565b348015610a3957600080fd5b50610476610a4836600461369d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061047660125481565b348015610a9557600080fd5b5061039b610aa43660046138b4565b611c2f565b348015610ab557600080fd5b5061039b610ac4366004613663565b611c7b565b348015610ad557600080fd5b50600c546104059060ff1681565b348015610aef57600080fd5b5061039b610afe366004613663565b611cc6565b348015610b0f57600080fd5b50600e54610842906001600160a01b031681565b6000546001600160a01b03163314610b565760405162461bcd60e51b8152600401610b4d90613a15565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600090339060ff1680610ba657506001600160a01b03811660009081526006602052604090205460ff165b610bc25760405162461bcd60e51b8152600401610b4d90613a4a565b610bcd338585611d5e565b5060019392505050565b6000546001600160a01b03163314610c015760405162461bcd60e51b8152600401610b4d90613a15565b60005b8251811015610c68578160076000858481518110610c2457610c24613cec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c6081613ca5565b915050610c04565b505050565b600a54600090849060ff1680610c9b57506001600160a01b03811660009081526006602052604090205460ff165b610cb75760405162461bcd60e51b8152600401610b4d90613a4a565b610cc2858585611e82565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d475760405162461bcd60e51b815260206004820152602860248201527f43524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b4d565b610d5b8633610d568785613c8e565b611d5e565b50600195945050505050565b6000546001600160a01b03163314610d915760405162461bcd60e51b8152600401610b4d90613a15565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000601154821115610e1a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b4d565b6000610e24612775565b9050610e308184613b5f565b9392505050565b6000546001600160a01b03163314610e615760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03821660009081526008602052604090205460ff1615158115151415610ee75760405162461bcd60e51b815260206004820152602e60248201527f5072652074726164696e6720697320616c7265616479207468652076616c756560448201526d206f6620276578636c756465642760901b6064820152608401610b4d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03811660009081526005602052604090205460ff16610fa45760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b4d565b60005b6009548110156110c557816001600160a01b031660098281548110610fce57610fce613cec565b6000918252602090912001546001600160a01b031614156110b35760098054610ff990600190613c8e565b8154811061100957611009613cec565b600091825260209091200154600980546001600160a01b03909216918390811061103557611035613cec565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600980548061108d5761108d613cd6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110bd81613ca5565b915050610fa7565b5050565b6000546001600160a01b031633146110f35760405162461bcd60e51b8152600401610b4d90613a15565b600a805461ffff191661ff00198315159081169190911761010082021790915560011480156111225750601654155b1561112c57436016555b50565b600a54600090339060ff168061115d57506001600160a01b03811660009081526006602052604090205460ff165b6111795760405162461bcd60e51b8152600401610b4d90613a4a565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bcd91908690610d56908790613b47565b6000546001600160a01b031633146111d95760405162461bcd60e51b8152600401610b4d90613a15565b814710156112295760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e742043726f6e6f732062616c616e636500000000006044820152606401610b4d565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610c68573d6000803e3d6000fd5b6000546001600160a01b031633146112895760405162461bcd60e51b8152600401610b4d90613a15565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60006010548311156113595760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b4d565b8161137757600061136d8460016000612798565b5191506113939050565b60006113868460016000612798565b6020015191506113939050565b92915050565b6000546001600160a01b031633146113c35760405162461bcd60e51b8152600401610b4d90613a15565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561140d57600080fd5b505af1158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190613897565b50505050565b6000546001600160a01b031633146114755760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03811660009081526005602052604090205460ff16156114de5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b4d565b6001600160a01b03811660009081526001602052604090205415611538576001600160a01b03811660009081526001602052604090205461151e90610db3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146115c85760405162461bcd60e51b8152600401610b4d90613a15565b6115d46009600a613bc4565b6115de9083613c6f565b6013556115ed6009600a613bc4565b6115f79082613c6f565b6014555050565b6000546001600160a01b031633146116285760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461167d5760405162461bcd60e51b8152600401610b4d90613a15565b6040805160a0810182528681526020810186905280820185905260608101849052608001829052601a869055601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146117155760405162461bcd60e51b8152600401610b4d90613a15565b80518251146117665760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b4d565b60005b8251811015610c68576117b23384838151811061178857611788613cec565b60200260200101518484815181106117a2576117a2613cec565b60200260200101516000806127f9565b806117bc81613ca5565b915050611769565b6001600160a01b03811660009081526005602052604081205460ff161561180157506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461139390610db3565b6000546001600160a01b0316331461184d5760405162461bcd60e51b8152600401610b4d90613a15565b6118576000612b08565b565b6000546001600160a01b031633146118835760405162461bcd60e51b8152600401610b4d90613a15565b60005b8251811015610c685781600460008584815181106118a6576118a6613cec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806118e281613ca5565b915050611886565b6000546001600160a01b031633146119145760405162461bcd60e51b8152600401610b4d90613a15565b600a80549115156101000261ff0019909216919091179055565b600a54600090339060ff168061195c57506001600160a01b03811660009081526006602052604090205460ff165b6119785760405162461bcd60e51b8152600401610b4d90613a4a565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156119fa5760405162461bcd60e51b815260206004820152602560248201527f43524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b4d565b611a093386610d568785613c8e565b506001949350505050565b600a54600090339060ff1680611a4257506001600160a01b03811660009081526006602052604090205460ff165b611a5e5760405162461bcd60e51b8152600401610b4d90613a4a565b610bcd338585611e82565b6000546001600160a01b03163314611a935760405162461bcd60e51b8152600401610b4d90613a15565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611adf5760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611b345760405162461bcd60e51b8152600401610b4d90613a15565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601f879055859055602184905560228390556023829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611bcd5760405162461bcd60e51b8152600401610b4d90613a15565b611bd96009600a613bc4565b611be39082613c6f565b60125550565b6000546001600160a01b03163314611c135760405162461bcd60e51b8152600401610b4d90613a15565b611c1f6009600a613bc4565b611c299082613c6f565b60155550565b6000546001600160a01b03163314611c595760405162461bcd60e51b8152600401610b4d90613a15565b611c64816001613c6f565b600d5550600c805460ff1916911515919091179055565b6000546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611cf05760405162461bcd60e51b8152600401610b4d90613a15565b6001600160a01b038116611d555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4d565b61112c81612b08565b6001600160a01b038316611dc05760405162461bcd60e51b8152602060048201526024808201527f43524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b4d565b6001600160a01b038216611e215760405162461bcd60e51b815260206004820152602260248201527f43524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b4d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ee65760405162461bcd60e51b815260206004820152602560248201527f43524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b4d565b6001600160a01b038216611f485760405162461bcd60e51b815260206004820152602360248201527f43524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b4d565b60008111611faa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b4d565b611fb3836117c4565b81111561201c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b4d565b6001600160a01b03831660009081526007602052604090205460ff1615801561205e57506001600160a01b03821660009081526007602052604090205460ff16155b61209a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b4d565b6001600160a01b03831660009081526004602052604090205460ff161580156120dc57506001600160a01b03821660009081526004602052604090205460ff16155b1561212857600a5460ff166121285760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b4d565b6001600160a01b03831660009081526004602052604090205460ff1615801561216a57506001600160a01b03821660009081526004602052604090205460ff16155b8015612183575060165461217f906003613b47565b4311155b156121f257600f546001600160a01b03838116911614156121f25760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b4d565b600f546001600160a01b03848116911614801561222857506001600160a01b03821660009081526004602052604090205460ff16155b801561223d5750600a5462010000900460ff16155b156122f9576013548111156122945760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b4d565b601554816122a1846117c4565b6122ab9190613b47565b11156122f95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b4d565b600f546001600160a01b0384811691161480159061233057506001600160a01b03821660009081526004602052604090205460ff16155b801561235557506001600160a01b03831660009081526004602052604090205460ff16155b801561236a5750600a5462010000900460ff16155b156124cd576014548111156123c15760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b4d565b600f546001600160a01b0383811691161461243b57601554816123e3846117c4565b6123ed9190613b47565b111561243b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b4d565b600c5460ff16156124cd576001600160a01b0383166000908152600b60205260408120546124699042613c8e565b9050600d548110156124b05760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b4d565b506001600160a01b0383166000908152600b602052604090204290555b6124d96009600a613bc4565b6124e490600a613c6f565b816124ee856117c4565b6124f89190613c8e565b1161253f57612506836117c4565b816125136009600a613bc4565b61251e90600a613c6f565b6125289190613b47565b6125329190613c8e565b61253c9082613c8e565b90505b600060125461254d306117c4565b600a54911115915062010000900460ff161580156125725750600a54610100900460ff165b801561257b5750805b80156125955750600f546001600160a01b03858116911614155b80156125ba57506001600160a01b03841660009081526004602052604090205460ff16155b80156125df57506001600160a01b03831660009081526004602052604090205460ff16155b1561267b57600f546001600160a01b038481169116141561263d576012546040805160a081018252601f548152602080549082015260215491810191909152602254606082015260235460808201526126389190612b58565b61267b565b6012546040805160a081018252601a548152601b546020820152601c5491810191909152601d546060820152601e54608082015261267b9190612b58565b600a5460019060009062010000900460ff16806126b057506001600160a01b03861660009081526004602052604090205460ff165b806126d357506001600160a01b03851660009081526004602052604090205460ff165b156126dd57600091505b600f546001600160a01b03868116911614156126f7575060015b600a5460ff16612760576001600160a01b03861660009081526008602052604090205460ff166127605760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b4d565b61276d86868685856127f9565b505050505050565b6000806000612782612cfe565b90925090506127918183613b5f565b9250505090565b6127a0613580565b6127ab848484612e81565b90506127c08185856127bb612775565b61303c565b60c0870152608086015260608501526040840152602083015281526127ed81846127e8612775565b613110565b60a08201529392505050565b6000612806848484612798565b6001600160a01b03871660009081526005602052604090205490915060ff1615612868576001600160a01b03861660009081526002602052604090205461284e908590613c8e565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128cb5760e08101516001600160a01b0386166000908152600260205260409020546128b19190613b47565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546128f09190613c8e565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546129279190613b47565b6001600160a01b038616600090815260016020526040908190209190915581015115158061295a57506000816101000151115b15612972576129728160400151826101000151613138565b60008160800151118061298a57506000816101400151115b15612a1f576129a2816080015182610140015161316d565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516129f99190613b47565b612a039190613b47565b612a0d9190613b47565b60405190815260200160405180910390a35b600081606001511180612a3757506000816101200151115b15612a4f57612a4f81606001518261012001516131e3565b60008160a001511180612a6757506000816101600151115b15612a7f57612a7f8160a001518261016001516131f8565b60008160c001511180612a9757506000816101800151115b15612aaf57612aaf8160c0015182610180015161320d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612af891815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff000019166201000017905560808101516060820151602083015160408401516000939291612b8b91613b47565b612b959190613b47565b612b9f9190613b47565b612baa906002613c6f565b9050600081836040015185612bbf9190613c6f565b612bc99190613b5f565b90506000612bd78286613c8e565b905047612be382613222565b6000612bef8247613c8e565b90506000866040015186612c039190613c8e565b612c0d9083613b5f565b90506000876040015182612c219190613c6f565b90508015612c3357612c338682613383565b6020880151600090612c46846002613c6f565b612c509190613c6f565b90508015612c6e57601754612c6e906001600160a01b031682613467565b6060890151600090612c81856002613c6f565b612c8b9190613c6f565b90508015612ca957601854612ca9906001600160a01b031682613467565b60808a0151600090612cbc866002613c6f565b612cc69190613c6f565b90508015612ce457601954612ce4906001600160a01b031682613467565b5050600a805462ff00001916905550505050505050505050565b6011546010546000918291825b600954811015612e5057826001600060098481548110612d2d57612d2d613cec565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612d985750816002600060098481548110612d7157612d71613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612dae57601154601054945094505050509091565b6001600060098381548110612dc557612dc5613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612df49084613c8e565b92506002600060098381548110612e0d57612e0d613cec565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612e3c9083613c8e565b915080612e4881613ca5565b915050612d0b565b50601054601154612e619190613b5f565b821015612e78576011546010549350935050509091565b90939092509050565b612e89613580565b82612e9a5760e08101849052610e30565b612ecc6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612f0957506040805160a081018252601f54815260208054908201526021549181019190915260225460608201526023546080820152612f3c565b506040805160a081018252601a548152601b546020820152601c5491810191909152601d546060820152601e5460808201525b8051606490612f4b9087613c6f565b612f559190613b5f565b6101008301526020810151606490612f6d9087613c6f565b612f779190613b5f565b6101208301526040810151606490612f8f9087613c6f565b612f999190613b5f565b6101408301526060810151606490612fb19087613c6f565b612fbb9190613b5f565b6101608301526080810151606490612fd39087613c6f565b612fdd9190613b5f565b6101808301819052610160830151610140840151610120850151610100860151613007908a613c8e565b6130119190613c8e565b61301b9190613c8e565b6130259190613c8e565b61302f9190613c8e565b60e0830152509392505050565b6000808080808061304d878a613c6f565b95508761306857508493506000925082915081905080613103565b868a61010001516130799190613c6f565b9350868a610120015161308c9190613c6f565b9250868a610140015161309f9190613c6f565b91506000878b61016001516130b49190613c6f565b9050878b61018001516130c79190613c6f565b9150818184866130d7898c613c8e565b6130e19190613c8e565b6130eb9190613c8e565b6130f59190613c8e565b6130ff9190613c8e565b9550505b9499939850945094509450565b60008261311f57506000610e30565b818461016001516131309190613c6f565b949350505050565b816011600082825461314a9190613c8e565b909155505060248054829190600090613164908490613b47565b90915550505050565b80602460020160008282546131829190613b47565b90915550503060009081526005602052604090205460ff16156131c45730600090815260026020526040812080548392906131be908490613b47565b90915550505b3060009081526001602052604081208054849290613164908490613b47565b80602460010160008282546131829190613b47565b80602460030160008282546131829190613b47565b80602460040160008282546131829190613b47565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325757613257613cec565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156132ab57600080fd5b505afa1580156132bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e39190613680565b816001815181106132f6576132f6613cec565b6001600160a01b039283166020918202929092010152600e5461331c9130911684611d5e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613355908590600090869030904290600401613a81565b600060405180830381600087803b15801561336f57600080fd5b505af115801561276d573d6000803e3d6000fd5b600e5461339b9030906001600160a01b031684611d5e565b600e546001600160a01b031663f305d7198230856000806133c46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561342757600080fd5b505af115801561343b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134609190613957565b5050505050565b804710156134b75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b4d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613504576040519150601f19603f3d011682016040523d82523d6000602084013e613509565b606091505b5050905080610c685760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b4d565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600082601f8301126135f957600080fd5b8135602061360e61360983613b23565b613af2565b80838252828201915082860187848660051b890101111561362e57600080fd5b60005b8581101561365657813561364481613d18565b84529284019290840190600101613631565b5090979650505050505050565b60006020828403121561367557600080fd5b8135610e3081613d18565b60006020828403121561369257600080fd5b8151610e3081613d18565b600080604083850312156136b057600080fd5b82356136bb81613d18565b915060208301356136cb81613d18565b809150509250929050565b6000806000606084860312156136eb57600080fd5b83356136f681613d18565b9250602084013561370681613d18565b929592945050506040919091013590565b6000806040838503121561372a57600080fd5b823561373581613d18565b915060208301356136cb81613d2d565b6000806040838503121561375857600080fd5b823561376381613d18565b946020939093013593505050565b6000806040838503121561378457600080fd5b823567ffffffffffffffff8082111561379c57600080fd5b6137a8868387016135e8565b93506020915081850135818111156137bf57600080fd5b85019050601f810186136137d257600080fd5b80356137e061360982613b23565b80828252848201915084840189868560051b870101111561380057600080fd5b600094505b83851015613823578035835260019490940193918501918501613805565b5080955050505050509250929050565b6000806040838503121561384657600080fd5b823567ffffffffffffffff81111561385d57600080fd5b613869858286016135e8565b92505060208301356136cb81613d2d565b60006020828403121561388c57600080fd5b8135610e3081613d2d565b6000602082840312156138a957600080fd5b8151610e3081613d2d565b600080604083850312156138c757600080fd5b823561376381613d2d565b6000602082840312156138e457600080fd5b5035919050565b600080604083850312156138fe57600080fd5b8235915060208301356136cb81613d18565b6000806040838503121561392357600080fd5b8235915060208301356136cb81613d2d565b6000806040838503121561394857600080fd5b50508035926020909101359150565b60008060006060848603121561396c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561399d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156139ed578581018301518582016040015282016139d1565b818111156139ff576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613ad15784516001600160a01b031683529383019391830191600101613aac565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1b57613b1b613d02565b604052919050565b600067ffffffffffffffff821115613b3d57613b3d613d02565b5060051b60200190565b60008219821115613b5a57613b5a613cc0565b500190565b600082613b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613bbc578160001904821115613ba257613ba2613cc0565b80851615613baf57918102915b93841c9390800290613b86565b509250929050565b6000610e3060ff841683600082613bdd57506001611393565b81613bea57506000611393565b8160018114613c005760028114613c0a57613c26565b6001915050611393565b60ff841115613c1b57613c1b613cc0565b50506001821b611393565b5060208310610133831016604e8410600b8410161715613c49575081810a611393565b613c538383613b81565b8060001904821115613c6757613c67613cc0565b029392505050565b6000816000190483118215151615613c8957613c89613cc0565b500290565b600082821015613ca057613ca0613cc0565b500390565b6000600019821415613cb957613cb9613cc0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461112c57600080fd5b801515811461112c57600080fdfea264697066735822122079f099e27e5b337ba840db5468ea2e59b11a5c16570a5aed0f40d2fbaa82a8dc64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x145677fc4d9b8f19b5d56d1820c48e0443049a30
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30
Deployed ByteCode Sourcemap
3159:22876:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24093:110;;;;;;;;;;-1:-1:-1;24093:110:0;;;;;:::i;:::-;;:::i;:::-;;7374:83;;;;;;;;;;-1:-1:-1;7444:5:0;;;;;;;;;;;;-1:-1:-1;;;7444:5:0;;;;7374:83;;;;;;;:::i;:::-;;;;;;;;8134:181;;;;;;;;;;-1:-1:-1;8134:181:0;;;;;:::i;:::-;;:::i;:::-;;;8598:14:1;;8591:22;8573:41;;8561:2;8546:18;8134:181:0;8433:187:1;3654:67:0;;;;;;;;;;-1:-1:-1;3654:67:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24766:209;;;;;;;;;;-1:-1:-1;24766:209:0;;;;;:::i;:::-;;:::i;7670:95::-;;;;;;;;;;-1:-1:-1;7750:7:0;;7670:95;;;20233:25:1;;;20221:2;20206:18;7670:95:0;20087:177:1;8323:430:0;;;;;;;;;;-1:-1:-1;8323:430:0;;;;;:::i;:::-;;:::i;4685:28::-;;;;;;;;;;;;;;;;23973:112;;;;;;;;;;-1:-1:-1;23973:112:0;;;;;:::i;:::-;;:::i;10414:248::-;;;;;;;;;;-1:-1:-1;10414:248:0;;;;;:::i;:::-;;:::i;7079:269::-;;;;;;;;;;-1:-1:-1;7079:269:0;;;;;:::i;:::-;;:::i;7556:83::-;;;;;;;;;;-1:-1:-1;7556:83:0;;4281:1;21864:36:1;;21852:2;21837:18;7556:83:0;21722:184:1;11011:475:0;;;;;;;;;;-1:-1:-1;11011:475:0;;;;;:::i;:::-;;:::i;10200:206::-;;;;;;;;;;-1:-1:-1;10200:206:0;;;;;:::i;:::-;;:::i;8761:228::-;;;;;;;;;;-1:-1:-1;8761:228:0;;;;;:::i;:::-;;:::i;25620:202::-;;;;;;;;;;-1:-1:-1;25620:202:0;;;;;:::i;:::-;;:::i;25454:154::-;;;;;;;;;;-1:-1:-1;25454:154:0;;;;;:::i;:::-;;:::i;11494:111::-;;;;;;;;;;-1:-1:-1;11494:111:0;;;;;:::i;:::-;;:::i;9722:470::-;;;;;;;;;;-1:-1:-1;9722:470:0;;;;;:::i;:::-;;:::i;25836:154::-;;;;;;;;;;-1:-1:-1;25836:154:0;;;;;:::i;:::-;;:::i;3768:26::-;;;;;;;;;;-1:-1:-1;3768:26:0;;;;;;;;10670:333;;;;;;;;;;-1:-1:-1;10670:333:0;;;;;:::i;:::-;;:::i;11731:123::-;;;;;;;;;;-1:-1:-1;11731:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11819:27:0;11795:4;11819:27;;;:18;:27;;;;;;;;;11731:123;25128:183;;;;;;;;;;-1:-1:-1;25128:183:0;;;;;:::i;:::-;;:::i;24628:126::-;;;;;;;;;;-1:-1:-1;24628:126:0;;;;;:::i;:::-;;:::i;11862:233::-;;;;;;;;;;-1:-1:-1;11862:233:0;;;;;:::i;:::-;;:::i;3544:48::-;;;;;;;;;;-1:-1:-1;3544:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4566;;;;;;;;;;;;;;;;4621:51;;;;;;;;;;;;;;;;4511:48;;;;;;;;;;;;;;;;3801:23;;;;;;;;;;-1:-1:-1;3801:23:0;;;;;;;;;;;23287:331;;;;;;;;;;-1:-1:-1;23287:331:0;;;;;:::i;:::-;;:::i;7773:198::-;;;;;;;;;;-1:-1:-1;7773:198:0;;;;;:::i;:::-;;:::i;1587:94::-;;;;;;;;;;;;;:::i;9594:120::-;;;;;;;;;;-1:-1:-1;9594:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9686:20:0;9662:4;9686:20;;;:11;:20;;;;;;;;;9594:120;1364:87;;;;;;;;;;-1:-1:-1;1410:7:0;1437:6;-1:-1:-1;;;;;1437:6:0;1364:87;;;-1:-1:-1;;;;;7498:32:1;;;7480:51;;7468:2;7453:18;1364:87:0;7334:203:1;23630:209:0;;;;;;;;;;-1:-1:-1;23630:209:0;;;;;:::i;:::-;;:::i;24515:101::-;;;;;;;;;;-1:-1:-1;24515:101:0;;;;;:::i;:::-;;:::i;7463:87::-;;;;;;;;;;-1:-1:-1;7535:7:0;;;;;;;;;;;;-1:-1:-1;;;7535:7:0;;;;7463:87;;5519:36;;;;;;;;;;-1:-1:-1;5519:36:0;;;;;;;;;;;;;;;;;;;;;;21513:25:1;;;21569:2;21554:18;;21547:34;;;;21597:18;;;21590:34;;;;21655:2;21640:18;;21633:34;21698:3;21683:19;;21676:35;21500:3;21485:19;5519:36:0;21254:463:1;8997:390:0;;;;;;;;;;-1:-1:-1;8997:390:0;;;;;:::i;:::-;;:::i;4218:19::-;;;;;;;;;;-1:-1:-1;4218:19:0;;;;-1:-1:-1;;;;;4218:19:0;;;9399:187;;;;;;;;;;-1:-1:-1;9399:187:0;;;;;:::i;:::-;;:::i;23847:114::-;;;;;;;;;;-1:-1:-1;23847:114:0;;;;;:::i;:::-;;:::i;24987:129::-;;;;;;;;;;-1:-1:-1;24987:129:0;;;;;:::i;:::-;;:::i;12107:241::-;;;;;;;;;;-1:-1:-1;12107:241:0;;;;;:::i;:::-;;:::i;24377:130::-;;;;;;;;;;-1:-1:-1;24377:130:0;;;;;:::i;:::-;;:::i;3987:40::-;;;;;;;;;;;;;;;;25323:123;;;;;;;;;;-1:-1:-1;25323:123:0;;;;;:::i;:::-;;:::i;7983:143::-;;;;;;;;;;-1:-1:-1;7983:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8091:18:0;;;8064:7;8091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7983:143;4451:53;;;;;;;;;;;;;;;;24217:152;;;;;;;;;;-1:-1:-1;24217:152:0;;;;;:::i;:::-;;:::i;11613:110::-;;;;;;;;;;-1:-1:-1;11613:110:0;;;;;:::i;:::-;;:::i;3946:34::-;;;;;;;;;;-1:-1:-1;3946:34:0;;;;;;;;1689:192;;;;;;;;;;-1:-1:-1;1689:192:0;;;;;:::i;:::-;;:::i;4190:21::-;;;;;;;;;;-1:-1:-1;4190:21:0;;;;-1:-1:-1;;;;;4190:21:0;;;24093:110;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;;;;;;;;;24170:13:::1;:25:::0;;-1:-1:-1;;;;;;24170:25:0::1;-1:-1:-1::0;;;;;24170:25:0;;;::::1;::::0;;;::::1;::::0;;24093:110::o;8134:181::-;4092:14;;8229:4;;8209:10;;4092:14;;;:42;;-1:-1:-1;;;;;;4110:24:0;;;;;;:15;:24;;;;;;;;4092:42;4084:78;;;;-1:-1:-1;;;4084:78:0;;;;;;;:::i;:::-;8246:39:::1;865:10:::0;8269:7:::1;8278:6;8246:8;:39::i;:::-;-1:-1:-1::0;8303:4:0::1;::::0;8134:181;-1:-1:-1;;;8134:181:0:o;24766:209::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;24865:9:::1;24861:107;24883:8;:15;24879:1;:19;24861:107;;;24949:5;24919:14;:27;24934:8;24943:1;24934:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24919:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24919:27:0;:35;;-1:-1:-1;;24919:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24900:3;::::1;::::0;::::1;:::i;:::-;;;;24861:107;;;;24766:209:::0;;:::o;8323:430::-;4092:14;;8437:4;;8420:6;;4092:14;;;:42;;-1:-1:-1;;;;;;4110:24:0;;;;;;:15;:24;;;;;;;;4092:42;4084:78;;;;-1:-1:-1;;;4084:78:0;;;;;;;:::i;:::-;8454:36:::1;8464:6;8472:9;8483:6;8454:9;:36::i;:::-;-1:-1:-1::0;;;;;8530:19:0;::::1;8503:24;8530:19:::0;;;:11:::1;:19;::::0;;;;;;;865:10;8530:33;;;;;;;;8582:26;;::::1;;8574:79;;;::::0;-1:-1:-1;;;8574:79:0;;19880:2:1;8574:79:0::1;::::0;::::1;19862:21:1::0;19919:2;19899:18;;;19892:30;19958:34;19938:18;;;19931:62;-1:-1:-1;;;20009:18:1;;;20002:38;20057:19;;8574:79:0::1;19678:404:1::0;8574:79:0::1;8664:57;8673:6:::0;865:10;8695:25:::1;8714:6:::0;8695:16;:25:::1;:::i;:::-;8664:8;:57::i;:::-;-1:-1:-1::0;8741:4:0::1;::::0;8323:430;-1:-1:-1;;;;;8323:430:0:o;23973:112::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;24051:14:::1;:26:::0;;-1:-1:-1;;;;;;24051:26:0::1;-1:-1:-1::0;;;;;24051:26:0;;;::::1;::::0;;;::::1;::::0;;23973:112::o;10414:248::-;10480:7;10519;;10508;:18;;10500:73;;;;-1:-1:-1;;;10500:73:0;;11190:2:1;10500:73:0;;;11172:21:1;11229:2;11209:18;;;11202:30;11268:34;11248:18;;;11241:62;-1:-1:-1;;;11319:18:1;;;11312:40;11369:19;;10500:73:0;10988:406:1;10500:73:0;10584:19;10607:10;:8;:10::i;:::-;10584:33;-1:-1:-1;10635:19:0;10584:33;10635:7;:19;:::i;:::-;10628:26;10414:248;-1:-1:-1;;;10414:248:0:o;7079:269::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7171:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;::::1;;:54;;::::0;::::1;;;;7163:113;;;::::0;-1:-1:-1;;;7163:113:0;;10775:2:1;7163:113:0::1;::::0;::::1;10757:21:1::0;10814:2;10794:18;;;10787:30;10853:34;10833:18;;;10826:62;-1:-1:-1;;;10904:18:1;;;10897:44;10958:19;;7163:113:0::1;10573:410:1::0;7163:113:0::1;-1:-1:-1::0;;;;;7287:43:0;;;::::1;;::::0;;;:34:::1;:43;::::0;;;;:53;;-1:-1:-1;;7287:53:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7079:269::o;11011:475::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11093:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11085:56;;;::::0;-1:-1:-1;;;11085:56:0;;14721:2:1;11085:56:0::1;::::0;::::1;14703:21:1::0;14760:2;14740:18;;;14733:30;14799:25;14779:18;;;14772:53;14842:18;;11085:56:0::1;14519:347:1::0;11085:56:0::1;11157:9;11152:327;11176:9;:16:::0;11172:20;::::1;11152:327;;;11234:7;-1:-1:-1::0;;;;;11218:23:0::1;:9;11228:1;11218:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11218:12:0::1;:23;11214:254;;;11277:9;11287:16:::0;;:20:::1;::::0;11306:1:::1;::::0;11287:20:::1;:::i;:::-;11277:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11262:9:::1;:12:::0;;-1:-1:-1;;;;;11277:31:0;;::::1;::::0;11272:1;;11262:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11262:46:0::1;-1:-1:-1::0;;;;;11262:46:0;;::::1;;::::0;;11327:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11366:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11366:28:0::1;::::0;;11413:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11413:15:0;;;;;-1:-1:-1;;;;;;11413:15:0::1;::::0;;;;;11152:327:::1;11011:475:::0;:::o;11214:254::-:1;11194:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11152:327;;;;11011:475:::0;:::o;10200:206::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;10267:14:::1;:22:::0;;-1:-1:-1;;10300:19:0;-1:-1:-1;;10267:22:0;::::1;;10300:19:::0;;;;;;;10267:22:::1;10300:19:::0;::::1;;::::0;;;-1:-1:-1;10333:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;10350:13:0::1;::::0;:18;10333:35:::1;10330:68;;;10386:12;10370:13;:28:::0;10330:68:::1;10200:206:::0;:::o;8761:228::-;4092:14;;8862:4;;8841:10;;4092:14;;;:42;;-1:-1:-1;;;;;;4110:24:0;;;;;;:15;:24;;;;;;;;4092:42;4084:78;;;;-1:-1:-1;;;4084:78:0;;;;;;;:::i;:::-;865:10;8911:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8911:34:0;::::1;::::0;;;;;;;;8879:80:::1;::::0;865:10;8902:7;;8911:47:::1;::::0;8948:10;;8911:47:::1;:::i;25620:202::-:0;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;25730:9:::1;25705:21;:34;;25697:74;;;::::0;-1:-1:-1;;;25697:74:0;;12008:2:1;25697:74:0::1;::::0;::::1;11990:21:1::0;12047:2;12027:18;;;12020:30;12086:29;12066:18;;;12059:57;12133:18;;25697:74:0::1;11806:351:1::0;25697:74:0::1;25782:32;::::0;-1:-1:-1;;;;;25782:21:0;::::1;::::0;:32;::::1;;;::::0;25804:9;;25782:32:::1;::::0;;;25804:9;25782:21;:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;25454:154:::0;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;25548:6:::1;:27:::0;;-1:-1:-1;;;;;25548:27:0;;::::1;-1:-1:-1::0;;;;;;25548:27:0;;::::1;;::::0;;;25586:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25454:154::o;11494:111::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11563:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11563:34:0::1;11593:4;11563:34;::::0;;11494:111::o;9722:470::-;9812:7;9851;;9840;:18;;9832:62;;;;-1:-1:-1;;;9832:62:0;;15837:2:1;9832:62:0;;;15819:21:1;15876:2;15856:18;;;15849:30;15915:33;15895:18;;;15888:61;15966:18;;9832:62:0;15635:355:1;9832:62:0;9910:17;9905:280;;9944:28;9975:32;9986:7;9995:4;10001:5;9975:10;:32::i;:::-;10029:9;;-1:-1:-1;10022:16:0;;-1:-1:-1;10022:16:0;9905:280;10071:28;10102:32;10113:7;10122:4;10128:5;10102:10;:32::i;:::-;10156:17;;;;-1:-1:-1;10149:24:0;;-1:-1:-1;10149:24:0;9905:280;9722:470;;;;:::o;25836:154::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;25941:41:::1;::::0;-1:-1:-1;;;25941:41:0;;-1:-1:-1;;;;;7734:32:1;;;25941:41:0::1;::::0;::::1;7716:51:1::0;7783:18;;;7776:34;;;25941:27:0;::::1;::::0;::::1;::::0;7689:18:1;;25941:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25836:154:::0;;;:::o;10670:333::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10753:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10752:21;10744:61;;;::::0;-1:-1:-1;;;10744:61:0;;13172:2:1;10744:61:0::1;::::0;::::1;13154:21:1::0;13211:2;13191:18;;;13184:30;13250:29;13230:18;;;13223:57;13297:18;;10744:61:0::1;12970:351:1::0;10744:61:0::1;-1:-1:-1::0;;;;;10819:16:0;::::1;10838:1;10819:16:::0;;;:7:::1;:16;::::0;;;;;:20;10816:108:::1;;-1:-1:-1::0;;;;;10895:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10875:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10856:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10816:108:::1;-1:-1:-1::0;;;;;10934:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10934:27:0::1;10957:4;10934:27:::0;;::::1;::::0;;;10972:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10972:23:0::1;::::0;;::::1;::::0;;10670:333::o;25128:183::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;25239:14:::1;4281:1:::0;25239:2:::1;:14;:::i;:::-;25230:23;::::0;:6;:23:::1;:::i;:::-;25216:11;:37:::0;25289:14:::1;4281:1:::0;25289:2:::1;:14;:::i;:::-;25279:24;::::0;:7;:24:::1;:::i;:::-;25264:12;:39:::0;-1:-1:-1;;25128:183:0:o;24628:126::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24715:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24715:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24628:126::o;11862:233::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;12006:52:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;11998:5:::1;:60:::0;;;;;;;;;;;;;;;;;;;12074:13;::::1;::::0;-1:-1:-1;;12074:13:0::1;11862:233:::0;;;;;:::o;23287:331::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;23419:7:::1;:14;23400:8;:15;:33;23392:72;;;::::0;-1:-1:-1;;;23392:72:0;;18068:2:1;23392:72:0::1;::::0;::::1;18050:21:1::0;18107:2;18087:18;;;18080:30;18146:28;18126:18;;;18119:56;18192:18;;23392:72:0::1;17866:350:1::0;23392:72:0::1;23479:9;23475:136;23498:8;:15;23494:1;:19;23475:136;;;23534:65;23549:10;23561:8;23570:1;23561:11;;;;;;;;:::i;:::-;;;;;;;23574:7;23582:1;23574:10;;;;;;;;:::i;:::-;;;;;;;23586:5;23593::::0;23534:14:::1;:65::i;:::-;23515:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23475:136;;7773:198:::0;-1:-1:-1;;;;;7863:20:0;;7839:7;7863:20;;;:11;:20;;;;;;;;7859:49;;;-1:-1:-1;;;;;;7892:16:0;;;;;:7;:16;;;;;;;7773:198::o;7859:49::-;-1:-1:-1;;;;;7946:16:0;;;;;;:7;:16;;;;;;7926:37;;:19;:37::i;1587:94::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;1652:21:::1;1670:1;1652:9;:21::i;:::-;1587:94::o:0;23630:209::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;23726:9:::1;23722:110;23745:8;:15;23741:1;:19;23722:110;;;23815:5;23781:18;:31;23800:8;23809:1;23800:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23781:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23781:31:0;:39;;-1:-1:-1;;23781:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23762:3;::::1;::::0;::::1;:::i;:::-;;;;23722:110;;24515:101:::0;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;24586:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24586:22:0;;::::1;::::0;;;::::1;::::0;;24515:101::o;8997:390::-;4092:14;;9103:4;;9082:10;;4092:14;;;:42;;-1:-1:-1;;;;;;4110:24:0;;;;;;:15;:24;;;;;;;;4092:42;4084:78;;;;-1:-1:-1;;;4084:78:0;;;;;;;:::i;:::-;865:10;9120:24:::1;9147:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9147:34:0;::::1;::::0;;;;;;;;9200:35;;::::1;;9192:85;;;::::0;-1:-1:-1;;;9192:85:0;;17662:2:1;9192:85:0::1;::::0;::::1;17644:21:1::0;17701:2;17681:18;;;17674:30;17740:34;17720:18;;;17713:62;-1:-1:-1;;;17791:18:1;;;17784:35;17836:19;;9192:85:0::1;17460:401:1::0;9192:85:0::1;9288:67;865:10:::0;9311:7;9320:34:::1;9339:15:::0;9320:16;:34:::1;:::i;9288:67::-;-1:-1:-1::0;9375:4:0::1;::::0;8997:390;-1:-1:-1;;;;8997:390:0:o;9399:187::-;4092:14;;9497:4;;9476:10;;4092:14;;;:42;;-1:-1:-1;;;;;;4110:24:0;;;;;;:15;:24;;;;;;;;4092:42;4084:78;;;;-1:-1:-1;;;4084:78:0;;;;;;;:::i;:::-;9518:40:::1;9528:10;9540:9;9551:6;9518:9;:40::i;23847:114::-:0;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;23926:15:::1;:27:::0;;-1:-1:-1;;;;;;23926:27:0::1;-1:-1:-1::0;;;;;23926:27:0;;;::::1;::::0;;;::::1;::::0;;23847:114::o;24987:129::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25076:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;25076:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24987:129::o;12107:241::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;12259:52:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;12247:9:::1;:64:::0;;;;;;;;;;;;;;;;;;12327:13;::::1;::::0;-1:-1:-1;;12327:13:0::1;12107:241:::0;;;;;:::o;24377:130::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;24486:13:::1;4281:1;24486:2;:13;:::i;:::-;24477:22;::::0;:6;:22:::1;:::i;:::-;24456:18;:43:::0;-1:-1:-1;24377:130:0:o;25323:123::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;25424:14:::1;4281:1:::0;25424:2:::1;:14;:::i;:::-;25415:23;::::0;:6;:23:::1;:::i;:::-;25398:14;:40:::0;-1:-1:-1;25323:123:0:o;24217:152::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;24311:16:::1;:4:::0;24318:9:::1;24311:16;:::i;:::-;24296:12;:31:::0;-1:-1:-1;24338:15:0::1;:23:::0;;-1:-1:-1;;24338:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24217:152::o;11613:110::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11680:27:0::1;11710:5;11680:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11680:35:0::1;::::0;;11613:110::o;1689:192::-;1410:7;1437:6;-1:-1:-1;;;;;1437:6:0;865:10;1499:23;1491:68;;;;-1:-1:-1;;;1491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1778:22:0;::::1;1770:73;;;::::0;-1:-1:-1;;;1770:73:0;;11601:2:1;1770:73:0::1;::::0;::::1;11583:21:1::0;11640:2;11620:18;;;11613:30;11679:34;11659:18;;;11652:62;-1:-1:-1;;;11730:18:1;;;11723:36;11776:19;;1770:73:0::1;11399:402:1::0;1770:73:0::1;1854:19;1864:8;1854:9;:19::i;16602:335::-:0;-1:-1:-1;;;;;16695:19:0;;16687:68;;;;-1:-1:-1;;;16687:68:0;;12364:2:1;16687:68:0;;;12346:21:1;12403:2;12383:18;;;12376:30;12442:34;12422:18;;;12415:62;-1:-1:-1;;;12493:18:1;;;12486:34;12537:19;;16687:68:0;12162:400:1;16687:68:0;-1:-1:-1;;;;;16774:21:0;;16766:68;;;;-1:-1:-1;;;16766:68:0;;12769:2:1;16766:68:0;;;12751:21:1;12808:2;12788:18;;;12781:30;12847:34;12827:18;;;12820:62;-1:-1:-1;;;12898:18:1;;;12891:32;12940:19;;16766:68:0;12567:398:1;16766:68:0;-1:-1:-1;;;;;16845:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16897:32;;20233:25:1;;;16897:32:0;;20206:18:1;16897:32:0;;;;;;;16602:335;;;:::o;16945:2571::-;-1:-1:-1;;;;;17033:18:0;;17025:68;;;;-1:-1:-1;;;17025:68:0;;15431:2:1;17025:68:0;;;15413:21:1;15470:2;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;-1:-1:-1;;;15560:18:1;;;15553:35;15605:19;;17025:68:0;15229:401:1;17025:68:0;-1:-1:-1;;;;;17112:16:0;;17104:64;;;;-1:-1:-1;;;17104:64:0;;19117:2:1;17104:64:0;;;19099:21:1;19156:2;19136:18;;;19129:30;19195:34;19175:18;;;19168:62;-1:-1:-1;;;19246:18:1;;;19239:33;19289:19;;17104:64:0;18915:399:1;17104:64:0;17196:1;17187:6;:10;17179:64;;;;-1:-1:-1;;;17179:64:0;;16907:2:1;17179:64:0;;;16889:21:1;16946:2;16926:18;;;16919:30;16985:34;16965:18;;;16958:62;-1:-1:-1;;;17036:18:1;;;17029:39;17085:19;;17179:64:0;16705:405:1;17179:64:0;17272:15;17282:4;17272:9;:15::i;:::-;17262:6;:25;;17254:86;;;;-1:-1:-1;;;17254:86:0;;10357:2:1;17254:86:0;;;10339:21:1;10396:2;10376:18;;;10369:30;10435:34;10415:18;;;10408:62;-1:-1:-1;;;10486:18:1;;;10479:47;10543:19;;17254:86:0;10155:413:1;17254:86:0;-1:-1:-1;;;;;17360:20:0;;;;;;:14;:20;;;;;;;;17359:21;:44;;;;-1:-1:-1;;;;;;17385:18:0;;;;;;:14;:18;;;;;;;;17384:19;17359:44;17351:70;;;;-1:-1:-1;;;17351:70:0;;18775:2:1;17351:70:0;;;18757:21:1;18814:2;18794:18;;;18787:30;-1:-1:-1;;;18833:18:1;;;18826:43;18886:18;;17351:70:0;18573:337:1;17351:70:0;-1:-1:-1;;;;;17446:24:0;;;;;;:18;:24;;;;;;;;17445:25;:52;;;;-1:-1:-1;;;;;;17475:22:0;;;;;;:18;:22;;;;;;;;17474:23;17445:52;17442:128;;;17521:14;;;;17513:45;;;;-1:-1:-1;;;17513:45:0;;10010:2:1;17513:45:0;;;9992:21:1;10049:2;10029:18;;;10022:30;-1:-1:-1;;;10068:18:1;;;10061:48;10126:18;;17513:45:0;9808:342:1;17513:45:0;-1:-1:-1;;;;;17594:24:0;;;;;;:18;:24;;;;;;;;17593:25;:52;;;;-1:-1:-1;;;;;;17623:22:0;;;;;;:18;:22;;;;;;;;17622:23;17593:52;:89;;;;-1:-1:-1;17665:13:0;;:17;;17681:1;17665:17;:::i;:::-;17649:12;:33;;17593:89;17590:180;;;17713:4;;-1:-1:-1;;;;;17707:10:0;;;17713:4;;17707:10;;17699:59;;;;-1:-1:-1;;;17699:59:0;;13889:2:1;17699:59:0;;;13871:21:1;13928:2;13908:18;;;13901:30;13967:34;13947:18;;;13940:62;-1:-1:-1;;;14018:18:1;;;14011:34;14062:19;;17699:59:0;13687:400:1;17699:59:0;17801:4;;-1:-1:-1;;;;;17793:12:0;;;17801:4;;17793:12;:39;;;;-1:-1:-1;;;;;;17810:22:0;;;;;;:18;:22;;;;;;;;17809:23;17793:39;:52;;;;-1:-1:-1;17837:8:0;;;;;;;17836:9;17793:52;17790:246;;;17879:11;;17869:6;:21;;17861:63;;;;-1:-1:-1;;;17861:63:0;;9652:2:1;17861:63:0;;;9634:21:1;9691:2;9671:18;;;9664:30;9730:31;9710:18;;;9703:59;9779:18;;17861:63:0;9450:353:1;17861:63:0;17973:14;;17963:6;17947:13;17957:2;17947:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17939:85;;;;-1:-1:-1;;;17939:85:0;;13528:2:1;17939:85:0;;;13510:21:1;;;13547:18;;;13540:30;13606:34;13586:18;;;13579:62;13658:18;;17939:85:0;13326:356:1;17939:85:0;18067:4;;-1:-1:-1;;;;;18059:12:0;;;18067:4;;18059:12;;;;:39;;-1:-1:-1;;;;;;18076:22:0;;;;;;:18;:22;;;;;;;;18075:23;18059:39;:68;;;;-1:-1:-1;;;;;;18103:24:0;;;;;;:18;:24;;;;;;;;18102:25;18059:68;:81;;;;-1:-1:-1;18132:8:0;;;;;;;18131:9;18059:81;18056:573;;;18174:12;;18164:6;:22;;18156:65;;;;-1:-1:-1;;;18156:65:0;;19521:2:1;18156:65:0;;;19503:21:1;19560:2;19540:18;;;19533:30;19599:32;19579:18;;;19572:60;19649:18;;18156:65:0;19319:354:1;18156:65:0;18245:4;;-1:-1:-1;;;;;18239:10:0;;;18245:4;;18239:10;18236:134;;18303:14;;18293:6;18277:13;18287:2;18277:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18269:85;;;;-1:-1:-1;;;18269:85:0;;13528:2:1;18269:85:0;;;13510:21:1;;;13547:18;;;13540:30;13606:34;13586:18;;;13579:62;13658:18;;18269:85:0;13326:356:1;18269:85:0;18387:15;;;;18384:234;;;-1:-1:-1;;;;;18461:15:0;;18422:18;18461:15;;;:9;:15;;;;;;18443:33;;:15;:33;:::i;:::-;18422:54;;18517:12;;18503:10;:26;;18495:55;;;;-1:-1:-1;;;18495:55:0;;17317:2:1;18495:55:0;;;17299:21:1;17356:2;17336:18;;;17329:30;-1:-1:-1;;;17375:18:1;;;17368:46;17431:18;;18495:55:0;17115:340:1;18495:55:0;-1:-1:-1;;;;;;18569:15:0;;;;;;:9;:15;;;;;18587;18569:33;;18384:234;18696:14;4281:1;18696:2;:14;:::i;:::-;18690:20;;:2;:20;:::i;:::-;18680:6;18662:15;18672:4;18662:9;:15::i;:::-;:24;;;;:::i;:::-;:48;18659:111;;18754:15;18764:4;18754:9;:15::i;:::-;18745:6;18728:14;4281:1;18728:2;:14;:::i;:::-;18723:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;18712:58;;;;:::i;:::-;;;18659:111;18800:12;18843:18;;18815:24;18833:4;18815:9;:24::i;:::-;18876:8;;-1:-1:-1;;18815:46:0;;-1:-1:-1;18876:8:0;;;;;18875:9;:24;;;;-1:-1:-1;18888:11:0;;;;;;;18875:24;:35;;;;;18903:7;18875:35;:51;;;;-1:-1:-1;18922:4:0;;-1:-1:-1;;;;;18914:12:0;;;18922:4;;18914:12;;18875:51;:80;;;;-1:-1:-1;;;;;;18931:24:0;;;;;;:18;:24;;;;;;;;18930:25;18875:80;:107;;;;-1:-1:-1;;;;;;18960:22:0;;;;;;:18;:22;;;;;;;;18959:23;18875:107;18872:261;;;19007:4;;-1:-1:-1;;;;;19001:10:0;;;19007:4;;19001:10;18998:123;;;19029:18;;19014:45;;;;;;;;19049:9;19014:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19029:18;19014:14;:45::i;:::-;18998:123;;;19095:18;;19080:41;;;;;;;;19115:5;19080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19095:18;19080:14;:41::i;:::-;19206:8;;19158:4;;19143:12;;19206:8;;;;;;:36;;-1:-1:-1;;;;;;19218:24:0;;;;;;:18;:24;;;;;;;;19206:36;:62;;;-1:-1:-1;;;;;;19246:22:0;;;;;;:18;:22;;;;;;;;19206:62;19203:82;;;19280:5;19270:15;;19203:82;19305:4;;-1:-1:-1;;;;;19299:10:0;;;19305:4;;19299:10;19296:28;;;-1:-1:-1;19320:4:0;19296:28;19343:14;;;;19339:108;;-1:-1:-1;;;;;19376:40:0;;;;;;:34;:40;;;;;;;;19368:73;;;;-1:-1:-1;;;19368:73:0;;16197:2:1;19368:73:0;;;16179:21:1;16236:2;16216:18;;;16209:30;-1:-1:-1;;;16255:18:1;;;16248:50;16315:18;;19368:73:0;15995:344:1;19368:73:0;19459:49;19474:4;19480:2;19484:6;19492:7;19501:6;19459:14;:49::i;:::-;17014:2502;;;16945:2571;;;:::o;15888:158::-;15929:7;15950:15;15967;15986:19;:17;:19::i;:::-;15949:56;;-1:-1:-1;15949:56:0;-1:-1:-1;16023:15:0;15949:56;;16023:15;:::i;:::-;16016:22;;;;15888:158;:::o;13642:491::-;13728:36;;:::i;:::-;13789:37;13801:7;13810;13819:6;13789:11;:37::i;:::-;13777:49;;13966:53;13979:9;13990:7;13999;14008:10;:8;:10::i;:::-;13966:12;:53::i;:::-;13944:18;;;13837:182;13922:20;;;13837:182;13900:20;;;13837:182;13884:14;;;13837:182;13857:25;;;13837:182;;;14054:44;13838:9;14078:7;14087:10;:8;:10::i;:::-;14054:12;:44::i;:::-;14031:19;;;14030:68;13642:491;;;;;:::o;19599:1232::-;19723:28;19754:36;19765:7;19774;19783:6;19754:10;:36::i;:::-;-1:-1:-1;;;;;19807:19:0;;;;;;:11;:19;;;;;;19723:67;;-1:-1:-1;19807:19:0;;19803:115;;;-1:-1:-1;;;;;19883:15:0;;;;;;:7;:15;;;;;;:23;;19899:7;;19883:23;:::i;:::-;-1:-1:-1;;;;;19865:15:0;;;;;;:7;:15;;;;;:41;19803:115;-1:-1:-1;;;;;19932:22:0;;;;;;:11;:22;;;;;;;;19928:130;;;20029:17;;;;-1:-1:-1;;;;;20010:18:0;;;;;;:7;:18;;;;;;:36;;20029:17;20010:36;:::i;:::-;-1:-1:-1;;;;;19989:18:0;;;;;;:7;:18;;;;;:57;19928:130;20104:9;;-1:-1:-1;;;;;20088:15:0;;20104:9;20088:15;;;:7;:15;;;;;;:25;;20104:9;20088:25;:::i;:::-;-1:-1:-1;;;;;20070:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;20164:17;;;20145:18;;;;;;;;;;:36;;20164:17;20145:36;:::i;:::-;-1:-1:-1;;;;;20124:18:0;;;;;;:7;:18;;;;;;;:57;;;;20205:6;;;:10;;;:24;;;20228:1;20219;:6;;;:10;20205:24;20202:56;;;20231:27;20243:1;:6;;;20251:1;:6;;;20231:11;:27::i;:::-;20287:1;20272;:12;;;:16;:36;;;;20307:1;20292;:12;;;:16;20272:36;20269:216;;;20325:41;20340:1;:12;;;20353:1;:12;;;20325:14;:41::i;:::-;20411:4;-1:-1:-1;;;;;20386:87:0;20395:6;-1:-1:-1;;;;;20386:87:0;;20462:1;:10;;;20448:1;:11;;;20433:1;:12;;;20418:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;20386:87;;20233:25:1;;;20221:2;20206:18;20386:87:0;;;;;;;20269:216;20513:1;20498;:12;;;:16;:36;;;;20533:1;20518;:12;;;:16;20498:36;20495:83;;;20536:42;20551:1;:12;;;20565:1;:12;;;20536:14;:42::i;:::-;20606:1;20592;:11;;;:15;:34;;;;20625:1;20611;:11;;;:15;20592:34;20589:78;;;20628:39;20642:1;:11;;;20655:1;:11;;;20628:13;:39::i;:::-;20694:1;20681;:10;;;:14;:32;;;;20712:1;20699;:10;;;:14;20681:32;20678:73;;;20715:36;20728:1;:10;;;20740:1;:10;;;20715:12;:36::i;:::-;20784:9;-1:-1:-1;;;;;20767:46:0;20776:6;-1:-1:-1;;;;;20767:46:0;;20795:1;:17;;;20767:46;;;;20233:25:1;;20221:2;20206:18;;20087:177;20767:46:0;;;;;;;;19710:1121;19599:1232;;;;;:::o;1889:173::-;1945:16;1964:6;;-1:-1:-1;;;;;1981:17:0;;;-1:-1:-1;;;;;;1981:17:0;;;;;;2014:40;;1964:6;;;;;;;2014:40;;1945:16;2014:40;1934:128;1889:173;:::o;20839:1354::-;6070:8;:15;;-1:-1:-1;;6070:15:0;;;;;21010:12:::1;::::0;::::1;::::0;20994:13:::1;::::0;::::1;::::0;20977:14:::1;::::0;::::1;::::0;20960::::1;::::0;::::1;::::0;6070:15;;21010:12;20994:13;20960:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;:62;;;;:::i;:::-;20959:68;::::0;21026:1:::1;20959:68;:::i;:::-;20937:90;;21038:32;21108:11;21091:4;:14;;;21073:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;21038:81:::0;-1:-1:-1;21130:14:0::1;21147:42;21038:81:::0;21147:15;:42:::1;:::i;:::-;21130:59:::0;-1:-1:-1;21227:21:0::1;21261:27;21130:59:::0;21261:19:::1;:27::i;:::-;21301:20;21324:38;21348:14:::0;21324:21:::1;:38;:::i;:::-;21301:61;;21373:19;21424:4;:14;;;21410:11;:28;;;;:::i;:::-;21394:45;::::0;:12;:45:::1;:::i;:::-;21373:66;;21450:32;21499:4;:14;;;21485:11;:28;;;;:::i;:::-;21450:63:::0;-1:-1:-1;21529:28:0;;21526:164:::1;;21614:64;21627:24;21653;21614:12;:64::i;:::-;21743:14;::::0;::::1;::::0;21702:20:::1;::::0;21725:15:::1;:11:::0;21739:1:::1;21725:15;:::i;:::-;:32;;;;:::i;:::-;21702:55:::0;-1:-1:-1;21771:16:0;;21768:95:::1;;21811:15;::::0;21803:48:::1;::::0;-1:-1:-1;;;;;21811:15:0::1;21838:12:::0;21803:34:::1;:48::i;:::-;21913:13;::::0;::::1;::::0;21873:19:::1;::::0;21895:15:::1;:11:::0;21909:1:::1;21895:15;:::i;:::-;:31;;;;:::i;:::-;21873:53:::0;-1:-1:-1;21940:15:0;;21937:92:::1;;21979:14;::::0;21971:46:::1;::::0;-1:-1:-1;;;;;21979:14:0::1;22005:11:::0;21971:33:::1;:46::i;:::-;22078:12;::::0;::::1;::::0;22039:18:::1;::::0;22060:15:::1;:11:::0;22074:1:::1;22060:15;:::i;:::-;:30;;;;:::i;:::-;22039:51:::0;-1:-1:-1;22104:14:0;;22101:85:::1;;22142:13;::::0;22134:44:::1;::::0;-1:-1:-1;;;;;22142:13:0::1;22167:10:::0;22134:32:::1;:44::i;:::-;-1:-1:-1::0;;6108:8:0;:16;;-1:-1:-1;;6108:16:0;;;-1:-1:-1;;;;;;;;;;20839:1354:0:o;16054:540::-;16151:7;;16187;;16104;;;;;16205:279;16229:9;:16;16225:20;;16205:279;;;16295:7;16271;:21;16279:9;16289:1;16279:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16279:12:0;16271:21;;;;;;;;;;;;;:31;;:66;;;16330:7;16306;:21;16314:9;16324:1;16314:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16314:12:0;16306:21;;;;;;;;;;;;;:31;16271:66;16267:97;;;16347:7;;16356;;16339:25;;;;;;;16054:540;;:::o;16267:97::-;16397:7;:21;16405:9;16415:1;16405:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16405:12:0;16397:21;;;;;;;;;;;;;16389:29;;:7;:29;:::i;:::-;16379:39;;16451:7;:21;16459:9;16469:1;16459:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16459:12:0;16451:21;;;;;;;;;;;;;16443:29;;:7;:29;:::i;:::-;16433:39;-1:-1:-1;16247:3:0;;;;:::i;:::-;;;;16205:279;;;;16516:7;;16508;;:15;;;;:::i;:::-;16498:7;:25;16494:56;;;16533:7;;16542;;16525:25;;;;;;16054:540;;:::o;16494:56::-;16569:7;;16578;;-1:-1:-1;16054:540:0;-1:-1:-1;16054:540:0:o;14141:682::-;14228:28;;:::i;:::-;14275:7;14271:86;;14297:17;;;:27;;;14337:8;;14271:86;14367:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:17:0;14398:6;14395:55;;;-1:-1:-1;14406:16:0;;;;;;;;14413:9;14406:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14395:55;;;-1:-1:-1;14438:12:0;;;;;;;;14445:5;14438:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14395:55;14488:8;;14497:3;;14480:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14471:6;;;:29;14534:14;;;;14549:3;;14526:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14511:12;;;:41;14586:14;;;;14601:3;;14578:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14563:12;;;:41;14637:13;;;;14651:3;;14629:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;14615:11;;;:39;14686:12;;;;14699:3;;14678:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;14665:10;;;:37;;;14774:11;;;;14761:12;;;;14748;;;;14741:6;;;;14733:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;:63;;;;:::i;:::-;14713:17;;;:83;-1:-1:-1;14141:682:0;;;;;:::o;14831:765::-;14957:15;;;;;;15090:19;15098:11;15090:7;:19;:::i;:::-;15080:29;;15126:7;15122:71;;-1:-1:-1;15155:7:0;;-1:-1:-1;15173:1:0;;-1:-1:-1;15173:1:0;;-1:-1:-1;15173:1:0;;-1:-1:-1;15173:1:0;15148:33;;15122:71;15219:11;15212:1;:6;;;:18;;;;:::i;:::-;15205:25;;15267:11;15254:1;:12;;;:24;;;;:::i;:::-;15241:37;;15315:11;15302:1;:12;;;:24;;;;:::i;:::-;15289:37;;15337:17;15369:11;15357:1;:11;;;:23;;;;:::i;:::-;15337:43;;15413:11;15402:1;:10;;;:22;;;;:::i;:::-;15391:33;-1:-1:-1;15391:33:0;15489:9;15478:10;15467;15454:12;15462:4;15454:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;:53;;;;:::i;:::-;15435:72;;15518:70;14831:765;;;;;;;;;;;;:::o;15608:272::-;15717:17;15753:7;15749:47;;-1:-1:-1;15782:1:0;15775:9;;15749:47;15832:11;15820:1;:11;;;:23;;;;:::i;:::-;15808:35;15608:272;-1:-1:-1;;;;15608:272:0:o;12356:123::-;12434:4;12424:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12449:11:0;:22;;12467:4;;12449:11;:15;;:22;;12467:4;;12449:22;:::i;:::-;;;;-1:-1:-1;;;;12356:123:0:o;12487:284::-;12594:10;12570:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12640:4:0;12620:26;;;;:11;:26;;;;;;;;12617:101;;;12688:4;12672:22;;;;:7;:22;;;;;:34;;12696:10;;12672:22;:34;;12696:10;;12672:34;:::i;:::-;;;;-1:-1:-1;;12617:101:0;12744:4;12728:22;;;;:7;:22;;;;;:35;;12753:10;;12728:22;:35;;12753:10;;12728:35;:::i;12779:284::-;12886:10;12862:11;:21;;;:34;;;;;;;:::i;13075:277::-;13178:9;13155:11;:20;;;:32;;;;;;;:::i;13360:270::-;13459:8;13437:11;:19;;;:30;;;;;;;:::i;22710:565::-;22863:16;;;22877:1;22863:16;;;;;;;;22839:21;;22863:16;;;;;;;;;;-1:-1:-1;22863:16:0;22839:40;;22908:4;22890;22895:1;22890:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22890:23:0;;;:7;;;;;;;;;;:23;;;;22934:6;;:13;;;-1:-1:-1;;;22934:13:0;;;;:6;;;;;:11;;:13;;;;;22890:7;;22934:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22924:4;22929:1;22924:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22924:23:0;;;:7;;;;;;;;;:23;22992:6;;22960:53;;22977:4;;22992:6;23001:11;22960:8;:53::i;:::-;23052:6;;:215;;-1:-1:-1;;;23052:215:0;;-1:-1:-1;;;;;23052:6:0;;;;:57;;:215;;23124:11;;23052:6;;23194:4;;23221;;23241:15;;23052:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22201:501;22384:6;;22352:53;;22369:4;;-1:-1:-1;;;;;22384:6:0;22393:11;22352:8;:53::i;:::-;22448:6;;-1:-1:-1;;;;;22448:6:0;:22;22478:12;22514:4;22534:11;22448:6;;22646:7;1410;1437:6;-1:-1:-1;;;;;1437:6:0;;1364:87;22646:7;22448:246;;;;;;-1:-1:-1;;;;;;22448:246:0;;;-1:-1:-1;;;;;8180:15:1;;;22448:246:0;;;8162:34:1;8212:18;;;8205:34;;;;8255:18;;;8248:34;;;;8298:18;;;8291:34;8362:15;;;8341:19;;;8334:44;22668:15:0;8394:19:1;;;8387:35;8096:19;;22448:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22201:501;;:::o;2832:317::-;2947:6;2922:21;:31;;2914:73;;;;-1:-1:-1;;;2914:73:0;;15073:2:1;2914:73:0;;;15055:21:1;15112:2;15092:18;;;15085:30;15151:31;15131:18;;;15124:59;15200:18;;2914:73:0;14871:353:1;2914:73:0;3001:12;3019:9;-1:-1:-1;;;;;3019:14:0;3041:6;3019:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3000:52;;;3071:7;3063:78;;;;-1:-1:-1;;;3063:78:0;;14294:2:1;3063:78:0;;;14276:21:1;14333:2;14313:18;;;14306:30;14372:34;14352:18;;;14345:62;14443:28;14423:18;;;14416:56;14489:19;;3063:78:0;14092:422:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:748:1:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:238;509:2;506:1;503:9;495:238;;;580:3;567:17;597:31;622:5;597:31;:::i;:::-;641:18;;679:12;;;;711;;;;527:1;520:9;495:238;;;-1:-1:-1;751:5:1;;14:748;-1:-1:-1;;;;;;;14:748:1:o;767:247::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;934:9;921:23;953:31;978:5;953:31;:::i;1019:251::-;1089:6;1142:2;1130:9;1121:7;1117:23;1113:32;1110:52;;;1158:1;1155;1148:12;1110:52;1190:9;1184:16;1209:31;1234:5;1209:31;:::i;1275:388::-;1343:6;1351;1404:2;1392:9;1383:7;1379:23;1375:32;1372:52;;;1420:1;1417;1410:12;1372:52;1459:9;1446:23;1478:31;1503:5;1478:31;:::i;:::-;1528:5;-1:-1:-1;1585:2:1;1570:18;;1557:32;1598:33;1557:32;1598:33;:::i;:::-;1650:7;1640:17;;;1275:388;;;;;:::o;1668:456::-;1745:6;1753;1761;1814:2;1802:9;1793:7;1789:23;1785:32;1782:52;;;1830:1;1827;1820:12;1782:52;1869:9;1856:23;1888:31;1913:5;1888:31;:::i;:::-;1938:5;-1:-1:-1;1995:2:1;1980:18;;1967:32;2008:33;1967:32;2008:33;:::i;:::-;1668:456;;2060:7;;-1:-1:-1;;;2114:2:1;2099:18;;;;2086:32;;1668:456::o;2129:382::-;2194:6;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:30;2408:32;2449:30;:::i;2516:315::-;2584:6;2592;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;2700:9;2687:23;2719:31;2744:5;2719:31;:::i;:::-;2769:5;2821:2;2806:18;;;;2793:32;;-1:-1:-1;;;2516:315:1:o;2836:1149::-;2954:6;2962;3015:2;3003:9;2994:7;2990:23;2986:32;2983:52;;;3031:1;3028;3021:12;2983:52;3071:9;3058:23;3100:18;3141:2;3133:6;3130:14;3127:34;;;3157:1;3154;3147:12;3127:34;3180:61;3233:7;3224:6;3213:9;3209:22;3180:61;:::i;:::-;3170:71;;3260:2;3250:12;;3315:2;3304:9;3300:18;3287:32;3344:2;3334:8;3331:16;3328:36;;;3360:1;3357;3350:12;3328:36;3383:24;;;-1:-1:-1;3438:4:1;3430:13;;3426:27;-1:-1:-1;3416:55:1;;3467:1;3464;3457:12;3416:55;3503:2;3490:16;3526:60;3542:43;3582:2;3542:43;:::i;3526:60::-;3608:3;3632:2;3627:3;3620:15;3660:2;3655:3;3651:12;3644:19;;3691:2;3687;3683:11;3739:7;3734:2;3728;3725:1;3721:10;3717:2;3713:19;3709:28;3706:41;3703:61;;;3760:1;3757;3750:12;3703:61;3782:1;3773:10;;3792:163;3806:2;3803:1;3800:9;3792:163;;;3863:17;;3851:30;;3824:1;3817:9;;;;;3901:12;;;;3933;;3792:163;;;3796:3;3974:5;3964:15;;;;;;;2836:1149;;;;;:::o;3990:477::-;4080:6;4088;4141:2;4129:9;4120:7;4116:23;4112:32;4109:52;;;4157:1;4154;4147:12;4109:52;4197:9;4184:23;4230:18;4222:6;4219:30;4216:50;;;4262:1;4259;4252:12;4216:50;4285:61;4338:7;4329:6;4318:9;4314:22;4285:61;:::i;:::-;4275:71;;;4396:2;4385:9;4381:18;4368:32;4409:28;4431:5;4409:28;:::i;4472:241::-;4528:6;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:28;4677:5;4655:28;:::i;4718:245::-;4785:6;4838:2;4826:9;4817:7;4813:23;4809:32;4806:52;;;4854:1;4851;4844:12;4806:52;4886:9;4880:16;4905:28;4927:5;4905:28;:::i;4968:309::-;5033:6;5041;5094:2;5082:9;5073:7;5069:23;5065:32;5062:52;;;5110:1;5107;5100:12;5062:52;5149:9;5136:23;5168:28;5190:5;5168:28;:::i;5282:180::-;5341:6;5394:2;5382:9;5373:7;5369:23;5365:32;5362:52;;;5410:1;5407;5400:12;5362:52;-1:-1:-1;5433:23:1;;5282:180;-1:-1:-1;5282:180:1:o;5467:315::-;5535:6;5543;5596:2;5584:9;5575:7;5571:23;5567:32;5564:52;;;5612:1;5609;5602:12;5564:52;5648:9;5635:23;5625:33;;5708:2;5697:9;5693:18;5680:32;5721:31;5746:5;5721:31;:::i;5787:309::-;5852:6;5860;5913:2;5901:9;5892:7;5888:23;5884:32;5881:52;;;5929:1;5926;5919:12;5881:52;5965:9;5952:23;5942:33;;6025:2;6014:9;6010:18;5997:32;6038:28;6060:5;6038:28;:::i;6101:248::-;6169:6;6177;6230:2;6218:9;6209:7;6205:23;6201:32;6198:52;;;6246:1;6243;6236:12;6198:52;-1:-1:-1;;6269:23:1;;;6339:2;6324:18;;;6311:32;;-1:-1:-1;6101:248:1:o;6354:306::-;6442:6;6450;6458;6511:2;6499:9;6490:7;6486:23;6482:32;6479:52;;;6527:1;6524;6517:12;6479:52;6556:9;6550:16;6540:26;;6606:2;6595:9;6591:18;6585:25;6575:35;;6650:2;6639:9;6635:18;6629:25;6619:35;;6354:306;;;;;:::o;6665:454::-;6760:6;6768;6776;6784;6792;6845:3;6833:9;6824:7;6820:23;6816:33;6813:53;;;6862:1;6859;6852:12;6813:53;-1:-1:-1;;6885:23:1;;;6955:2;6940:18;;6927:32;;-1:-1:-1;7006:2:1;6991:18;;6978:32;;7057:2;7042:18;;7029:32;;-1:-1:-1;7108:3:1;7093:19;7080:33;;-1:-1:-1;6665:454:1;-1:-1:-1;6665:454:1:o;8848:597::-;8960:4;8989:2;9018;9007:9;9000:21;9050:6;9044:13;9093:6;9088:2;9077:9;9073:18;9066:34;9118:1;9128:140;9142:6;9139:1;9136:13;9128:140;;;9237:14;;;9233:23;;9227:30;9203:17;;;9222:2;9199:26;9192:66;9157:10;;9128:140;;;9286:6;9283:1;9280:13;9277:91;;;9356:1;9351:2;9342:6;9331:9;9327:22;9323:31;9316:42;9277:91;-1:-1:-1;9429:2:1;9408:15;-1:-1:-1;;9404:29:1;9389:45;;;;9436:2;9385:54;;8848:597;-1:-1:-1;;;8848:597:1:o;16344:356::-;16546:2;16528:21;;;16565:18;;;16558:30;16624:34;16619:2;16604:18;;16597:62;16691:2;16676:18;;16344:356::o;18221:347::-;18423:2;18405:21;;;18462:2;18442:18;;;18435:30;18501:25;18496:2;18481:18;;18474:53;18559:2;18544:18;;18221:347::o;20269:980::-;20531:4;20579:3;20568:9;20564:19;20610:6;20599:9;20592:25;20636:2;20674:6;20669:2;20658:9;20654:18;20647:34;20717:3;20712:2;20701:9;20697:18;20690:31;20741:6;20776;20770:13;20807:6;20799;20792:22;20845:3;20834:9;20830:19;20823:26;;20884:2;20876:6;20872:15;20858:29;;20905:1;20915:195;20929:6;20926:1;20923:13;20915:195;;;20994:13;;-1:-1:-1;;;;;20990:39:1;20978:52;;21085:15;;;;21050:12;;;;21026:1;20944:9;20915:195;;;-1:-1:-1;;;;;;;21166:32:1;;;;21161:2;21146:18;;21139:60;-1:-1:-1;;;21230:3:1;21215:19;21208:35;21127:3;20269:980;-1:-1:-1;;;20269:980:1:o;21911:275::-;21982:2;21976:9;22047:2;22028:13;;-1:-1:-1;;22024:27:1;22012:40;;22082:18;22067:34;;22103:22;;;22064:62;22061:88;;;22129:18;;:::i;:::-;22165:2;22158:22;21911:275;;-1:-1:-1;21911:275:1:o;22191:183::-;22251:4;22284:18;22276:6;22273:30;22270:56;;;22306:18;;:::i;:::-;-1:-1:-1;22351:1:1;22347:14;22363:4;22343:25;;22191:183::o;22379:128::-;22419:3;22450:1;22446:6;22443:1;22440:13;22437:39;;;22456:18;;:::i;:::-;-1:-1:-1;22492:9:1;;22379:128::o;22512:217::-;22552:1;22578;22568:132;;22622:10;22617:3;22613:20;22610:1;22603:31;22657:4;22654:1;22647:15;22685:4;22682:1;22675:15;22568:132;-1:-1:-1;22714:9:1;;22512:217::o;22734:422::-;22823:1;22866:5;22823:1;22880:270;22901:7;22891:8;22888:21;22880:270;;;22960:4;22956:1;22952:6;22948:17;22942:4;22939:27;22936:53;;;22969:18;;:::i;:::-;23019:7;23009:8;23005:22;23002:55;;;23039:16;;;;23002:55;23118:22;;;;23078:15;;;;22880:270;;;22884:3;22734:422;;;;;:::o;23161:140::-;23219:5;23248:47;23289:4;23279:8;23275:19;23269:4;23355:5;23385:8;23375:80;;-1:-1:-1;23426:1:1;23440:5;;23375:80;23474:4;23464:76;;-1:-1:-1;23511:1:1;23525:5;;23464:76;23556:4;23574:1;23569:59;;;;23642:1;23637:130;;;;23549:218;;23569:59;23599:1;23590:10;;23613:5;;;23637:130;23674:3;23664:8;23661:17;23658:43;;;23681:18;;:::i;:::-;-1:-1:-1;;23737:1:1;23723:16;;23752:5;;23549:218;;23851:2;23841:8;23838:16;23832:3;23826:4;23823:13;23819:36;23813:2;23803:8;23800:16;23795:2;23789:4;23786:12;23782:35;23779:77;23776:159;;;-1:-1:-1;23888:19:1;;;23920:5;;23776:159;23967:34;23992:8;23986:4;23967:34;:::i;:::-;24037:6;24033:1;24029:6;24025:19;24016:7;24013:32;24010:58;;;24048:18;;:::i;:::-;24086:20;;23306:806;-1:-1:-1;;;23306:806:1:o;24117:168::-;24157:7;24223:1;24219;24215:6;24211:14;24208:1;24205:21;24200:1;24193:9;24186:17;24182:45;24179:71;;;24230:18;;:::i;:::-;-1:-1:-1;24270:9:1;;24117:168::o;24290:125::-;24330:4;24358:1;24355;24352:8;24349:34;;;24363:18;;:::i;:::-;-1:-1:-1;24400:9:1;;24290:125::o;24420:135::-;24459:3;-1:-1:-1;;24480:17:1;;24477:43;;;24500:18;;:::i;:::-;-1:-1:-1;24547:1:1;24536:13;;24420:135::o;24560:127::-;24621:10;24616:3;24612:20;24609:1;24602:31;24652:4;24649:1;24642:15;24676:4;24673:1;24666:15;24692:127;24753:10;24748:3;24744:20;24741:1;24734:31;24784:4;24781:1;24774:15;24808:4;24805:1;24798:15;24824:127;24885:10;24880:3;24876:20;24873:1;24866:31;24916:4;24913:1;24906:15;24940:4;24937:1;24930:15;24956:127;25017:10;25012:3;25008:20;25005:1;24998:31;25048:4;25045:1;25038:15;25072:4;25069:1;25062:15;25088:131;-1:-1:-1;;;;;25163:31:1;;25153:42;;25143:70;;25209:1;25206;25199:12;25224:118;25310:5;25303:13;25296:21;25289:5;25286:32;25276:60;;25332:1;25329;25322:12
Swarm Source
ipfs://79f099e27e5b337ba840db5468ea2e59b11a5c16570a5aed0f40d2fbaa82a8dc