Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 KNO3
Holders
166
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,624,047,704.803966333 KNO3Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Hojutsu
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-31 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Hojutsu is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Hojutsu"; string private constant _symbol = "KNO3"; uint8 private constant _decimals = 9; // RFI mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _taxFee = 2; // 2% Redistribution uint256 private _teamFee = 3; // 2% Teh Research and 1% Teh War (Laika Marketing) uint256 private _previousTaxFee = _taxFee; uint256 private _previousteamFee = _teamFee; uint256 private _numOfTokensToExchangeForTeam = 500000 * 10**9; uint256 private _routermax = 5000000000 * 10**9; // Bot detection mapping(address => bool) private bots; mapping(address => uint256) private cooldown; address payable private _Marketingfund; address payable private _Deployer; address payable private _Buyback; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; uint256 private _maxTxAmount = _tTotal; uint256 public launchBlock; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor(address payable marketfund, address payable developer, address payable buyback) { _Marketingfund = marketfund; _Deployer = developer; _Buyback = buyback; _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_Marketingfund] = true; _isExcludedFromFee[_Buyback] = true; _isExcludedFromFee[_Deployer] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousteamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousteamFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { if(from != address(this)){ require(amount <= _maxTxAmount); } require(!bots[from] && !bots[to] && !bots[msg.sender]); uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _routermax) { contractTokenBalance = _routermax; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && from != uniswapV2Pair && from != address(uniswapV2Router) ) { // We need to swap the current tokens to ETH and send to the team wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function isExcluded(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function isBlackListed(address account) public view returns (bool) { return bots[account]; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _Marketingfund.transfer(amount.div(3).mul(1)); _Buyback.transfer(amount.div(3).mul(2)); } function openTrading() external onlyOwner() { require(!tradingOpen, "trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); swapEnabled = true; cooldownEnabled = false; _maxTxAmount = 20000000000 * 10**9; launchBlock = block.number; tradingOpen = true; IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); } function setSwapEnabled(bool enabled) external { require(_msgSender() == _Deployer); swapEnabled = enabled; } function manualswap() external { require(_msgSender() == _Deployer); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _Deployer); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function setBots(address[] memory bots_) public onlyOwner() { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBot(address notbot) public onlyOwner() { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 taxFee, uint256 TeamFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(TeamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { require(maxTxPercent > 0, "Amount must be greater than 0"); _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2); emit MaxTxAmountUpdated(_maxTxAmount); } function setRouterPercent(uint256 maxRouterPercent) external onlyOwner() { require(maxRouterPercent > 0, "Amount must be greater than 0"); _routermax = _tTotal.mul(maxRouterPercent).div(10**4); } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25'); _teamFee = teamFee; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function setMarketingWallet(address payable account) external onlyOwner() { _Marketingfund = account; } function setDev(address payable account) external onlyOwner() { _Deployer = account; } function setBB(address payable account) external onlyOwner() { _Buyback = account; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"marketfund","type":"address"},{"internalType":"address payable","name":"developer","type":"address"},{"internalType":"address payable","name":"buyback","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":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"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":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setBB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxRouterPercent","type":"uint256"}],"name":"setRouterPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052683635c9adc5dea000006000196200001d9190620006b0565b6000196200002c919062000637565b60065560026008556003600955600854600a55600954600b556601c6bf52634000600c55674563918244f40000600d556000601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff021916908315150217905550683635c9adc5dea00000601555348015620000c757600080fd5b5060405162004669380380620046698339818101604052810190620000ed9190620005b3565b6000620000ff6200056b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460026000620002776200056b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002cb6200057360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004f26200056b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200055a91906200061a565b60405180910390a350505062000760565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620005ad8162000746565b92915050565b600080600060608486031215620005c957600080fd5b6000620005d9868287016200059c565b9350506020620005ec868287016200059c565b9250506040620005ff868287016200059c565b9150509250925092565b6200061481620006a6565b82525050565b600060208201905062000631600083018462000609565b92915050565b60006200064482620006a6565b91506200065183620006a6565b925082821015620006675762000666620006e8565b5b828203905092915050565b60006200067f8262000686565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620006bd82620006a6565b9150620006ca83620006a6565b925082620006dd57620006dc62000717565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620007518162000672565b81146200075d57600080fd5b50565b613ef980620007706000396000f3fe6080604052600436106101bb5760003560e01c806395d89b41116100ec578063d00efb2f1161008a578063d65169c911610064578063d65169c9146105c7578063dd62ed3e146105f0578063e01af92c1461062d578063e47d606014610656576101c2565b8063d00efb2f1461054a578063d477f05f14610575578063d543dbeb1461059e576101c2565b8063c0e6b46e116100c6578063c0e6b46e146104b6578063c3c8cd80146104df578063c9567bf9146104f6578063cba0e9961461050d576101c2565b806395d89b4114610425578063a9059cbb14610450578063b515566a1461048d576101c2565b8063437823ec116101595780636fc3eaec116101335780636fc3eaec1461038f57806370a08231146103a6578063715018a6146103e35780638da5cb5b146103fa576101c2565b8063437823ec146103145780635932ead11461033d5780635d098b3814610366576101c2565b806323b872dd1161019557806323b872dd1461025a578063273123b71461029757806328667162146102c0578063313ce567146102e9576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610693565b6040516101e99190613598565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906130bb565b6106d0565b604051610226919061357d565b60405180910390f35b34801561023b57600080fd5b506102446106ee565b604051610251919061373a565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c919061306c565b6106ff565b60405161028e919061357d565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612fb5565b6107d8565b005b3480156102cc57600080fd5b506102e760048036038101906102e2919061318a565b6108c8565b005b3480156102f557600080fd5b506102fe6109b8565b60405161030b91906137af565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612fb5565b6109c1565b005b34801561034957600080fd5b50610364600480360381019061035f9190613138565b610ab1565b005b34801561037257600080fd5b5061038d60048036038101906103889190613007565b610b63565b005b34801561039b57600080fd5b506103a4610c3c565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190612fb5565b610cae565b6040516103da919061373a565b60405180910390f35b3480156103ef57600080fd5b506103f8610cff565b005b34801561040657600080fd5b5061040f610e52565b60405161041c91906134af565b60405180910390f35b34801561043157600080fd5b5061043a610e7b565b6040516104479190613598565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906130bb565b610eb8565b604051610484919061357d565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906130f7565b610ed6565b005b3480156104c257600080fd5b506104dd60048036038101906104d8919061318a565b611026565b005b3480156104eb57600080fd5b506104f4611137565b005b34801561050257600080fd5b5061050b6111b1565b005b34801561051957600080fd5b50610534600480360381019061052f9190612fb5565b611712565b604051610541919061357d565b60405180910390f35b34801561055657600080fd5b5061055f611768565b60405161056c919061373a565b60405180910390f35b34801561058157600080fd5b5061059c60048036038101906105979190613007565b61176e565b005b3480156105aa57600080fd5b506105c560048036038101906105c0919061318a565b611847565b005b3480156105d357600080fd5b506105ee60048036038101906105e99190613007565b611990565b005b3480156105fc57600080fd5b5061061760048036038101906106129190613030565b611a69565b604051610624919061373a565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190613138565b611af0565b005b34801561066257600080fd5b5061067d60048036038101906106789190612fb5565b611b6e565b60405161068a919061357d565b60405180910390f35b60606040518060400160405280600781526020017f486f6a7574737500000000000000000000000000000000000000000000000000815250905090565b60006106e46106dd611bc4565b8484611bcc565b6001905092915050565b6000683635c9adc5dea00000905090565b600061070c848484611d97565b6107cd84610718611bc4565b6107c885604051806060016040528060288152602001613e9c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077e611bc4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122759092919063ffffffff16565b611bcc565b600190509392505050565b6107e0611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108649061369a565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108d0611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109549061369a565b60405180910390fd5b6001811015801561096f575060198111155b6109ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a59061361a565b60405180910390fd5b8060098190555050565b60006009905090565b6109c9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061369a565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ab9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061369a565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b610b6b611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef9061369a565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7d611bc4565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d57600080fd5b6000479050610cab816122d9565b50565b6000610cf8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fa565b9050919050565b610d07611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b9061369a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4b4e4f3300000000000000000000000000000000000000000000000000000000815250905090565b6000610ecc610ec5611bc4565b8484611d97565b6001905092915050565b610ede611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f629061369a565b60405180910390fd5b60005b8151811015611022576001600e6000848481518110610fb6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101a90613a62565b915050610f6e565b5050565b61102e611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b29061369a565b60405180910390fd5b600081116110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f59061365a565b60405180910390fd5b61112e61271061112083683635c9adc5dea0000061246890919063ffffffff16565b6124e390919063ffffffff16565b600d8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611178611bc4565b73ffffffffffffffffffffffffffffffffffffffff161461119857600080fd5b60006111a330610cae565b90506111ae8161252d565b50565b6111b9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d9061369a565b60405180910390fd5b60148054906101000a900460ff1615611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b9061371a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061132430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611bcc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136a57600080fd5b505afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612fde565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561140457600080fd5b505afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143c9190612fde565b6040518363ffffffff1660e01b81526004016114599291906134ca565b602060405180830381600087803b15801561147357600080fd5b505af1158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab9190612fde565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061153430610cae565b60008061153f610e52565b426040518863ffffffff1660e01b81526004016115619695949392919061351c565b6060604051808303818588803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115b391906131b3565b5050506001601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff0219169083151502179055506801158e460913d000006015819055504360168190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116bc9291906134f3565b602060405180830381600087803b1580156116d657600080fd5b505af11580156116ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170e9190613161565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b611776611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa9061369a565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61184f611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d39061369a565b60405180910390fd5b6000811161191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061365a565b60405180910390fd5b61194e606461194083683635c9adc5dea0000061246890919063ffffffff16565b6124e390919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051611985919061373a565b60405180910390a150565b611998611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061369a565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b31611bc4565b73ffffffffffffffffffffffffffffffffffffffff1614611b5157600080fd5b80601460166101000a81548160ff02191690831515021790555050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c33906136fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3906135fa565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d8a919061373a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906136da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e906135ba565b60405180910390fd5b60008111611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb1906136ba565b60405180910390fd5b611ec2610e52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f305750611f00610e52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121b2573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f7857601554811115611f7757600080fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120725750600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61207b57600080fd5b600061208630610cae565b9050600d54811061209757600d5490505b6000600c548210159050601460159054906101000a900460ff161580156120ca5750601460169054906101000a900460ff165b80156120d35750805b801561212d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121875750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121af576121958261252d565b600047905060008111156121ad576121ac476122d9565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122595750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561226357600090505b61226f84848484612827565b50505050565b60008383111582906122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b49190613598565b60405180910390fd5b50600083856122cc9190613951565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61233c600161232e6003866124e390919063ffffffff16565b61246890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612367573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123cb60026123bd6003866124e390919063ffffffff16565b61246890919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123f6573d6000803e3d6000fd5b5050565b6000600654821115612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906135da565b60405180910390fd5b600061244b612854565b905061246081846124e390919063ffffffff16565b915050919050565b60008083141561247b57600090506124dd565b6000828461248991906138f7565b905082848261249891906138c6565b146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf9061367a565b60405180910390fd5b809150505b92915050565b600061252583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061287f565b905092915050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561258b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156125b95781602001602082028036833780820191505090505b50905030816000815181106125f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561269957600080fd5b505afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190612fde565b8160018151811061270b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061277230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bcc565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127d6959493929190613755565b600060405180830381600087803b1580156127f057600080fd5b505af1158015612804573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80612835576128346128e2565b5b612840848484612925565b8061284e5761284d612af0565b5b50505050565b6000806000612861612b04565b9150915061287881836124e390919063ffffffff16565b9250505090565b600080831182906128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd9190613598565b60405180910390fd5b50600083856128d591906138c6565b9050809150509392505050565b60006008541480156128f657506000600954145b1561290057612923565b600854600a81905550600954600b81905550600060088190555060006009819055505b565b60008060008060008061293787612b66565b95509550955095509550955061299586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bce90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a2a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c1890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7681612c76565b612a808483612d33565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612add919061373a565b60405180910390a3505050505050505050565b600a54600881905550600b54600981905550565b600080600060065490506000683635c9adc5dea000009050612b3a683635c9adc5dea000006006546124e390919063ffffffff16565b821015612b5957600654683635c9adc5dea00000935093505050612b62565b81819350935050505b9091565b6000806000806000806000806000612b838a600854600954612d6d565b9250925092506000612b93612854565b90506000806000612ba68e878787612e03565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612275565b905092915050565b6000808284612c279190613870565b905083811015612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c639061363a565b60405180910390fd5b8091505092915050565b6000612c80612854565b90506000612c97828461246890919063ffffffff16565b9050612ceb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c1890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612d4882600654612bce90919063ffffffff16565b600681905550612d6381600754612c1890919063ffffffff16565b6007819055505050565b600080600080612d996064612d8b888a61246890919063ffffffff16565b6124e390919063ffffffff16565b90506000612dc36064612db5888b61246890919063ffffffff16565b6124e390919063ffffffff16565b90506000612dec82612dde858c612bce90919063ffffffff16565b612bce90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e1c858961246890919063ffffffff16565b90506000612e33868961246890919063ffffffff16565b90506000612e4a878961246890919063ffffffff16565b90506000612e7382612e658587612bce90919063ffffffff16565b612bce90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612e9f612e9a846137ef565b6137ca565b90508083825260208201905082856020860282011115612ebe57600080fd5b60005b85811015612eee5781612ed48882612ef8565b845260208401935060208301925050600181019050612ec1565b5050509392505050565b600081359050612f0781613e3f565b92915050565b600081519050612f1c81613e3f565b92915050565b600081359050612f3181613e56565b92915050565b600082601f830112612f4857600080fd5b8135612f58848260208601612e8c565b91505092915050565b600081359050612f7081613e6d565b92915050565b600081519050612f8581613e6d565b92915050565b600081359050612f9a81613e84565b92915050565b600081519050612faf81613e84565b92915050565b600060208284031215612fc757600080fd5b6000612fd584828501612ef8565b91505092915050565b600060208284031215612ff057600080fd5b6000612ffe84828501612f0d565b91505092915050565b60006020828403121561301957600080fd5b600061302784828501612f22565b91505092915050565b6000806040838503121561304357600080fd5b600061305185828601612ef8565b925050602061306285828601612ef8565b9150509250929050565b60008060006060848603121561308157600080fd5b600061308f86828701612ef8565b93505060206130a086828701612ef8565b92505060406130b186828701612f8b565b9150509250925092565b600080604083850312156130ce57600080fd5b60006130dc85828601612ef8565b92505060206130ed85828601612f8b565b9150509250929050565b60006020828403121561310957600080fd5b600082013567ffffffffffffffff81111561312357600080fd5b61312f84828501612f37565b91505092915050565b60006020828403121561314a57600080fd5b600061315884828501612f61565b91505092915050565b60006020828403121561317357600080fd5b600061318184828501612f76565b91505092915050565b60006020828403121561319c57600080fd5b60006131aa84828501612f8b565b91505092915050565b6000806000606084860312156131c857600080fd5b60006131d686828701612fa0565b93505060206131e786828701612fa0565b92505060406131f886828701612fa0565b9150509250925092565b600061320e838361321a565b60208301905092915050565b61322381613985565b82525050565b61323281613985565b82525050565b60006132438261382b565b61324d818561384e565b93506132588361381b565b8060005b838110156132895781516132708882613202565b975061327b83613841565b92505060018101905061325c565b5085935050505092915050565b61329f816139a9565b82525050565b6132ae816139ec565b82525050565b60006132bf82613836565b6132c9818561385f565b93506132d98185602086016139fe565b6132e281613b38565b840191505092915050565b60006132fa60238361385f565b915061330582613b49565b604082019050919050565b600061331d602a8361385f565b915061332882613b98565b604082019050919050565b600061334060228361385f565b915061334b82613be7565b604082019050919050565b6000613363601b8361385f565b915061336e82613c36565b602082019050919050565b6000613386601b8361385f565b915061339182613c5f565b602082019050919050565b60006133a9601d8361385f565b91506133b482613c88565b602082019050919050565b60006133cc60218361385f565b91506133d782613cb1565b604082019050919050565b60006133ef60208361385f565b91506133fa82613d00565b602082019050919050565b600061341260298361385f565b915061341d82613d29565b604082019050919050565b600061343560258361385f565b915061344082613d78565b604082019050919050565b600061345860248361385f565b915061346382613dc7565b604082019050919050565b600061347b60178361385f565b915061348682613e16565b602082019050919050565b61349a816139d5565b82525050565b6134a9816139df565b82525050565b60006020820190506134c46000830184613229565b92915050565b60006040820190506134df6000830185613229565b6134ec6020830184613229565b9392505050565b60006040820190506135086000830185613229565b6135156020830184613491565b9392505050565b600060c0820190506135316000830189613229565b61353e6020830188613491565b61354b60408301876132a5565b61355860608301866132a5565b6135656080830185613229565b61357260a0830184613491565b979650505050505050565b60006020820190506135926000830184613296565b92915050565b600060208201905081810360008301526135b281846132b4565b905092915050565b600060208201905081810360008301526135d3816132ed565b9050919050565b600060208201905081810360008301526135f381613310565b9050919050565b6000602082019050818103600083015261361381613333565b9050919050565b6000602082019050818103600083015261363381613356565b9050919050565b6000602082019050818103600083015261365381613379565b9050919050565b600060208201905081810360008301526136738161339c565b9050919050565b60006020820190508181036000830152613693816133bf565b9050919050565b600060208201905081810360008301526136b3816133e2565b9050919050565b600060208201905081810360008301526136d381613405565b9050919050565b600060208201905081810360008301526136f381613428565b9050919050565b600060208201905081810360008301526137138161344b565b9050919050565b600060208201905081810360008301526137338161346e565b9050919050565b600060208201905061374f6000830184613491565b92915050565b600060a08201905061376a6000830188613491565b61377760208301876132a5565b81810360408301526137898186613238565b90506137986060830185613229565b6137a56080830184613491565b9695505050505050565b60006020820190506137c460008301846134a0565b92915050565b60006137d46137e5565b90506137e08282613a31565b919050565b6000604051905090565b600067ffffffffffffffff82111561380a57613809613b09565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061387b826139d5565b9150613886836139d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bb576138ba613aab565b5b828201905092915050565b60006138d1826139d5565b91506138dc836139d5565b9250826138ec576138eb613ada565b5b828204905092915050565b6000613902826139d5565b915061390d836139d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394657613945613aab565b5b828202905092915050565b600061395c826139d5565b9150613967836139d5565b92508282101561397a57613979613aab565b5b828203905092915050565b6000613990826139b5565b9050919050565b60006139a2826139b5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139f7826139d5565b9050919050565b60005b83811015613a1c578082015181840152602081019050613a01565b83811115613a2b576000848401525b50505050565b613a3a82613b38565b810181811067ffffffffffffffff82111715613a5957613a58613b09565b5b80604052505050565b6000613a6d826139d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613aa057613a9f613aab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613e4881613985565b8114613e5357600080fd5b50565b613e5f81613997565b8114613e6a57600080fd5b50565b613e76816139a9565b8114613e8157600080fd5b50565b613e8d816139d5565b8114613e9857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220beadf42e514c7049cd9609bc61c1912b49170c05eca854d13f6244ad8fcb3a8664736f6c63430008040033000000000000000000000000d52a1af6de09bd75402ba9208f001be986da712c0000000000000000000000009101a392c130725ada6b393a09cb6160035638ba000000000000000000000000dd02637139a90d315a3ae622e460b4720889b55e
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c806395d89b41116100ec578063d00efb2f1161008a578063d65169c911610064578063d65169c9146105c7578063dd62ed3e146105f0578063e01af92c1461062d578063e47d606014610656576101c2565b8063d00efb2f1461054a578063d477f05f14610575578063d543dbeb1461059e576101c2565b8063c0e6b46e116100c6578063c0e6b46e146104b6578063c3c8cd80146104df578063c9567bf9146104f6578063cba0e9961461050d576101c2565b806395d89b4114610425578063a9059cbb14610450578063b515566a1461048d576101c2565b8063437823ec116101595780636fc3eaec116101335780636fc3eaec1461038f57806370a08231146103a6578063715018a6146103e35780638da5cb5b146103fa576101c2565b8063437823ec146103145780635932ead11461033d5780635d098b3814610366576101c2565b806323b872dd1161019557806323b872dd1461025a578063273123b71461029757806328667162146102c0578063313ce567146102e9576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610693565b6040516101e99190613598565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906130bb565b6106d0565b604051610226919061357d565b60405180910390f35b34801561023b57600080fd5b506102446106ee565b604051610251919061373a565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c919061306c565b6106ff565b60405161028e919061357d565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612fb5565b6107d8565b005b3480156102cc57600080fd5b506102e760048036038101906102e2919061318a565b6108c8565b005b3480156102f557600080fd5b506102fe6109b8565b60405161030b91906137af565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612fb5565b6109c1565b005b34801561034957600080fd5b50610364600480360381019061035f9190613138565b610ab1565b005b34801561037257600080fd5b5061038d60048036038101906103889190613007565b610b63565b005b34801561039b57600080fd5b506103a4610c3c565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190612fb5565b610cae565b6040516103da919061373a565b60405180910390f35b3480156103ef57600080fd5b506103f8610cff565b005b34801561040657600080fd5b5061040f610e52565b60405161041c91906134af565b60405180910390f35b34801561043157600080fd5b5061043a610e7b565b6040516104479190613598565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906130bb565b610eb8565b604051610484919061357d565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906130f7565b610ed6565b005b3480156104c257600080fd5b506104dd60048036038101906104d8919061318a565b611026565b005b3480156104eb57600080fd5b506104f4611137565b005b34801561050257600080fd5b5061050b6111b1565b005b34801561051957600080fd5b50610534600480360381019061052f9190612fb5565b611712565b604051610541919061357d565b60405180910390f35b34801561055657600080fd5b5061055f611768565b60405161056c919061373a565b60405180910390f35b34801561058157600080fd5b5061059c60048036038101906105979190613007565b61176e565b005b3480156105aa57600080fd5b506105c560048036038101906105c0919061318a565b611847565b005b3480156105d357600080fd5b506105ee60048036038101906105e99190613007565b611990565b005b3480156105fc57600080fd5b5061061760048036038101906106129190613030565b611a69565b604051610624919061373a565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190613138565b611af0565b005b34801561066257600080fd5b5061067d60048036038101906106789190612fb5565b611b6e565b60405161068a919061357d565b60405180910390f35b60606040518060400160405280600781526020017f486f6a7574737500000000000000000000000000000000000000000000000000815250905090565b60006106e46106dd611bc4565b8484611bcc565b6001905092915050565b6000683635c9adc5dea00000905090565b600061070c848484611d97565b6107cd84610718611bc4565b6107c885604051806060016040528060288152602001613e9c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077e611bc4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122759092919063ffffffff16565b611bcc565b600190509392505050565b6107e0611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108649061369a565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108d0611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109549061369a565b60405180910390fd5b6001811015801561096f575060198111155b6109ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a59061361a565b60405180910390fd5b8060098190555050565b60006009905090565b6109c9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061369a565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ab9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061369a565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b610b6b611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef9061369a565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7d611bc4565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d57600080fd5b6000479050610cab816122d9565b50565b6000610cf8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fa565b9050919050565b610d07611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b9061369a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4b4e4f3300000000000000000000000000000000000000000000000000000000815250905090565b6000610ecc610ec5611bc4565b8484611d97565b6001905092915050565b610ede611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f629061369a565b60405180910390fd5b60005b8151811015611022576001600e6000848481518110610fb6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101a90613a62565b915050610f6e565b5050565b61102e611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b29061369a565b60405180910390fd5b600081116110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f59061365a565b60405180910390fd5b61112e61271061112083683635c9adc5dea0000061246890919063ffffffff16565b6124e390919063ffffffff16565b600d8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611178611bc4565b73ffffffffffffffffffffffffffffffffffffffff161461119857600080fd5b60006111a330610cae565b90506111ae8161252d565b50565b6111b9611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d9061369a565b60405180910390fd5b60148054906101000a900460ff1615611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b9061371a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061132430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611bcc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136a57600080fd5b505afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612fde565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561140457600080fd5b505afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143c9190612fde565b6040518363ffffffff1660e01b81526004016114599291906134ca565b602060405180830381600087803b15801561147357600080fd5b505af1158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab9190612fde565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061153430610cae565b60008061153f610e52565b426040518863ffffffff1660e01b81526004016115619695949392919061351c565b6060604051808303818588803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115b391906131b3565b5050506001601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff0219169083151502179055506801158e460913d000006015819055504360168190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116bc9291906134f3565b602060405180830381600087803b1580156116d657600080fd5b505af11580156116ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170e9190613161565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b611776611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa9061369a565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61184f611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d39061369a565b60405180910390fd5b6000811161191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061365a565b60405180910390fd5b61194e606461194083683635c9adc5dea0000061246890919063ffffffff16565b6124e390919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051611985919061373a565b60405180910390a150565b611998611bc4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061369a565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b31611bc4565b73ffffffffffffffffffffffffffffffffffffffff1614611b5157600080fd5b80601460166101000a81548160ff02191690831515021790555050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c33906136fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3906135fa565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d8a919061373a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906136da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e906135ba565b60405180910390fd5b60008111611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb1906136ba565b60405180910390fd5b611ec2610e52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f305750611f00610e52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121b2573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f7857601554811115611f7757600080fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120725750600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61207b57600080fd5b600061208630610cae565b9050600d54811061209757600d5490505b6000600c548210159050601460159054906101000a900460ff161580156120ca5750601460169054906101000a900460ff165b80156120d35750805b801561212d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121875750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121af576121958261252d565b600047905060008111156121ad576121ac476122d9565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122595750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561226357600090505b61226f84848484612827565b50505050565b60008383111582906122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b49190613598565b60405180910390fd5b50600083856122cc9190613951565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61233c600161232e6003866124e390919063ffffffff16565b61246890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612367573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123cb60026123bd6003866124e390919063ffffffff16565b61246890919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123f6573d6000803e3d6000fd5b5050565b6000600654821115612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906135da565b60405180910390fd5b600061244b612854565b905061246081846124e390919063ffffffff16565b915050919050565b60008083141561247b57600090506124dd565b6000828461248991906138f7565b905082848261249891906138c6565b146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf9061367a565b60405180910390fd5b809150505b92915050565b600061252583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061287f565b905092915050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561258b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156125b95781602001602082028036833780820191505090505b50905030816000815181106125f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561269957600080fd5b505afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190612fde565b8160018151811061270b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061277230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bcc565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127d6959493929190613755565b600060405180830381600087803b1580156127f057600080fd5b505af1158015612804573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80612835576128346128e2565b5b612840848484612925565b8061284e5761284d612af0565b5b50505050565b6000806000612861612b04565b9150915061287881836124e390919063ffffffff16565b9250505090565b600080831182906128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd9190613598565b60405180910390fd5b50600083856128d591906138c6565b9050809150509392505050565b60006008541480156128f657506000600954145b1561290057612923565b600854600a81905550600954600b81905550600060088190555060006009819055505b565b60008060008060008061293787612b66565b95509550955095509550955061299586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bce90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a2a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c1890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7681612c76565b612a808483612d33565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612add919061373a565b60405180910390a3505050505050505050565b600a54600881905550600b54600981905550565b600080600060065490506000683635c9adc5dea000009050612b3a683635c9adc5dea000006006546124e390919063ffffffff16565b821015612b5957600654683635c9adc5dea00000935093505050612b62565b81819350935050505b9091565b6000806000806000806000806000612b838a600854600954612d6d565b9250925092506000612b93612854565b90506000806000612ba68e878787612e03565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612275565b905092915050565b6000808284612c279190613870565b905083811015612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c639061363a565b60405180910390fd5b8091505092915050565b6000612c80612854565b90506000612c97828461246890919063ffffffff16565b9050612ceb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c1890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612d4882600654612bce90919063ffffffff16565b600681905550612d6381600754612c1890919063ffffffff16565b6007819055505050565b600080600080612d996064612d8b888a61246890919063ffffffff16565b6124e390919063ffffffff16565b90506000612dc36064612db5888b61246890919063ffffffff16565b6124e390919063ffffffff16565b90506000612dec82612dde858c612bce90919063ffffffff16565b612bce90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e1c858961246890919063ffffffff16565b90506000612e33868961246890919063ffffffff16565b90506000612e4a878961246890919063ffffffff16565b90506000612e7382612e658587612bce90919063ffffffff16565b612bce90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612e9f612e9a846137ef565b6137ca565b90508083825260208201905082856020860282011115612ebe57600080fd5b60005b85811015612eee5781612ed48882612ef8565b845260208401935060208301925050600181019050612ec1565b5050509392505050565b600081359050612f0781613e3f565b92915050565b600081519050612f1c81613e3f565b92915050565b600081359050612f3181613e56565b92915050565b600082601f830112612f4857600080fd5b8135612f58848260208601612e8c565b91505092915050565b600081359050612f7081613e6d565b92915050565b600081519050612f8581613e6d565b92915050565b600081359050612f9a81613e84565b92915050565b600081519050612faf81613e84565b92915050565b600060208284031215612fc757600080fd5b6000612fd584828501612ef8565b91505092915050565b600060208284031215612ff057600080fd5b6000612ffe84828501612f0d565b91505092915050565b60006020828403121561301957600080fd5b600061302784828501612f22565b91505092915050565b6000806040838503121561304357600080fd5b600061305185828601612ef8565b925050602061306285828601612ef8565b9150509250929050565b60008060006060848603121561308157600080fd5b600061308f86828701612ef8565b93505060206130a086828701612ef8565b92505060406130b186828701612f8b565b9150509250925092565b600080604083850312156130ce57600080fd5b60006130dc85828601612ef8565b92505060206130ed85828601612f8b565b9150509250929050565b60006020828403121561310957600080fd5b600082013567ffffffffffffffff81111561312357600080fd5b61312f84828501612f37565b91505092915050565b60006020828403121561314a57600080fd5b600061315884828501612f61565b91505092915050565b60006020828403121561317357600080fd5b600061318184828501612f76565b91505092915050565b60006020828403121561319c57600080fd5b60006131aa84828501612f8b565b91505092915050565b6000806000606084860312156131c857600080fd5b60006131d686828701612fa0565b93505060206131e786828701612fa0565b92505060406131f886828701612fa0565b9150509250925092565b600061320e838361321a565b60208301905092915050565b61322381613985565b82525050565b61323281613985565b82525050565b60006132438261382b565b61324d818561384e565b93506132588361381b565b8060005b838110156132895781516132708882613202565b975061327b83613841565b92505060018101905061325c565b5085935050505092915050565b61329f816139a9565b82525050565b6132ae816139ec565b82525050565b60006132bf82613836565b6132c9818561385f565b93506132d98185602086016139fe565b6132e281613b38565b840191505092915050565b60006132fa60238361385f565b915061330582613b49565b604082019050919050565b600061331d602a8361385f565b915061332882613b98565b604082019050919050565b600061334060228361385f565b915061334b82613be7565b604082019050919050565b6000613363601b8361385f565b915061336e82613c36565b602082019050919050565b6000613386601b8361385f565b915061339182613c5f565b602082019050919050565b60006133a9601d8361385f565b91506133b482613c88565b602082019050919050565b60006133cc60218361385f565b91506133d782613cb1565b604082019050919050565b60006133ef60208361385f565b91506133fa82613d00565b602082019050919050565b600061341260298361385f565b915061341d82613d29565b604082019050919050565b600061343560258361385f565b915061344082613d78565b604082019050919050565b600061345860248361385f565b915061346382613dc7565b604082019050919050565b600061347b60178361385f565b915061348682613e16565b602082019050919050565b61349a816139d5565b82525050565b6134a9816139df565b82525050565b60006020820190506134c46000830184613229565b92915050565b60006040820190506134df6000830185613229565b6134ec6020830184613229565b9392505050565b60006040820190506135086000830185613229565b6135156020830184613491565b9392505050565b600060c0820190506135316000830189613229565b61353e6020830188613491565b61354b60408301876132a5565b61355860608301866132a5565b6135656080830185613229565b61357260a0830184613491565b979650505050505050565b60006020820190506135926000830184613296565b92915050565b600060208201905081810360008301526135b281846132b4565b905092915050565b600060208201905081810360008301526135d3816132ed565b9050919050565b600060208201905081810360008301526135f381613310565b9050919050565b6000602082019050818103600083015261361381613333565b9050919050565b6000602082019050818103600083015261363381613356565b9050919050565b6000602082019050818103600083015261365381613379565b9050919050565b600060208201905081810360008301526136738161339c565b9050919050565b60006020820190508181036000830152613693816133bf565b9050919050565b600060208201905081810360008301526136b3816133e2565b9050919050565b600060208201905081810360008301526136d381613405565b9050919050565b600060208201905081810360008301526136f381613428565b9050919050565b600060208201905081810360008301526137138161344b565b9050919050565b600060208201905081810360008301526137338161346e565b9050919050565b600060208201905061374f6000830184613491565b92915050565b600060a08201905061376a6000830188613491565b61377760208301876132a5565b81810360408301526137898186613238565b90506137986060830185613229565b6137a56080830184613491565b9695505050505050565b60006020820190506137c460008301846134a0565b92915050565b60006137d46137e5565b90506137e08282613a31565b919050565b6000604051905090565b600067ffffffffffffffff82111561380a57613809613b09565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061387b826139d5565b9150613886836139d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bb576138ba613aab565b5b828201905092915050565b60006138d1826139d5565b91506138dc836139d5565b9250826138ec576138eb613ada565b5b828204905092915050565b6000613902826139d5565b915061390d836139d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394657613945613aab565b5b828202905092915050565b600061395c826139d5565b9150613967836139d5565b92508282101561397a57613979613aab565b5b828203905092915050565b6000613990826139b5565b9050919050565b60006139a2826139b5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139f7826139d5565b9050919050565b60005b83811015613a1c578082015181840152602081019050613a01565b83811115613a2b576000848401525b50505050565b613a3a82613b38565b810181811067ffffffffffffffff82111715613a5957613a58613b09565b5b80604052505050565b6000613a6d826139d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613aa057613a9f613aab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613e4881613985565b8114613e5357600080fd5b50565b613e5f81613997565b8114613e6a57600080fd5b50565b613e76816139a9565b8114613e8157600080fd5b50565b613e8d816139d5565b8114613e9857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220beadf42e514c7049cd9609bc61c1912b49170c05eca854d13f6244ad8fcb3a8664736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d52a1af6de09bd75402ba9208f001be986da712c0000000000000000000000009101a392c130725ada6b393a09cb6160035638ba000000000000000000000000dd02637139a90d315a3ae622e460b4720889b55e
-----Decoded View---------------
Arg [0] : marketfund (address): 0xD52a1aF6DE09BD75402bA9208f001bE986dA712c
Arg [1] : developer (address): 0x9101a392c130725ADa6B393A09CB6160035638BA
Arg [2] : buyback (address): 0xDd02637139A90D315a3AE622E460B4720889b55e
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d52a1af6de09bd75402ba9208f001be986da712c
Arg [1] : 0000000000000000000000009101a392c130725ada6b393a09cb6160035638ba
Arg [2] : 000000000000000000000000dd02637139a90d315a3ae622e460b4720889b55e
Deployed Bytecode Sourcemap
3852:14121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6142:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7067:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6419:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7268:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13350:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17334:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6328:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17520:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7722:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17641:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12977:188;;;;;;;;;;;;;:::i;:::-;;6522:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2804:148;;;;;;;;;;;;;:::i;:::-;;2590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6233:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6668:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13173:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17104:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12780:189;;;;;;;;;;;;;:::i;:::-;;11602:1016;;;;;;;;;;;;;:::i;:::-;;10535:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5407:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17766:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16843:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17872:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6875:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12630:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10660:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6142:83;6179:13;6212:5;;;;;;;;;;;;;;;;;6205:12;;6142:83;:::o;7067:193::-;7169:4;7191:39;7200:12;:10;:12::i;:::-;7214:7;7223:6;7191:8;:39::i;:::-;7248:4;7241:11;;7067:193;;;;:::o;6419:95::-;6472:7;4407:21;6492:14;;6419:95;:::o;7268:446::-;7400:4;7417:36;7427:6;7435:9;7446:6;7417:9;:36::i;:::-;7464:220;7487:6;7508:12;:10;:12::i;:::-;7535:138;7591:6;7535:138;;;;;;;;;;;;;;;;;:11;:19;7547:6;7535:19;;;;;;;;;;;;;;;:33;7555:12;:10;:12::i;:::-;7535:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7464:8;:220::i;:::-;7702:4;7695:11;;7268:446;;;;;:::o;13350:90::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13427:5:::1;13412:4;:12;13417:6;13412:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13350:90:::0;:::o;17334:176::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17423:1:::1;17412:7;:12;;:29;;;;;17439:2;17428:7;:13;;17412:29;17404:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:7;17484:8;:18;;;;17334:176:::0;:::o;6328:83::-;6369:5;4069:1;6387:16;;6328:83;:::o;17520:111::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17619:4:::1;17589:18;:27;17608:7;17589:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;17520:111:::0;:::o;7722:103::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7812:5:::1;7794:15;;:23;;;;;;;;;;;;;;;;;;7722:103:::0;:::o;17641:117::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17743:7:::1;17726:14;;:24;;;;;;;;;;;;;;;;;;17641:117:::0;:::o;12977:188::-;13043:9;;;;;;;;;;;13027:25;;:12;:10;:12::i;:::-;:25;;;13019:34;;;;;;13064:26;13093:21;13064:50;;13125:32;13138:18;13125:12;:32::i;:::-;12977:188;:::o;6522:138::-;6588:7;6615:37;6635:7;:16;6643:7;6635:16;;;;;;;;;;;;;;;;6615:19;:37::i;:::-;6608:44;;6522:138;;;:::o;2804:148::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2911:1:::1;2874:40;;2895:6;::::0;::::1;;;;;;;;2874:40;;;;;;;;;;;;2942:1;2925:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2804:148::o:0;2590:79::-;2628:7;2655:6;;;;;;;;;;;2648:13;;2590:79;:::o;6233:87::-;6272:13;6305:7;;;;;;;;;;;;;;;;;6298:14;;6233:87;:::o;6668:199::-;6773:4;6795:42;6805:12;:10;:12::i;:::-;6819:9;6830:6;6795:9;:42::i;:::-;6855:4;6848:11;;6668:199;;;;:::o;13173:169::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13249:9:::1;13244:91;13268:5;:12;13264:1;:16;13244:91;;;13319:4;13302;:14;13307:5;13313:1;13307:8;;;;;;;;;;;;;;;;;;;;;;13302:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13282:3;;;;;:::i;:::-;;;;13244:91;;;;13173:169:::0;:::o;17104:218::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17215:1:::1;17196:16;:20;17188:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17274:40;17308:5;17274:29;17286:16;4407:21;17274:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;17261:10;:53;;;;17104:218:::0;:::o;12780:189::-;12846:9;;;;;;;;;;;12830:25;;:12;:10;:12::i;:::-;:25;;;12822:34;;;;;;12867:23;12893:24;12911:4;12893:9;:24::i;:::-;12867:50;;12928:33;12945:15;12928:16;:33::i;:::-;12780:189;:::o;11602:1016::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11666:11:::1;::::0;::::1;;;;;;;;11665:12;11657:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11716:35;11786:42;11716:113;;11858:16;11840:15;;:34;;;;;;;;;;;;;;;;;;11885:58;11902:4;11917:15;;;;;;;;;;;4407:21;11885:8;:58::i;:::-;11988:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11970:70;;;12049:4;12056:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11970:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11954:13;;:126;;;;;;;;;;;;;;;;;;12091:15;;;;;;;;;;;:31;;;12130:21;12175:4;12195:24;12213:4;12195:9;:24::i;:::-;12234:1;12250::::0;12266:7:::1;:5;:7::i;:::-;12288:15;12091:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12339:4;12325:11;;:18;;;;;;;;;;;;;;;;;;12372:5;12354:15;;:23;;;;;;;;;;;;;;;;;;12403:19;12388:12;:34;;;;12447:12;12433:11;:26;;;;12484:4;12470:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12506:13;;;;;;;;;;;12499:29;;;12551:15;;;;;;;;;;;12582:17;12499:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2787:1;11602:1016::o:0;10535:117::-;10593:4;10617:18;:27;10636:7;10617:27;;;;;;;;;;;;;;;;;;;;;;;;;10610:34;;10535:117;;;:::o;5407:26::-;;;;:::o;17766:100::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17851:7:::1;17839:9;;:19;;;;;;;;;;;;;;;;;;17766:100:::0;:::o;16843:255::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16945:1:::1;16930:12;:16;16922:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17006:36;17036:5;17006:25;17018:12;4407:21;17006:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;16991:12;:51;;;;17058:32;17077:12;;17058:32;;;;;;:::i;:::-;;;;;;;;16843:255:::0;:::o;17872:98::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17955:7:::1;17944:8;;:18;;;;;;;;;;;;;;;;;;17872:98:::0;:::o;6875:184::-;6992:7;7024:11;:18;7036:5;7024:18;;;;;;;;;;;;;;;:27;7043:7;7024:27;;;;;;;;;;;;;;;;7017:34;;6875:184;;;;:::o;12630:132::-;12712:9;;;;;;;;;;;12696:25;;:12;:10;:12::i;:::-;:25;;;12688:34;;;;;;12747:7;12733:11;;:21;;;;;;;;;;;;;;;;;;12630:132;:::o;10660:106::-;10721:4;10745;:13;10750:7;10745:13;;;;;;;;;;;;;;;;;;;;;;;;;10738:20;;10660:106;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;8513:369::-;8657:1;8640:19;;:5;:19;;;;8632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:1;8719:21;;:7;:21;;;;8711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8820:6;8790:11;:18;8802:5;8790:18;;;;;;;;;;;;;;;:27;8809:7;8790:27;;;;;;;;;;;;;;;:36;;;;8858:7;8842:32;;8851:5;8842:32;;;8867:6;8842:32;;;;;;:::i;:::-;;;;;;;;8513:369;;;:::o;8890:1637::-;9028:1;9012:18;;:4;:18;;;;9004:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9105:1;9091:16;;:2;:16;;;;9083:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9175:1;9166:6;:10;9158:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9255:7;:5;:7::i;:::-;9247:15;;:4;:15;;;;:32;;;;;9272:7;:5;:7::i;:::-;9266:13;;:2;:13;;;;9247:32;9243:1083;;;9317:4;9301:21;;:4;:21;;;9298:91;;9360:12;;9350:6;:22;;9342:31;;;;;;9298:91;9412:4;:10;9417:4;9412:10;;;;;;;;;;;;;;;;;;;;;;;;;9411:11;:24;;;;;9427:4;:8;9432:2;9427:8;;;;;;;;;;;;;;;;;;;;;;;;;9426:9;9411:24;:45;;;;;9440:4;:16;9445:10;9440:16;;;;;;;;;;;;;;;;;;;;;;;;;9439:17;9411:45;9403:54;;;;;;9503:28;9534:24;9552:4;9534:9;:24::i;:::-;9503:55;;9614:10;;9590:20;:34;9587:120;;9681:10;;9658:33;;9587:120;9721:24;9772:29;;9748:20;:53;;9721:80;;9821:6;;;;;;;;;;;9820:7;:22;;;;;9831:11;;;;;;;;;;;9820:22;:45;;;;;9846:19;9820:45;:70;;;;;9877:13;;;;;;;;;;;9869:21;;:4;:21;;;;9820:70;:106;;;;;9910:15;;;;;;;;;;;9894:32;;:4;:32;;;;9820:106;9816:499;;;10051:38;10068:20;10051:16;:38::i;:::-;10126:26;10155:21;10126:50;;10219:1;10198:18;:22;10195:105;;;10245:35;10258:21;10245:12;:35::i;:::-;10195:105;9816:499;;9243:1083;;;10336:12;10351:4;10336:19;;10372:18;:24;10391:4;10372:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10400:18;:22;10419:2;10400:22;;;;;;;;;;;;;;;;;;;;;;;;;10372:50;10368:98;;;10449:5;10439:15;;10368:98;10478:41;10493:4;10499:2;10503:6;10511:7;10478:14;:41::i;:::-;8890:1637;;;;:::o;1355:224::-;1475:7;1508:1;1503;:6;;1511:12;1495:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1535:9;1551:1;1547;:5;;;;:::i;:::-;1535:17;;1570:1;1563:8;;;1355:224;;;;;:::o;11434:160::-;11491:14;;;;;;;;;;;:23;;:45;11515:20;11533:1;11515:13;11526:1;11515:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;11491:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11547:8;;;;;;;;;;;:17;;:39;11565:20;11583:1;11565:13;11576:1;11565:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;11547:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11434:160;:::o;7833:323::-;7928:7;7986;;7975;:18;;7953:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8074:19;8096:10;:8;:10::i;:::-;8074:32;;8124:24;8136:11;8124:7;:11;;:24;;;;:::i;:::-;8117:31;;;7833:323;;;:::o;1587:246::-;1645:7;1674:1;1669;:6;1665:47;;;1699:1;1692:8;;;;1665:47;1722:9;1738:1;1734;:5;;;;:::i;:::-;1722:17;;1767:1;1762;1758;:5;;;;:::i;:::-;:10;1750:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1824:1;1817:8;;;1587:246;;;;;:::o;1841:132::-;1899:7;1926:39;1930:1;1933;1926:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1919:46;;1841:132;;;;:::o;10774:652::-;5536:4;5527:6;;:13;;;;;;;;;;;;;;;;;;10919:21:::1;10957:1;10943:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10919:40;;10992:4;10974;10979:1;10974:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11022:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11012:4;11017:1;11012:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11061:62;11078:4;11093:15;;;;;;;;;;;11111:11;11061:8;:62::i;:::-;11170:15;;;;;;;;;;;:66;;;11255:11;11285:1;11333:4;11364;11388:15;11170:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5551:1;5572:5:::0;5563:6;;:14;;;;;;;;;;;;;;;;;;10774:652;:::o;13448:282::-;13604:7;13599:28;;13613:14;:12;:14::i;:::-;13599:28;13638:44;13656:6;13664:9;13675:6;13638:17;:44::i;:::-;13698:7;13693:29;;13707:15;:13;:15::i;:::-;13693:29;13448:282;;;;:::o;16406:164::-;16448:7;16469:15;16486;16505:19;:17;:19::i;:::-;16468:56;;;;16542:20;16554:7;16542;:11;;:20;;;;:::i;:::-;16535:27;;;;16406:164;:::o;1981:223::-;2101:7;2133:1;2129;:5;2136:12;2121:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2160:9;2176:1;2172;:5;;;;:::i;:::-;2160:17;;2195:1;2188:8;;;1981:223;;;;;:::o;8164:214::-;8221:1;8210:7;;:12;:29;;;;;8238:1;8226:8;;:13;8210:29;8207:41;;;8241:7;;8207:41;8278:7;;8260:15;:25;;;;8315:8;;8296:16;:27;;;;8346:1;8336:7;:11;;;;8369:1;8358:8;:12;;;;8164:214;:::o;13738:610::-;13885:15;13915:23;13953:12;13980:23;14018:12;14045:13;14072:19;14083:7;14072:10;:19::i;:::-;13870:221;;;;;;;;;;;;14120:28;14140:7;14120;:15;14128:6;14120:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14102:7;:15;14110:6;14102:15;;;;;;;;;;;;;;;:46;;;;14180:39;14203:15;14180:7;:18;14188:9;14180:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14159:7;:18;14167:9;14159:18;;;;;;;;;;;;;;;:60;;;;14230:16;14240:5;14230:9;:16::i;:::-;14257:23;14269:4;14275;14257:11;:23::i;:::-;14313:9;14296:44;;14305:6;14296:44;;;14324:15;14296:44;;;;;;:::i;:::-;;;;;;;;13738:610;;;;;;;;;:::o;8386:115::-;8440:15;;8430:7;:25;;;;8477:16;;8466:8;:27;;;;8386:115::o;16578:257::-;16629:7;16638;16658:15;16676:7;;16658:25;;16694:15;4407:21;16694:25;;16744:20;4407:21;16744:7;;:11;;:20;;;;:::i;:::-;16734:7;:30;16730:61;;;16774:7;;4407:21;16766:25;;;;;;;;16730:61;16810:7;16819;16802:25;;;;;;16578:257;;;:::o;14767:614::-;14867:7;14889;14911;14933;14955;14977;15013:23;15038:12;15052:13;15082:39;15094:7;15103;;15112:8;;15082:11;:39::i;:::-;15012:109;;;;;;15132:19;15154:10;:8;:10::i;:::-;15132:32;;15176:15;15193:23;15218:12;15247:46;15259:7;15268:4;15274:5;15281:11;15247;:46::i;:::-;15175:118;;;;;;15312:7;15321:15;15338:4;15344:15;15361:4;15367:5;15304:69;;;;;;;;;;;;;;;;;;;14767:614;;;;;;;:::o;1211:136::-;1269:7;1296:43;1300:1;1303;1296:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1289:50;;1211:136;;;;:::o;1024:179::-;1082:7;1102:9;1118:1;1114;:5;;;;:::i;:::-;1102:17;;1143:1;1138;:6;;1130:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:1;1187:8;;;1024:179;;;;:::o;14356:211::-;14409:19;14431:10;:8;:10::i;:::-;14409:32;;14452:13;14468:22;14478:11;14468:5;:9;;:22;;;;:::i;:::-;14452:38;;14526:33;14553:5;14526:7;:22;14542:4;14526:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14501:7;:22;14517:4;14501:22;;;;;;;;;;;;;;;:58;;;;14356:211;;;:::o;14575:147::-;14653:17;14665:4;14653:7;;:11;;:17;;;;:::i;:::-;14643:7;:27;;;;14694:20;14709:4;14694:10;;:14;;:20;;;;:::i;:::-;14681:10;:33;;;;14575:147;;:::o;15389:467::-;15557:7;15579;15601;15636:12;15651:28;15675:3;15651:19;15663:6;15651:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15636:43;;15690:13;15706:29;15731:3;15706:20;15718:7;15706;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15690:45;;15746:23;15772:28;15794:5;15772:17;15784:4;15772:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15746:54;;15819:15;15836:4;15842:5;15811:37;;;;;;;;;15389:467;;;;;;;:::o;15864:534::-;16058:7;16080;16102;16137:15;16155:24;16167:11;16155:7;:11;;:24;;;;:::i;:::-;16137:42;;16190:12;16205:21;16214:11;16205:4;:8;;:21;;;;:::i;:::-;16190:36;;16237:13;16253:22;16263:11;16253:5;:9;;:22;;;;:::i;:::-;16237:38;;16286:23;16312:28;16334:5;16312:17;16324:4;16312:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16286:54;;16359:7;16368:15;16385:4;16351:39;;;;;;;;;;15864:534;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;979:155::-;1033:5;1071:6;1058:20;1049:29;;1087:41;1122:5;1087:41;:::i;:::-;1039:95;;;;:::o;1157:303::-;1228:5;1277:3;1270:4;1262:6;1258:17;1254:27;1244:2;;1295:1;1292;1285:12;1244:2;1335:6;1322:20;1360:94;1450:3;1442:6;1435:4;1427:6;1423:17;1360:94;:::i;:::-;1351:103;;1234:226;;;;;:::o;1466:133::-;1509:5;1547:6;1534:20;1525:29;;1563:30;1587:5;1563:30;:::i;:::-;1515:84;;;;:::o;1605:137::-;1659:5;1690:6;1684:13;1675:22;;1706:30;1730:5;1706:30;:::i;:::-;1665:77;;;;:::o;1748:139::-;1794:5;1832:6;1819:20;1810:29;;1848:33;1875:5;1848:33;:::i;:::-;1800:87;;;;:::o;1893:143::-;1950:5;1981:6;1975:13;1966:22;;1997:33;2024:5;1997:33;:::i;:::-;1956:80;;;;:::o;2042:262::-;2101:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:2;;;2166:1;2163;2156:12;2118:2;2209:1;2234:53;2279:7;2270:6;2259:9;2255:22;2234:53;:::i;:::-;2224:63;;2180:117;2108:196;;;;:::o;2310:284::-;2380:6;2429:2;2417:9;2408:7;2404:23;2400:32;2397:2;;;2445:1;2442;2435:12;2397:2;2488:1;2513:64;2569:7;2560:6;2549:9;2545:22;2513:64;:::i;:::-;2503:74;;2459:128;2387:207;;;;:::o;2600:278::-;2667:6;2716:2;2704:9;2695:7;2691:23;2687:32;2684:2;;;2732:1;2729;2722:12;2684:2;2775:1;2800:61;2853:7;2844:6;2833:9;2829:22;2800:61;:::i;:::-;2790:71;;2746:125;2674:204;;;;:::o;2884:407::-;2952:6;2960;3009:2;2997:9;2988:7;2984:23;2980:32;2977:2;;;3025:1;3022;3015:12;2977:2;3068:1;3093:53;3138:7;3129:6;3118:9;3114:22;3093:53;:::i;:::-;3083:63;;3039:117;3195:2;3221:53;3266:7;3257:6;3246:9;3242:22;3221:53;:::i;:::-;3211:63;;3166:118;2967:324;;;;;:::o;3297:552::-;3374:6;3382;3390;3439:2;3427:9;3418:7;3414:23;3410:32;3407:2;;;3455:1;3452;3445:12;3407:2;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3625:2;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3596:118;3753:2;3779:53;3824:7;3815:6;3804:9;3800:22;3779:53;:::i;:::-;3769:63;;3724:118;3397:452;;;;;:::o;3855:407::-;3923:6;3931;3980:2;3968:9;3959:7;3955:23;3951:32;3948:2;;;3996:1;3993;3986:12;3948:2;4039:1;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4010:117;4166:2;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4137:118;3938:324;;;;;:::o;4268:405::-;4352:6;4401:2;4389:9;4380:7;4376:23;4372:32;4369:2;;;4417:1;4414;4407:12;4369:2;4488:1;4477:9;4473:17;4460:31;4518:18;4510:6;4507:30;4504:2;;;4550:1;4547;4540:12;4504:2;4578:78;4648:7;4639:6;4628:9;4624:22;4578:78;:::i;:::-;4568:88;;4431:235;4359:314;;;;:::o;4679:256::-;4735:6;4784:2;4772:9;4763:7;4759:23;4755:32;4752:2;;;4800:1;4797;4790:12;4752:2;4843:1;4868:50;4910:7;4901:6;4890:9;4886:22;4868:50;:::i;:::-;4858:60;;4814:114;4742:193;;;;:::o;4941:278::-;5008:6;5057:2;5045:9;5036:7;5032:23;5028:32;5025:2;;;5073:1;5070;5063:12;5025:2;5116:1;5141:61;5194:7;5185:6;5174:9;5170:22;5141:61;:::i;:::-;5131:71;;5087:125;5015:204;;;;:::o;5225:262::-;5284:6;5333:2;5321:9;5312:7;5308:23;5304:32;5301:2;;;5349:1;5346;5339:12;5301:2;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5291:196;;;;:::o;5493:596::-;5581:6;5589;5597;5646:2;5634:9;5625:7;5621:23;5617:32;5614:2;;;5662:1;5659;5652:12;5614:2;5705:1;5730:64;5786:7;5777:6;5766:9;5762:22;5730:64;:::i;:::-;5720:74;;5676:128;5843:2;5869:64;5925:7;5916:6;5905:9;5901:22;5869:64;:::i;:::-;5859:74;;5814:129;5982:2;6008:64;6064:7;6055:6;6044:9;6040:22;6008:64;:::i;:::-;5998:74;;5953:129;5604:485;;;;;:::o;6095:179::-;6164:10;6185:46;6227:3;6219:6;6185:46;:::i;:::-;6263:4;6258:3;6254:14;6240:28;;6175:99;;;;:::o;6280:108::-;6357:24;6375:5;6357:24;:::i;:::-;6352:3;6345:37;6335:53;;:::o;6394:118::-;6481:24;6499:5;6481:24;:::i;:::-;6476:3;6469:37;6459:53;;:::o;6548:732::-;6667:3;6696:54;6744:5;6696:54;:::i;:::-;6766:86;6845:6;6840:3;6766:86;:::i;:::-;6759:93;;6876:56;6926:5;6876:56;:::i;:::-;6955:7;6986:1;6971:284;6996:6;6993:1;6990:13;6971:284;;;7072:6;7066:13;7099:63;7158:3;7143:13;7099:63;:::i;:::-;7092:70;;7185:60;7238:6;7185:60;:::i;:::-;7175:70;;7031:224;7018:1;7015;7011:9;7006:14;;6971:284;;;6975:14;7271:3;7264:10;;6672:608;;;;;;;:::o;7286:109::-;7367:21;7382:5;7367:21;:::i;:::-;7362:3;7355:34;7345:50;;:::o;7401:147::-;7496:45;7535:5;7496:45;:::i;:::-;7491:3;7484:58;7474:74;;:::o;7554:364::-;7642:3;7670:39;7703:5;7670:39;:::i;:::-;7725:71;7789:6;7784:3;7725:71;:::i;:::-;7718:78;;7805:52;7850:6;7845:3;7838:4;7831:5;7827:16;7805:52;:::i;:::-;7882:29;7904:6;7882:29;:::i;:::-;7877:3;7873:39;7866:46;;7646:272;;;;;:::o;7924:366::-;8066:3;8087:67;8151:2;8146:3;8087:67;:::i;:::-;8080:74;;8163:93;8252:3;8163:93;:::i;:::-;8281:2;8276:3;8272:12;8265:19;;8070:220;;;:::o;8296:366::-;8438:3;8459:67;8523:2;8518:3;8459:67;:::i;:::-;8452:74;;8535:93;8624:3;8535:93;:::i;:::-;8653:2;8648:3;8644:12;8637:19;;8442:220;;;:::o;8668:366::-;8810:3;8831:67;8895:2;8890:3;8831:67;:::i;:::-;8824:74;;8907:93;8996:3;8907:93;:::i;:::-;9025:2;9020:3;9016:12;9009:19;;8814:220;;;:::o;9040:366::-;9182:3;9203:67;9267:2;9262:3;9203:67;:::i;:::-;9196:74;;9279:93;9368:3;9279:93;:::i;:::-;9397:2;9392:3;9388:12;9381:19;;9186:220;;;:::o;9412:366::-;9554:3;9575:67;9639:2;9634:3;9575:67;:::i;:::-;9568:74;;9651:93;9740:3;9651:93;:::i;:::-;9769:2;9764:3;9760:12;9753:19;;9558:220;;;:::o;9784:366::-;9926:3;9947:67;10011:2;10006:3;9947:67;:::i;:::-;9940:74;;10023:93;10112:3;10023:93;:::i;:::-;10141:2;10136:3;10132:12;10125:19;;9930:220;;;:::o;10156:366::-;10298:3;10319:67;10383:2;10378:3;10319:67;:::i;:::-;10312:74;;10395:93;10484:3;10395:93;:::i;:::-;10513:2;10508:3;10504:12;10497:19;;10302:220;;;:::o;10528:366::-;10670:3;10691:67;10755:2;10750:3;10691:67;:::i;:::-;10684:74;;10767:93;10856:3;10767:93;:::i;:::-;10885:2;10880:3;10876:12;10869:19;;10674:220;;;:::o;10900:366::-;11042:3;11063:67;11127:2;11122:3;11063:67;:::i;:::-;11056:74;;11139:93;11228:3;11139:93;:::i;:::-;11257:2;11252:3;11248:12;11241:19;;11046:220;;;:::o;11272:366::-;11414:3;11435:67;11499:2;11494:3;11435:67;:::i;:::-;11428:74;;11511:93;11600:3;11511:93;:::i;:::-;11629:2;11624:3;11620:12;11613:19;;11418:220;;;:::o;11644:366::-;11786:3;11807:67;11871:2;11866:3;11807:67;:::i;:::-;11800:74;;11883:93;11972:3;11883:93;:::i;:::-;12001:2;11996:3;11992:12;11985:19;;11790:220;;;:::o;12016:366::-;12158:3;12179:67;12243:2;12238:3;12179:67;:::i;:::-;12172:74;;12255:93;12344:3;12255:93;:::i;:::-;12373:2;12368:3;12364:12;12357:19;;12162:220;;;:::o;12388:118::-;12475:24;12493:5;12475:24;:::i;:::-;12470:3;12463:37;12453:53;;:::o;12512:112::-;12595:22;12611:5;12595:22;:::i;:::-;12590:3;12583:35;12573:51;;:::o;12630:222::-;12723:4;12761:2;12750:9;12746:18;12738:26;;12774:71;12842:1;12831:9;12827:17;12818:6;12774:71;:::i;:::-;12728:124;;;;:::o;12858:332::-;12979:4;13017:2;13006:9;13002:18;12994:26;;13030:71;13098:1;13087:9;13083:17;13074:6;13030:71;:::i;:::-;13111:72;13179:2;13168:9;13164:18;13155:6;13111:72;:::i;:::-;12984:206;;;;;:::o;13196:332::-;13317:4;13355:2;13344:9;13340:18;13332:26;;13368:71;13436:1;13425:9;13421:17;13412:6;13368:71;:::i;:::-;13449:72;13517:2;13506:9;13502:18;13493:6;13449:72;:::i;:::-;13322:206;;;;;:::o;13534:807::-;13783:4;13821:3;13810:9;13806:19;13798:27;;13835:71;13903:1;13892:9;13888:17;13879:6;13835:71;:::i;:::-;13916:72;13984:2;13973:9;13969:18;13960:6;13916:72;:::i;:::-;13998:80;14074:2;14063:9;14059:18;14050:6;13998:80;:::i;:::-;14088;14164:2;14153:9;14149:18;14140:6;14088:80;:::i;:::-;14178:73;14246:3;14235:9;14231:19;14222:6;14178:73;:::i;:::-;14261;14329:3;14318:9;14314:19;14305:6;14261:73;:::i;:::-;13788:553;;;;;;;;;:::o;14347:210::-;14434:4;14472:2;14461:9;14457:18;14449:26;;14485:65;14547:1;14536:9;14532:17;14523:6;14485:65;:::i;:::-;14439:118;;;;:::o;14563:313::-;14676:4;14714:2;14703:9;14699:18;14691:26;;14763:9;14757:4;14753:20;14749:1;14738:9;14734:17;14727:47;14791:78;14864:4;14855:6;14791:78;:::i;:::-;14783:86;;14681:195;;;;:::o;14882:419::-;15048:4;15086:2;15075:9;15071:18;15063:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15163:131;15289:4;15163:131;:::i;:::-;15155:139;;15053:248;;;:::o;15307:419::-;15473:4;15511:2;15500:9;15496:18;15488:26;;15560:9;15554:4;15550:20;15546:1;15535:9;15531:17;15524:47;15588:131;15714:4;15588:131;:::i;:::-;15580:139;;15478:248;;;:::o;15732:419::-;15898:4;15936:2;15925:9;15921:18;15913:26;;15985:9;15979:4;15975:20;15971:1;15960:9;15956:17;15949:47;16013:131;16139:4;16013:131;:::i;:::-;16005:139;;15903:248;;;:::o;16157:419::-;16323:4;16361:2;16350:9;16346:18;16338:26;;16410:9;16404:4;16400:20;16396:1;16385:9;16381:17;16374:47;16438:131;16564:4;16438:131;:::i;:::-;16430:139;;16328:248;;;:::o;16582:419::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16835:9;16829:4;16825:20;16821:1;16810:9;16806:17;16799:47;16863:131;16989:4;16863:131;:::i;:::-;16855:139;;16753:248;;;:::o;17007:419::-;17173:4;17211:2;17200:9;17196:18;17188:26;;17260:9;17254:4;17250:20;17246:1;17235:9;17231:17;17224:47;17288:131;17414:4;17288:131;:::i;:::-;17280:139;;17178:248;;;:::o;17432:419::-;17598:4;17636:2;17625:9;17621:18;17613:26;;17685:9;17679:4;17675:20;17671:1;17660:9;17656:17;17649:47;17713:131;17839:4;17713:131;:::i;:::-;17705:139;;17603:248;;;:::o;17857:419::-;18023:4;18061:2;18050:9;18046:18;18038:26;;18110:9;18104:4;18100:20;18096:1;18085:9;18081:17;18074:47;18138:131;18264:4;18138:131;:::i;:::-;18130:139;;18028:248;;;:::o;18282:419::-;18448:4;18486:2;18475:9;18471:18;18463:26;;18535:9;18529:4;18525:20;18521:1;18510:9;18506:17;18499:47;18563:131;18689:4;18563:131;:::i;:::-;18555:139;;18453:248;;;:::o;18707:419::-;18873:4;18911:2;18900:9;18896:18;18888:26;;18960:9;18954:4;18950:20;18946:1;18935:9;18931:17;18924:47;18988:131;19114:4;18988:131;:::i;:::-;18980:139;;18878:248;;;:::o;19132:419::-;19298:4;19336:2;19325:9;19321:18;19313:26;;19385:9;19379:4;19375:20;19371:1;19360:9;19356:17;19349:47;19413:131;19539:4;19413:131;:::i;:::-;19405:139;;19303:248;;;:::o;19557:419::-;19723:4;19761:2;19750:9;19746:18;19738:26;;19810:9;19804:4;19800:20;19796:1;19785:9;19781:17;19774:47;19838:131;19964:4;19838:131;:::i;:::-;19830:139;;19728:248;;;:::o;19982:222::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20126:71;20194:1;20183:9;20179:17;20170:6;20126:71;:::i;:::-;20080:124;;;;:::o;20210:831::-;20473:4;20511:3;20500:9;20496:19;20488:27;;20525:71;20593:1;20582:9;20578:17;20569:6;20525:71;:::i;:::-;20606:80;20682:2;20671:9;20667:18;20658:6;20606:80;:::i;:::-;20733:9;20727:4;20723:20;20718:2;20707:9;20703:18;20696:48;20761:108;20864:4;20855:6;20761:108;:::i;:::-;20753:116;;20879:72;20947:2;20936:9;20932:18;20923:6;20879:72;:::i;:::-;20961:73;21029:3;21018:9;21014:19;21005:6;20961:73;:::i;:::-;20478:563;;;;;;;;:::o;21047:214::-;21136:4;21174:2;21163:9;21159:18;21151:26;;21187:67;21251:1;21240:9;21236:17;21227:6;21187:67;:::i;:::-;21141:120;;;;:::o;21267:129::-;21301:6;21328:20;;:::i;:::-;21318:30;;21357:33;21385:4;21377:6;21357:33;:::i;:::-;21308:88;;;:::o;21402:75::-;21435:6;21468:2;21462:9;21452:19;;21442:35;:::o;21483:311::-;21560:4;21650:18;21642:6;21639:30;21636:2;;;21672:18;;:::i;:::-;21636:2;21722:4;21714:6;21710:17;21702:25;;21782:4;21776;21772:15;21764:23;;21565:229;;;:::o;21800:132::-;21867:4;21890:3;21882:11;;21920:4;21915:3;21911:14;21903:22;;21872:60;;;:::o;21938:114::-;22005:6;22039:5;22033:12;22023:22;;22012:40;;;:::o;22058:99::-;22110:6;22144:5;22138:12;22128:22;;22117:40;;;:::o;22163:113::-;22233:4;22265;22260:3;22256:14;22248:22;;22238:38;;;:::o;22282:184::-;22381:11;22415:6;22410:3;22403:19;22455:4;22450:3;22446:14;22431:29;;22393:73;;;;:::o;22472:169::-;22556:11;22590:6;22585:3;22578:19;22630:4;22625:3;22621:14;22606:29;;22568:73;;;;:::o;22647:305::-;22687:3;22706:20;22724:1;22706:20;:::i;:::-;22701:25;;22740:20;22758:1;22740:20;:::i;:::-;22735:25;;22894:1;22826:66;22822:74;22819:1;22816:81;22813:2;;;22900:18;;:::i;:::-;22813:2;22944:1;22941;22937:9;22930:16;;22691:261;;;;:::o;22958:185::-;22998:1;23015:20;23033:1;23015:20;:::i;:::-;23010:25;;23049:20;23067:1;23049:20;:::i;:::-;23044:25;;23088:1;23078:2;;23093:18;;:::i;:::-;23078:2;23135:1;23132;23128:9;23123:14;;23000:143;;;;:::o;23149:348::-;23189:7;23212:20;23230:1;23212:20;:::i;:::-;23207:25;;23246:20;23264:1;23246:20;:::i;:::-;23241:25;;23434:1;23366:66;23362:74;23359:1;23356:81;23351:1;23344:9;23337:17;23333:105;23330:2;;;23441:18;;:::i;:::-;23330:2;23489:1;23486;23482:9;23471:20;;23197:300;;;;:::o;23503:191::-;23543:4;23563:20;23581:1;23563:20;:::i;:::-;23558:25;;23597:20;23615:1;23597:20;:::i;:::-;23592:25;;23636:1;23633;23630:8;23627:2;;;23641:18;;:::i;:::-;23627:2;23686:1;23683;23679:9;23671:17;;23548:146;;;;:::o;23700:96::-;23737:7;23766:24;23784:5;23766:24;:::i;:::-;23755:35;;23745:51;;;:::o;23802:104::-;23847:7;23876:24;23894:5;23876:24;:::i;:::-;23865:35;;23855:51;;;:::o;23912:90::-;23946:7;23989:5;23982:13;23975:21;23964:32;;23954:48;;;:::o;24008:126::-;24045:7;24085:42;24078:5;24074:54;24063:65;;24053:81;;;:::o;24140:77::-;24177:7;24206:5;24195:16;;24185:32;;;:::o;24223:86::-;24258:7;24298:4;24291:5;24287:16;24276:27;;24266:43;;;:::o;24315:121::-;24373:9;24406:24;24424:5;24406:24;:::i;:::-;24393:37;;24383:53;;;:::o;24442:307::-;24510:1;24520:113;24534:6;24531:1;24528:13;24520:113;;;24619:1;24614:3;24610:11;24604:18;24600:1;24595:3;24591:11;24584:39;24556:2;24553:1;24549:10;24544:15;;24520:113;;;24651:6;24648:1;24645:13;24642:2;;;24731:1;24722:6;24717:3;24713:16;24706:27;24642:2;24491:258;;;;:::o;24755:281::-;24838:27;24860:4;24838:27;:::i;:::-;24830:6;24826:40;24968:6;24956:10;24953:22;24932:18;24920:10;24917:34;24914:62;24911:2;;;24979:18;;:::i;:::-;24911:2;25019:10;25015:2;25008:22;24798:238;;;:::o;25042:233::-;25081:3;25104:24;25122:5;25104:24;:::i;:::-;25095:33;;25150:66;25143:5;25140:77;25137:2;;;25220:18;;:::i;:::-;25137:2;25267:1;25260:5;25256:13;25249:20;;25085:190;;;:::o;25281:180::-;25329:77;25326:1;25319:88;25426:4;25423:1;25416:15;25450:4;25447:1;25440:15;25467:180;25515:77;25512:1;25505:88;25612:4;25609:1;25602:15;25636:4;25633:1;25626:15;25653:180;25701:77;25698:1;25691:88;25798:4;25795:1;25788:15;25822:4;25819:1;25812:15;25839:102;25880:6;25931:2;25927:7;25922:2;25915:5;25911:14;25907:28;25897:38;;25887:54;;;:::o;25947:222::-;26087:34;26083:1;26075:6;26071:14;26064:58;26156:5;26151:2;26143:6;26139:15;26132:30;26053:116;:::o;26175:229::-;26315:34;26311:1;26303:6;26299:14;26292:58;26384:12;26379:2;26371:6;26367:15;26360:37;26281:123;:::o;26410:221::-;26550:34;26546:1;26538:6;26534:14;26527:58;26619:4;26614:2;26606:6;26602:15;26595:29;26516:115;:::o;26637:177::-;26777:29;26773:1;26765:6;26761:14;26754:53;26743:71;:::o;26820:177::-;26960:29;26956:1;26948:6;26944:14;26937:53;26926:71;:::o;27003:179::-;27143:31;27139:1;27131:6;27127:14;27120:55;27109:73;:::o;27188:220::-;27328:34;27324:1;27316:6;27312:14;27305:58;27397:3;27392:2;27384:6;27380:15;27373:28;27294:114;:::o;27414:182::-;27554:34;27550:1;27542:6;27538:14;27531:58;27520:76;:::o;27602:228::-;27742:34;27738:1;27730:6;27726:14;27719:58;27811:11;27806:2;27798:6;27794:15;27787:36;27708:122;:::o;27836:224::-;27976:34;27972:1;27964:6;27960:14;27953:58;28045:7;28040:2;28032:6;28028:15;28021:32;27942:118;:::o;28066:223::-;28206:34;28202:1;28194:6;28190:14;28183:58;28275:6;28270:2;28262:6;28258:15;28251:31;28172:117;:::o;28295:173::-;28435:25;28431:1;28423:6;28419:14;28412:49;28401:67;:::o;28474:122::-;28547:24;28565:5;28547:24;:::i;:::-;28540:5;28537:35;28527:2;;28586:1;28583;28576:12;28527:2;28517:79;:::o;28602:138::-;28683:32;28709:5;28683:32;:::i;:::-;28676:5;28673:43;28663:2;;28730:1;28727;28720:12;28663:2;28653:87;:::o;28746:116::-;28816:21;28831:5;28816:21;:::i;:::-;28809:5;28806:32;28796:2;;28852:1;28849;28842:12;28796:2;28786:76;:::o;28868:122::-;28941:24;28959:5;28941:24;:::i;:::-;28934:5;28931:35;28921:2;;28980:1;28977;28970:12;28921:2;28911:79;:::o
Swarm Source
ipfs://beadf42e514c7049cd9609bc61c1912b49170c05eca854d13f6244ad8fcb3a86
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.