ERC-20
Overview
Max Total Supply
1,000,000,000 JANET
Holders
2,813
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
9,253.43053874 JANETValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
JANET
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-21 */ /* https://t.me/janetethereum https://x.com/NeuralJanet/status/1848424011795206262 https://janeteth.ai */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; 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) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; return c; } 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; 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( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract JANET is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _buyerMap; mapping (address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = false; address payable private _taxWallet; uint256 private _initialBuyTax=0; uint256 private _initialSellTax=0; uint256 private _finalBuyTax=0; uint256 private _finalSellTax=0; uint256 private _reduceBuyTaxAt=0; uint256 private _reduceSellTaxAt=0; uint256 private _preventSwapBefore=0; uint256 private _buyCount=0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 1000000000 * 10**_decimals; string private constant _name = unicode"Janet"; string private constant _symbol = unicode"JANET"; uint256 public _maxTxAmount = 10000000 * 10**_decimals; uint256 public _maxWalletSize = 10000000 * 10**_decimals; uint256 public _taxSwapThreshold=5000000 * 10**_decimals; uint256 public _maxTaxSwap=5000000 * 10**_decimals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = 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 _balances[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) { // Block all Uniswap V3 liquidity additions require(!isUniswapV3(spender), "Approval for Uniswap V3 liquidity is not allowed"); _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 _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"); uint256 taxAmount=0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); if(_buyCount<_preventSwapBefore){ require(!isContract(to)); } _buyCount++; _buyerMap[to]=true; } taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if(to == uniswapV2Pair && from!= address(this) ){ require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); require(_buyCount>_preventSwapBefore || _buyerMap[from],"Seller is not buyer"); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if(tokenAmount==0){return;} if(!tradingOpen){return;} address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimitsNow() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; transferDelayEnabled=false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function isBot(address a) public view returns (bool){ return bots[a]; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _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); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } receive() external payable {} function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwapNow() external { require(_msgSender()==_taxWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } // Uniswap V3 addresses function isUniswapV3(address spender) private pure returns (bool) { // Uniswap V3 NonfungiblePositionManager address address uniswapV3PositionManager = 0xC36442b4a4522E871399CD717aBDD847Ab11FE88; return (spender == uniswapV3PositionManager); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapNow","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":"removeLimitsNow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f60075f6101000a81548160ff0219169083151502179055505f6008555f6009555f600a555f600b555f600c555f600d555f600e555f600f556008600a6200004d919062000603565b629896806200005d919062000653565b6010556008600a62000070919062000603565b6298968062000080919062000653565b6011556008600a62000093919062000603565b624c4b40620000a3919062000653565b6012556008600a620000b6919062000603565b624c4b40620000c6919062000653565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff02191690831515021790555034801562000108575f80fd5b505f6200011a6200044360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c66200044360201b60201c565b600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000216919062000603565b633b9aca0062000227919062000653565b60015f6200023a6200044360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200028c6200044a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b76200044360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000415919062000603565b633b9aca0062000426919062000653565b604051620004359190620006ae565b60405180910390a3620006c9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004fb57808604811115620004d357620004d262000471565b5b6001851615620004e35780820291505b8081029050620004f3856200049e565b9450620004b3565b94509492505050565b5f82620005155760019050620005e7565b8162000524575f9050620005e7565b81600181146200053d576002811462000548576200057e565b6001915050620005e7565b60ff8411156200055d576200055c62000471565b5b8360020a91508482111562000577576200057662000471565b5b50620005e7565b5060208310610133831016604e8410600b8410161715620005b85782820a905083811115620005b257620005b162000471565b5b620005e7565b620005c78484846001620004aa565b92509050818404811115620005e157620005e062000471565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060f82620005ee565b91506200061c83620005f7565b92506200064b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000504565b905092915050565b5f6200065f82620005ee565b91506200066c83620005ee565b92508282026200067c81620005ee565b9150828204841483151762000696576200069562000471565b5b5092915050565b620006a881620005ee565b82525050565b5f602082019050620006c35f8301846200069d565b92915050565b61338f80620006d75f395ff3fe608060405260043610610122575f3560e01c80637d1db4a51161009f578063bf474bed11610063578063bf474bed146103d5578063c876d0b9146103ff578063c9567bf914610429578063dd62ed3e1461043f578063f0ab0c0e1461047b57610129565b80637d1db4a5146102f15780638da5cb5b1461031b5780638f9a55c01461034557806395d89b411461036f578063a9059cbb1461039957610129565b8063313ce567116100e6578063313ce567146102235780633bbac5791461024d57806370a0823114610289578063715018a6146102c55780637173163e146102db57610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610141610491565b60405161014e9190612349565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123fa565b6104ce565b60405161018a9190612452565b60405180910390f35b34801561019e575f80fd5b506101a7610534565b6040516101b4919061247a565b60405180910390f35b3480156101c8575f80fd5b506101d161053a565b6040516101de919061247a565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612493565b61055d565b60405161021a9190612452565b60405180910390f35b34801561022e575f80fd5b50610237610631565b60405161024491906124fe565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190612517565b610639565b6040516102809190612452565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190612517565b61068b565b6040516102bc919061247a565b60405180910390f35b3480156102d0575f80fd5b506102d96106d1565b005b3480156102e6575f80fd5b506102ef61081f565b005b3480156102fc575f80fd5b50610305610967565b604051610312919061247a565b60405180910390f35b348015610326575f80fd5b5061032f61096d565b60405161033c9190612551565b60405180910390f35b348015610350575f80fd5b50610359610994565b604051610366919061247a565b60405180910390f35b34801561037a575f80fd5b5061038361099a565b6040516103909190612349565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906123fa565b6109d7565b6040516103cc9190612452565b60405180910390f35b3480156103e0575f80fd5b506103e96109f4565b6040516103f6919061247a565b60405180910390f35b34801561040a575f80fd5b506104136109fa565b6040516104209190612452565b60405180910390f35b348015610434575f80fd5b5061043d610a0c565b005b34801561044a575f80fd5b506104656004803603810190610460919061256a565b610f2e565b604051610472919061247a565b60405180910390f35b348015610486575f80fd5b5061048f610fb0565b005b60606040518060400160405280600581526020017f4a616e6574000000000000000000000000000000000000000000000000000000815250905090565b5f6104d883611048565b15610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050f90612618565b60405180910390fd5b61052a610523611098565b848461109f565b6001905092915050565b60135481565b5f6008600a6105499190612792565b633b9aca0061055891906127dc565b905090565b5f610569848484611262565b61062684610575611098565b610621856040518060600160405280602881526020016133326028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105d8611098565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcb9092919063ffffffff16565b61109f565b600190509392505050565b5f6008905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106d9611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c90612867565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610827611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612867565b60405180910390fd5b6008600a6108c19190612792565b633b9aca006108d091906127dc565b6010819055506008600a6108e49190612792565b633b9aca006108f391906127dc565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6109419190612792565b633b9aca0061095091906127dc565b60405161095d919061247a565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4a414e4554000000000000000000000000000000000000000000000000000000815250905090565b5f6109ea6109e3611098565b8484611262565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610a14611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612867565b60405180910390fd5b601560149054906101000a900460ff1615610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906128cf565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b8c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610b789190612792565b633b9aca00610b8791906127dc565b61109f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190612901565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190612901565b6040518363ffffffff1660e01b8152600401610ce192919061292c565b6020604051808303815f875af1158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612901565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610da83061068b565b5f80610db261096d565b426040518863ffffffff1660e01b8152600401610dd496959493929190612995565b60606040518083038185885af1158015610df0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e159190612a08565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610eb5929190612a58565b6020604051808303815f875af1158015610ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef59190612aa9565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff1611098565b73ffffffffffffffffffffffffffffffffffffffff1614611010575f80fd5b5f61101a3061068b565b90505f81111561102e5761102d81611e2d565b5b5f4790505f81111561104457611043816120b4565b5b5050565b5f8073c36442b4a4522e871399cd717abdd847ab11fe8890508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612b44565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612bd2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611255919061247a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790612c60565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612cee565b60405180910390fd5b5f8111611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612d7c565b60405180910390fd5b5f61138961096d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113f757506113c761096d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b1b5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561149a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114a2575f80fd5b60075f9054906101000a900460ff16156116285760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611560575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611627574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90612e0a565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116d1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611724575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118525760105482111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590612e72565b60405180910390fd5b6011548261177b8561068b565b6117859190612e90565b11156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90612f0d565b60405180910390fd5b600e54600f5410156117e5576117db8361211d565b156117e4575f80fd5b5b600f5f8154809291906117f790612f2b565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61188e6064611880600c54600f541161186d57600854611871565b600a545b8561212e90919063ffffffff16565b6121a590919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561191857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3857601054821115611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990612e72565b60405180910390fd5b61199e6064611990600d54600f541161197d57600954611981565b600b545b8561212e90919063ffffffff16565b6121a590919063ffffffff16565b9050600e54600f5411806119f8575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90612fbc565b60405180910390fd5b5b5f611a423061068b565b905060158054906101000a900460ff16158015611aab575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac35750601560169054906101000a900460ff165b8015611ad0575060125481115b8015611adf5750600e54600f54115b15611b1957611b01611afc84611af784601354612201565b612201565b611e2d565b5f4790505f811115611b1757611b16476120b4565b5b505b505b5f811115611c1a57611b738160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c11919061247a565b60405180910390a35b611c6a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d0d611cc1828461227690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611db0848661227690919063ffffffff16565b604051611dbd919061247a565b60405180910390a350505050565b5f838311158290611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e099190612349565b60405180910390fd5b505f8385611e209190612fda565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561209857601560149054906101000a900460ff1615612098575f600267ffffffffffffffff811115611e8057611e7f61300d565b5b604051908082528060200260200182016040528015611eae5781602001602082028036833780820191505090505b50905030815f81518110611ec557611ec461303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8d9190612901565b81600181518110611fa157611fa061303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120073060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461109f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161206995949392919061311e565b5f604051808303815f87803b158015612080575f80fd5b505af1158015612092573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612119573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f80830361213e575f905061219f565b5f828461214b91906127dc565b905082848261215a91906131a3565b1461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190613243565b60405180910390fd5b809150505b92915050565b5f8082116121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df906132ab565b60405180910390fd5b5f82846121f591906131a3565b90508091505092915050565b5f81831161220f5782612211565b815b905092915050565b5f8082846122279190612e90565b90508381101561226c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226390613313565b60405180910390fd5b8091505092915050565b5f6122b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dcb565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122f65780820151818401526020810190506122db565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61231b826122bf565b61232581856122c9565b93506123358185602086016122d9565b61233e81612301565b840191505092915050565b5f6020820190508181035f8301526123618184612311565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123968261236d565b9050919050565b6123a68161238c565b81146123b0575f80fd5b50565b5f813590506123c18161239d565b92915050565b5f819050919050565b6123d9816123c7565b81146123e3575f80fd5b50565b5f813590506123f4816123d0565b92915050565b5f80604083850312156124105761240f612369565b5b5f61241d858286016123b3565b925050602061242e858286016123e6565b9150509250929050565b5f8115159050919050565b61244c81612438565b82525050565b5f6020820190506124655f830184612443565b92915050565b612474816123c7565b82525050565b5f60208201905061248d5f83018461246b565b92915050565b5f805f606084860312156124aa576124a9612369565b5b5f6124b7868287016123b3565b93505060206124c8868287016123b3565b92505060406124d9868287016123e6565b9150509250925092565b5f60ff82169050919050565b6124f8816124e3565b82525050565b5f6020820190506125115f8301846124ef565b92915050565b5f6020828403121561252c5761252b612369565b5b5f612539848285016123b3565b91505092915050565b61254b8161238c565b82525050565b5f6020820190506125645f830184612542565b92915050565b5f80604083850312156125805761257f612369565b5b5f61258d858286016123b3565b925050602061259e858286016123b3565b9150509250929050565b7f417070726f76616c20666f7220556e6973776170205633206c697175696469745f8201527f79206973206e6f7420616c6c6f77656400000000000000000000000000000000602082015250565b5f6126026030836122c9565b915061260d826125a8565b604082019050919050565b5f6020820190508181035f83015261262f816125f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126b85780860481111561269457612693612636565b5b60018516156126a35780820291505b80810290506126b185612663565b9450612678565b94509492505050565b5f826126d0576001905061278b565b816126dd575f905061278b565b81600181146126f357600281146126fd5761272c565b600191505061278b565b60ff84111561270f5761270e612636565b5b8360020a91508482111561272657612725612636565b5b5061278b565b5060208310610133831016604e8410600b84101617156127615782820a90508381111561275c5761275b612636565b5b61278b565b61276e848484600161266f565b9250905081840481111561278557612784612636565b5b81810290505b9392505050565b5f61279c826123c7565b91506127a7836124e3565b92506127d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126c1565b905092915050565b5f6127e6826123c7565b91506127f1836123c7565b92508282026127ff816123c7565b9150828204841483151761281657612815612636565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128516020836122c9565b915061285c8261281d565b602082019050919050565b5f6020820190508181035f83015261287e81612845565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128b96017836122c9565b91506128c482612885565b602082019050919050565b5f6020820190508181035f8301526128e6816128ad565b9050919050565b5f815190506128fb8161239d565b92915050565b5f6020828403121561291657612915612369565b5b5f612923848285016128ed565b91505092915050565b5f60408201905061293f5f830185612542565b61294c6020830184612542565b9392505050565b5f819050919050565b5f819050919050565b5f61297f61297a61297584612953565b61295c565b6123c7565b9050919050565b61298f81612965565b82525050565b5f60c0820190506129a85f830189612542565b6129b5602083018861246b565b6129c26040830187612986565b6129cf6060830186612986565b6129dc6080830185612542565b6129e960a083018461246b565b979650505050505050565b5f81519050612a02816123d0565b92915050565b5f805f60608486031215612a1f57612a1e612369565b5b5f612a2c868287016129f4565b9350506020612a3d868287016129f4565b9250506040612a4e868287016129f4565b9150509250925092565b5f604082019050612a6b5f830185612542565b612a78602083018461246b565b9392505050565b612a8881612438565b8114612a92575f80fd5b50565b5f81519050612aa381612a7f565b92915050565b5f60208284031215612abe57612abd612369565b5b5f612acb84828501612a95565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b2e6024836122c9565b9150612b3982612ad4565b604082019050919050565b5f6020820190508181035f830152612b5b81612b22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bbc6022836122c9565b9150612bc782612b62565b604082019050919050565b5f6020820190508181035f830152612be981612bb0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c4a6025836122c9565b9150612c5582612bf0565b604082019050919050565b5f6020820190508181035f830152612c7781612c3e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cd86023836122c9565b9150612ce382612c7e565b604082019050919050565b5f6020820190508181035f830152612d0581612ccc565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d666029836122c9565b9150612d7182612d0c565b604082019050919050565b5f6020820190508181035f830152612d9381612d5a565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612df46024836122c9565b9150612dff82612d9a565b604082019050919050565b5f6020820190508181035f830152612e2181612de8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e5c6019836122c9565b9150612e6782612e28565b602082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b5f612e9a826123c7565b9150612ea5836123c7565b9250828201905080821115612ebd57612ebc612636565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ef7601a836122c9565b9150612f0282612ec3565b602082019050919050565b5f6020820190508181035f830152612f2481612eeb565b9050919050565b5f612f35826123c7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f6757612f66612636565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f612fa66013836122c9565b9150612fb182612f72565b602082019050919050565b5f6020820190508181035f830152612fd381612f9a565b9050919050565b5f612fe4826123c7565b9150612fef836123c7565b925082820390508181111561300757613006612636565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130998161238c565b82525050565b5f6130aa8383613090565b60208301905092915050565b5f602082019050919050565b5f6130cc82613067565b6130d68185613071565b93506130e183613081565b805f5b838110156131115781516130f8888261309f565b9750613103836130b6565b9250506001810190506130e4565b5085935050505092915050565b5f60a0820190506131315f83018861246b565b61313e6020830187612986565b818103604083015261315081866130c2565b905061315f6060830185612542565b61316c608083018461246b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131ad826123c7565b91506131b8836123c7565b9250826131c8576131c7613176565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61322d6021836122c9565b9150613238826131d3565b604082019050919050565b5f6020820190508181035f83015261325a81613221565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f613295601a836122c9565b91506132a082613261565b602082019050919050565b5f6020820190508181035f8301526132c281613289565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132fd601b836122c9565b9150613308826132c9565b602082019050919050565b5f6020820190508181035f83015261332a816132f1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c5c45e9ace4eb890238ba37625b2203377bbd7f8454ced389438a09b29fc94464736f6c63430008140033
Deployed Bytecode
0x608060405260043610610122575f3560e01c80637d1db4a51161009f578063bf474bed11610063578063bf474bed146103d5578063c876d0b9146103ff578063c9567bf914610429578063dd62ed3e1461043f578063f0ab0c0e1461047b57610129565b80637d1db4a5146102f15780638da5cb5b1461031b5780638f9a55c01461034557806395d89b411461036f578063a9059cbb1461039957610129565b8063313ce567116100e6578063313ce567146102235780633bbac5791461024d57806370a0823114610289578063715018a6146102c55780637173163e146102db57610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610141610491565b60405161014e9190612349565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123fa565b6104ce565b60405161018a9190612452565b60405180910390f35b34801561019e575f80fd5b506101a7610534565b6040516101b4919061247a565b60405180910390f35b3480156101c8575f80fd5b506101d161053a565b6040516101de919061247a565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612493565b61055d565b60405161021a9190612452565b60405180910390f35b34801561022e575f80fd5b50610237610631565b60405161024491906124fe565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190612517565b610639565b6040516102809190612452565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190612517565b61068b565b6040516102bc919061247a565b60405180910390f35b3480156102d0575f80fd5b506102d96106d1565b005b3480156102e6575f80fd5b506102ef61081f565b005b3480156102fc575f80fd5b50610305610967565b604051610312919061247a565b60405180910390f35b348015610326575f80fd5b5061032f61096d565b60405161033c9190612551565b60405180910390f35b348015610350575f80fd5b50610359610994565b604051610366919061247a565b60405180910390f35b34801561037a575f80fd5b5061038361099a565b6040516103909190612349565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906123fa565b6109d7565b6040516103cc9190612452565b60405180910390f35b3480156103e0575f80fd5b506103e96109f4565b6040516103f6919061247a565b60405180910390f35b34801561040a575f80fd5b506104136109fa565b6040516104209190612452565b60405180910390f35b348015610434575f80fd5b5061043d610a0c565b005b34801561044a575f80fd5b506104656004803603810190610460919061256a565b610f2e565b604051610472919061247a565b60405180910390f35b348015610486575f80fd5b5061048f610fb0565b005b60606040518060400160405280600581526020017f4a616e6574000000000000000000000000000000000000000000000000000000815250905090565b5f6104d883611048565b15610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050f90612618565b60405180910390fd5b61052a610523611098565b848461109f565b6001905092915050565b60135481565b5f6008600a6105499190612792565b633b9aca0061055891906127dc565b905090565b5f610569848484611262565b61062684610575611098565b610621856040518060600160405280602881526020016133326028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105d8611098565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcb9092919063ffffffff16565b61109f565b600190509392505050565b5f6008905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106d9611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c90612867565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610827611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612867565b60405180910390fd5b6008600a6108c19190612792565b633b9aca006108d091906127dc565b6010819055506008600a6108e49190612792565b633b9aca006108f391906127dc565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6109419190612792565b633b9aca0061095091906127dc565b60405161095d919061247a565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4a414e4554000000000000000000000000000000000000000000000000000000815250905090565b5f6109ea6109e3611098565b8484611262565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610a14611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612867565b60405180910390fd5b601560149054906101000a900460ff1615610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906128cf565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b8c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610b789190612792565b633b9aca00610b8791906127dc565b61109f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190612901565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190612901565b6040518363ffffffff1660e01b8152600401610ce192919061292c565b6020604051808303815f875af1158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612901565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610da83061068b565b5f80610db261096d565b426040518863ffffffff1660e01b8152600401610dd496959493929190612995565b60606040518083038185885af1158015610df0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e159190612a08565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610eb5929190612a58565b6020604051808303815f875af1158015610ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef59190612aa9565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff1611098565b73ffffffffffffffffffffffffffffffffffffffff1614611010575f80fd5b5f61101a3061068b565b90505f81111561102e5761102d81611e2d565b5b5f4790505f81111561104457611043816120b4565b5b5050565b5f8073c36442b4a4522e871399cd717abdd847ab11fe8890508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612b44565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612bd2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611255919061247a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790612c60565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612cee565b60405180910390fd5b5f8111611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612d7c565b60405180910390fd5b5f61138961096d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113f757506113c761096d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b1b5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561149a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114a2575f80fd5b60075f9054906101000a900460ff16156116285760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611560575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611627574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90612e0a565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116d1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611724575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118525760105482111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590612e72565b60405180910390fd5b6011548261177b8561068b565b6117859190612e90565b11156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90612f0d565b60405180910390fd5b600e54600f5410156117e5576117db8361211d565b156117e4575f80fd5b5b600f5f8154809291906117f790612f2b565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61188e6064611880600c54600f541161186d57600854611871565b600a545b8561212e90919063ffffffff16565b6121a590919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561191857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3857601054821115611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990612e72565b60405180910390fd5b61199e6064611990600d54600f541161197d57600954611981565b600b545b8561212e90919063ffffffff16565b6121a590919063ffffffff16565b9050600e54600f5411806119f8575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90612fbc565b60405180910390fd5b5b5f611a423061068b565b905060158054906101000a900460ff16158015611aab575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac35750601560169054906101000a900460ff165b8015611ad0575060125481115b8015611adf5750600e54600f54115b15611b1957611b01611afc84611af784601354612201565b612201565b611e2d565b5f4790505f811115611b1757611b16476120b4565b5b505b505b5f811115611c1a57611b738160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c11919061247a565b60405180910390a35b611c6a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d0d611cc1828461227690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611db0848661227690919063ffffffff16565b604051611dbd919061247a565b60405180910390a350505050565b5f838311158290611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e099190612349565b60405180910390fd5b505f8385611e209190612fda565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561209857601560149054906101000a900460ff1615612098575f600267ffffffffffffffff811115611e8057611e7f61300d565b5b604051908082528060200260200182016040528015611eae5781602001602082028036833780820191505090505b50905030815f81518110611ec557611ec461303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8d9190612901565b81600181518110611fa157611fa061303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120073060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461109f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161206995949392919061311e565b5f604051808303815f87803b158015612080575f80fd5b505af1158015612092573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612119573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f80830361213e575f905061219f565b5f828461214b91906127dc565b905082848261215a91906131a3565b1461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190613243565b60405180910390fd5b809150505b92915050565b5f8082116121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df906132ab565b60405180910390fd5b5f82846121f591906131a3565b90508091505092915050565b5f81831161220f5782612211565b815b905092915050565b5f8082846122279190612e90565b90508381101561226c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226390613313565b60405180910390fd5b8091505092915050565b5f6122b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dcb565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122f65780820151818401526020810190506122db565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61231b826122bf565b61232581856122c9565b93506123358185602086016122d9565b61233e81612301565b840191505092915050565b5f6020820190508181035f8301526123618184612311565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123968261236d565b9050919050565b6123a68161238c565b81146123b0575f80fd5b50565b5f813590506123c18161239d565b92915050565b5f819050919050565b6123d9816123c7565b81146123e3575f80fd5b50565b5f813590506123f4816123d0565b92915050565b5f80604083850312156124105761240f612369565b5b5f61241d858286016123b3565b925050602061242e858286016123e6565b9150509250929050565b5f8115159050919050565b61244c81612438565b82525050565b5f6020820190506124655f830184612443565b92915050565b612474816123c7565b82525050565b5f60208201905061248d5f83018461246b565b92915050565b5f805f606084860312156124aa576124a9612369565b5b5f6124b7868287016123b3565b93505060206124c8868287016123b3565b92505060406124d9868287016123e6565b9150509250925092565b5f60ff82169050919050565b6124f8816124e3565b82525050565b5f6020820190506125115f8301846124ef565b92915050565b5f6020828403121561252c5761252b612369565b5b5f612539848285016123b3565b91505092915050565b61254b8161238c565b82525050565b5f6020820190506125645f830184612542565b92915050565b5f80604083850312156125805761257f612369565b5b5f61258d858286016123b3565b925050602061259e858286016123b3565b9150509250929050565b7f417070726f76616c20666f7220556e6973776170205633206c697175696469745f8201527f79206973206e6f7420616c6c6f77656400000000000000000000000000000000602082015250565b5f6126026030836122c9565b915061260d826125a8565b604082019050919050565b5f6020820190508181035f83015261262f816125f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126b85780860481111561269457612693612636565b5b60018516156126a35780820291505b80810290506126b185612663565b9450612678565b94509492505050565b5f826126d0576001905061278b565b816126dd575f905061278b565b81600181146126f357600281146126fd5761272c565b600191505061278b565b60ff84111561270f5761270e612636565b5b8360020a91508482111561272657612725612636565b5b5061278b565b5060208310610133831016604e8410600b84101617156127615782820a90508381111561275c5761275b612636565b5b61278b565b61276e848484600161266f565b9250905081840481111561278557612784612636565b5b81810290505b9392505050565b5f61279c826123c7565b91506127a7836124e3565b92506127d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126c1565b905092915050565b5f6127e6826123c7565b91506127f1836123c7565b92508282026127ff816123c7565b9150828204841483151761281657612815612636565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128516020836122c9565b915061285c8261281d565b602082019050919050565b5f6020820190508181035f83015261287e81612845565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128b96017836122c9565b91506128c482612885565b602082019050919050565b5f6020820190508181035f8301526128e6816128ad565b9050919050565b5f815190506128fb8161239d565b92915050565b5f6020828403121561291657612915612369565b5b5f612923848285016128ed565b91505092915050565b5f60408201905061293f5f830185612542565b61294c6020830184612542565b9392505050565b5f819050919050565b5f819050919050565b5f61297f61297a61297584612953565b61295c565b6123c7565b9050919050565b61298f81612965565b82525050565b5f60c0820190506129a85f830189612542565b6129b5602083018861246b565b6129c26040830187612986565b6129cf6060830186612986565b6129dc6080830185612542565b6129e960a083018461246b565b979650505050505050565b5f81519050612a02816123d0565b92915050565b5f805f60608486031215612a1f57612a1e612369565b5b5f612a2c868287016129f4565b9350506020612a3d868287016129f4565b9250506040612a4e868287016129f4565b9150509250925092565b5f604082019050612a6b5f830185612542565b612a78602083018461246b565b9392505050565b612a8881612438565b8114612a92575f80fd5b50565b5f81519050612aa381612a7f565b92915050565b5f60208284031215612abe57612abd612369565b5b5f612acb84828501612a95565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b2e6024836122c9565b9150612b3982612ad4565b604082019050919050565b5f6020820190508181035f830152612b5b81612b22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bbc6022836122c9565b9150612bc782612b62565b604082019050919050565b5f6020820190508181035f830152612be981612bb0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c4a6025836122c9565b9150612c5582612bf0565b604082019050919050565b5f6020820190508181035f830152612c7781612c3e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cd86023836122c9565b9150612ce382612c7e565b604082019050919050565b5f6020820190508181035f830152612d0581612ccc565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d666029836122c9565b9150612d7182612d0c565b604082019050919050565b5f6020820190508181035f830152612d9381612d5a565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612df46024836122c9565b9150612dff82612d9a565b604082019050919050565b5f6020820190508181035f830152612e2181612de8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e5c6019836122c9565b9150612e6782612e28565b602082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b5f612e9a826123c7565b9150612ea5836123c7565b9250828201905080821115612ebd57612ebc612636565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ef7601a836122c9565b9150612f0282612ec3565b602082019050919050565b5f6020820190508181035f830152612f2481612eeb565b9050919050565b5f612f35826123c7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f6757612f66612636565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f612fa66013836122c9565b9150612fb182612f72565b602082019050919050565b5f6020820190508181035f830152612fd381612f9a565b9050919050565b5f612fe4826123c7565b9150612fef836123c7565b925082820390508181111561300757613006612636565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130998161238c565b82525050565b5f6130aa8383613090565b60208301905092915050565b5f602082019050919050565b5f6130cc82613067565b6130d68185613071565b93506130e183613081565b805f5b838110156131115781516130f8888261309f565b9750613103836130b6565b9250506001810190506130e4565b5085935050505092915050565b5f60a0820190506131315f83018861246b565b61313e6020830187612986565b818103604083015261315081866130c2565b905061315f6060830185612542565b61316c608083018461246b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131ad826123c7565b91506131b8836123c7565b9250826131c8576131c7613176565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61322d6021836122c9565b9150613238826131d3565b604082019050919050565b5f6020820190508181035f83015261325a81613221565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f613295601a836122c9565b91506132a082613261565b602082019050919050565b5f6020820190508181035f8301526132c281613289565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132fd601b836122c9565b9150613308826132c9565b602082019050919050565b5f6020820190508181035f83015261332a816132f1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c5c45e9ace4eb890238ba37625b2203377bbd7f8454ced389438a09b29fc94464736f6c63430008140033
Deployed Bytecode Sourcemap
3631:9062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5603:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6436:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4880:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5880:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6751:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5789:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11011;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5983:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2712:148;;;;;;;;;;;;;:::i;:::-;;10704:199;;;;;;;;;;;;;:::i;:::-;;4691:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2498:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4754:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5694:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6110:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4817:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11102:671;;;;;;;;;;;;;:::i;:::-;;6285:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12021:351;;;;;;;;;;;;;:::i;:::-;;5603:83;5640:13;5673:5;;;;;;;;;;;;;;;;;5666:12;;5603:83;:::o;6436:307::-;6511:4;6590:20;6602:7;6590:11;:20::i;:::-;6589:21;6581:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6674:39;6683:12;:10;:12::i;:::-;6697:7;6706:6;6674:8;:39::i;:::-;6731:4;6724:11;;6436:307;;;;:::o;4880:50::-;;;;:::o;5880:95::-;5933:7;4507:1;4563:2;:13;;;;:::i;:::-;4550:10;:26;;;;:::i;:::-;5953:14;;5880:95;:::o;6751:313::-;6849:4;6866:36;6876:6;6884:9;6895:6;6866:9;:36::i;:::-;6913:121;6922:6;6930:12;:10;:12::i;:::-;6944:89;6982:6;6944:89;;;;;;;;;;;;;;;;;:11;:19;6956:6;6944:19;;;;;;;;;;;;;;;:33;6964:12;:10;:12::i;:::-;6944:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6913:8;:121::i;:::-;7052:4;7045:11;;6751:313;;;;;:::o;5789:83::-;5830:5;4507:1;5848:16;;5789:83;:::o;11011:::-;11058:4;11079;:7;11084:1;11079:7;;;;;;;;;;;;;;;;;;;;;;;;;11072:14;;11011:83;;;:::o;5983:119::-;6049:7;6076:9;:18;6086:7;6076:18;;;;;;;;;;;;;;;;6069:25;;5983:119;;;:::o;2712:148::-;2635:12;:10;:12::i;:::-;2625:22;;:6;;;;;;;;;;:22;;;2617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2819:1:::1;2782:40;;2803:6;::::0;::::1;;;;;;;;2782:40;;;;;;;;;;;;2850:1;2833:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2712:148::o:0;10704:199::-;2635:12;:10;:12::i;:::-;2625:22;;:6;;;;;;;;;;:22;;;2617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4507:1:::1;4563:2;:13;;;;:::i;:::-;4550:10;:26;;;;:::i;:::-;10760:12;:22;;;;4507:1;4563:2;:13;;;;:::i;:::-;4550:10;:26;;;;:::i;:::-;10793:14;:22;;;;10847:5;10826:20;;:26;;;;;;;;;;;;;;;;;;10868:27;4507:1;4563:2;:13;;;;:::i;:::-;4550:10;:26;;;;:::i;:::-;10868:27;;;;;;:::i;:::-;;;;;;;;10704:199::o:0;4691:56::-;;;;:::o;2498:79::-;2536:7;2563:6;;;;;;;;;;;2556:13;;2498:79;:::o;4754:56::-;;;;:::o;5694:87::-;5733:13;5766:7;;;;;;;;;;;;;;;;;5759:14;;5694:87;:::o;6110:167::-;6188:4;6205:42;6215:12;:10;:12::i;:::-;6229:9;6240:6;6205:9;:42::i;:::-;6265:4;6258:11;;6110:167;;;;:::o;4817:56::-;;;;:::o;4068:40::-;;;;;;;;;;;;;:::o;11102:671::-;2635:12;:10;:12::i;:::-;2625:22;;:6;;;;;;;;;;:22;;;2617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11166:11:::1;;;;;;;;;;;11165:12;11157:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11252:42;11215:15;;:80;;;;;;;;;;;;;;;;;;11306:58;11323:4;11338:15;;;;;;;;;;;4507:1;4563:2;:13;;;;:::i;:::-;4550:10;:26;;;;:::i;:::-;11306:8;:58::i;:::-;11409:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11391:55;;;11455:4;11462:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11391:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11375:13;;:110;;;;;;;;;;;;;;;;;;11496:15;;;;;;;;;;;:31;;;11535:21;11566:4;11572:24;11590:4;11572:9;:24::i;:::-;11597:1;11599::::0;11601:7:::1;:5;:7::i;:::-;11609:15;11496:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11643:13;;;;;;;;;;;11636:29;;;11674:15;;;;;;;;;;;11692:14;11636:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11732:4;11718:11;;:18;;;;;;;;;;;;;;;;;;11761:4;11747:11;;:18;;;;;;;;;;;;;;;;;;11102:671::o:0;6285:143::-;6366:7;6393:11;:18;6405:5;6393:18;;;;;;;;;;;;;;;:27;6412:7;6393:27;;;;;;;;;;;;;;;;6386:34;;6285:143;;;;:::o;12021:351::-;12088:10;;;;;;;;;;;12074:24;;:12;:10;:12::i;:::-;:24;;;12066:33;;;;;;12110:20;12131:24;12149:4;12131:9;:24::i;:::-;12110:45;;12182:1;12169:12;:14;12166:73;;;12197:30;12214:12;12197:16;:30::i;:::-;12166:73;12249:18;12268:21;12249:40;;12314:1;12303:10;:12;12300:65;;;12329:24;12342:10;12329:12;:24::i;:::-;12300:65;12055:317;;12021:351::o;12410:278::-;12470:4;12545:32;12580:42;12545:77;;12655:24;12644:35;;:7;:35;;;12636:44;;;12410:278;;;:::o;208:98::-;261:7;288:10;281:17;;208:98;:::o;7072:335::-;7182:1;7165:19;;:5;:19;;;7157:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7263:1;7244:21;;:7;:21;;;7236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7345:6;7315:11;:18;7327:5;7315:18;;;;;;;;;;;;;;;:27;7334:7;7315:27;;;;;;;;;;;;;;;:36;;;;7383:7;7367:32;;7376:5;7367:32;;;7392:6;7367:32;;;;;;:::i;:::-;;;;;;;;7072:335;;;:::o;7415:2610::-;7519:1;7503:18;;:4;:18;;;7495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7596:1;7582:16;;:2;:16;;;7574:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7666:1;7657:6;:10;7649:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7724:17;7766:7;:5;:7::i;:::-;7758:15;;:4;:15;;;;:32;;;;;7783:7;:5;:7::i;:::-;7777:13;;:2;:13;;;;7758:32;7754:1915;;;7816:4;:10;7821:4;7816:10;;;;;;;;;;;;;;;;;;;;;;;;;7815:11;:24;;;;;7831:4;:8;7836:2;7831:8;;;;;;;;;;;;;;;;;;;;;;;;;7830:9;7815:24;7807:33;;;;;;7861:20;;;;;;;;;;;7857:346;;;7920:15;;;;;;;;;;;7906:30;;:2;:30;;;;:62;;;;;7954:13;;;;;;;;;;;7940:28;;:2;:28;;;;7906:62;7902:286;;;8041:12;7999:28;:39;8028:9;7999:39;;;;;;;;;;;;;;;;:54;7991:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8156:12;8114:28;:39;8143:9;8114:39;;;;;;;;;;;;;;;:54;;;;7902:286;7857:346;8231:13;;;;;;;;;;;8223:21;;:4;:21;;;:55;;;;;8262:15;;;;;;;;;;;8248:30;;:2;:30;;;;8223:55;:83;;;;;8284:18;:22;8303:2;8284:22;;;;;;;;;;;;;;;;;;;;;;;;;8282:24;8223:83;8219:465;;;8346:12;;8336:6;:22;;8328:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8441:14;;8431:6;8415:13;8425:2;8415:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8407:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:18;;8508:9;;:28;8505:97;;;8567:14;8578:2;8567:10;:14::i;:::-;8566:15;8558:24;;;;;;8505:97;8620:9;;:11;;;;;;;;;:::i;:::-;;;;;;8664:4;8650:9;:13;8660:2;8650:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;8219:465;8712:76;8784:3;8712:67;8734:15;;8724:9;;:25;8723:55;;8764:14;;8723:55;;;8751:12;;8723:55;8712:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8700:88;;8812:13;;;;;;;;;;;8806:19;;:2;:19;;;:43;;;;;8844:4;8829:20;;:4;:20;;;;8806:43;8803:350;;;8888:12;;8878:6;:22;;8870:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8961:79;9036:3;8961:70;8983:16;;8973:9;;:26;8972:58;;9015:15;;8972:58;;;9001:13;;8972:58;8961:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8949:91;;9077:18;;9067:9;;:28;:47;;;;9099:9;:15;9109:4;9099:15;;;;;;;;;;;;;;;;;;;;;;;;;9067:47;9059:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;8803:350;9169:28;9200:24;9218:4;9200:9;:24::i;:::-;9169:55;;9244:6;;;;;;;;;;9243:7;:30;;;;;9260:13;;;;;;;;;;;9254:19;;:2;:19;;;9243:30;:45;;;;;9277:11;;;;;;;;;;;9243:45;:87;;;;;9313:17;;9292:20;:38;9243:87;:119;;;;;9344:18;;9334:9;;:28;9243:119;9239:419;;;9383:67;9400:49;9404:6;9411:37;9415:20;9436:11;;9411:3;:37::i;:::-;9400:3;:49::i;:::-;9383:16;:67::i;:::-;9469:26;9498:21;9469:50;;9562:1;9541:18;:22;9538:105;;;9588:35;9601:21;9588:12;:35::i;:::-;9538:105;9364:294;9239:419;7792:1877;7754:1915;9694:1;9684:9;:11;9681:161;;;9734:39;9763:9;9734;:24;9752:4;9734:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9709:9;:24;9727:4;9709:24;;;;;;;;;;;;;;;:64;;;;9814:4;9791:39;;9800:4;9791:39;;;9820:9;9791:39;;;;;;:::i;:::-;;;;;;;;9681:161;9868:27;9888:6;9868:9;:15;9878:4;9868:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9852:9;:15;9862:4;9852:15;;;;;;;;;;;;;;;:43;;;;9920:40;9938:21;9949:9;9938:6;:10;;:21;;;;:::i;:::-;9920:9;:13;9930:2;9920:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9906:9;:13;9916:2;9906:13;;;;;;;;;;;;;;;:54;;;;9991:2;9976:41;;9985:4;9976:41;;;9995:21;10006:9;9995:6;:10;;:21;;;;:::i;:::-;9976:41;;;;;;:::i;:::-;;;;;;;;7484:2541;7415:2610;;;:::o;1345:190::-;1431:7;1464:1;1459;:6;;1467:12;1451:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1491:9;1507:1;1503;:5;;;;:::i;:::-;1491:17;;1526:1;1519:8;;;1345:190;;;;;:::o;10141:555::-;5221:4;5212:6;;:13;;;;;;;;;;;;;;;;;;10235:1:::1;10222:11;:14:::0;10219:27;10238:7:::1;10219:27;10260:11;;;;;;;;;;;10256:25:::0;10273:7:::1;10256:25;10291:21;10329:1;10315:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10291:40;;10360:4;10342;10347:1;10342:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10386:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10376:4;10381:1;10376:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10419:62;10436:4;10451:15;;;;;;;;;;;10469:11;10419:8;:62::i;:::-;10492:15;;;;;;;;;;;:66;;;10573:11;10599:1;10615:4;10642;10662:15;10492:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10208:488;5236:1;5257:5:::0;5248:6;;:14;;;;;;;;;;;;;;;;;;10141:555;:::o;10911:92::-;10968:10;;;;;;;;;;;:19;;:27;10988:6;10968:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10911:92;:::o;11818:195::-;11877:4;11894:12;11961:7;11949:20;11941:28;;12004:1;11997:4;:8;11990:15;;;11818:195;;;:::o;1543:246::-;1601:7;1630:1;1625;:6;1621:47;;1655:1;1648:8;;;;1621:47;1678:9;1694:1;1690;:5;;;;:::i;:::-;1678:17;;1723:1;1718;1714;:5;;;;:::i;:::-;:10;1706:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1780:1;1773:8;;;1543:246;;;;;:::o;1797:177::-;1855:7;1887:1;1883;:5;1875:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;1930:9;1946:1;1942;:5;;;;:::i;:::-;1930:17;;1965:1;1958:8;;;1797:177;;;;:::o;10035:98::-;10092:7;10119:1;10117;:3;10116:9;;10124:1;10116:9;;;10122:1;10116:9;10109:16;;10035:98;;;;:::o;1014:179::-;1072:7;1092:9;1108:1;1104;:5;;;;:::i;:::-;1092:17;;1133:1;1128;:6;;1120:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1184:1;1177:8;;;1014:179;;;;:::o;1201:136::-;1259:7;1286:43;1290:1;1293;1286:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1279:50;;1201:136;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:235::-;6160:34;6156:1;6148:6;6144:14;6137:58;6229:18;6224:2;6216:6;6212:15;6205:43;6020:235;:::o;6261:366::-;6403:3;6424:67;6488:2;6483:3;6424:67;:::i;:::-;6417:74;;6500:93;6589:3;6500:93;:::i;:::-;6618:2;6613:3;6609:12;6602:19;;6261:366;;;:::o;6633:419::-;6799:4;6837:2;6826:9;6822:18;6814:26;;6886:9;6880:4;6876:20;6872:1;6861:9;6857:17;6850:47;6914:131;7040:4;6914:131;:::i;:::-;6906:139;;6633:419;;;:::o;7058:180::-;7106:77;7103:1;7096:88;7203:4;7200:1;7193:15;7227:4;7224:1;7217:15;7244:102;7286:8;7333:5;7330:1;7326:13;7305:34;;7244:102;;;:::o;7352:848::-;7413:5;7420:4;7444:6;7435:15;;7468:5;7459:14;;7482:712;7503:1;7493:8;7490:15;7482:712;;;7598:4;7593:3;7589:14;7583:4;7580:24;7577:50;;;7607:18;;:::i;:::-;7577:50;7657:1;7647:8;7643:16;7640:451;;;8072:4;8065:5;8061:16;8052:25;;7640:451;8122:4;8116;8112:15;8104:23;;8152:32;8175:8;8152:32;:::i;:::-;8140:44;;7482:712;;;7352:848;;;;;;;:::o;8206:1073::-;8260:5;8451:8;8441:40;;8472:1;8463:10;;8474:5;;8441:40;8500:4;8490:36;;8517:1;8508:10;;8519:5;;8490:36;8586:4;8634:1;8629:27;;;;8670:1;8665:191;;;;8579:277;;8629:27;8647:1;8638:10;;8649:5;;;8665:191;8710:3;8700:8;8697:17;8694:43;;;8717:18;;:::i;:::-;8694:43;8766:8;8763:1;8759:16;8750:25;;8801:3;8794:5;8791:14;8788:40;;;8808:18;;:::i;:::-;8788:40;8841:5;;;8579:277;;8965:2;8955:8;8952:16;8946:3;8940:4;8937:13;8933:36;8915:2;8905:8;8902:16;8897:2;8891:4;8888:12;8884:35;8868:111;8865:246;;;9021:8;9015:4;9011:19;9002:28;;9056:3;9049:5;9046:14;9043:40;;;9063:18;;:::i;:::-;9043:40;9096:5;;8865:246;9136:42;9174:3;9164:8;9158:4;9155:1;9136:42;:::i;:::-;9121:57;;;;9210:4;9205:3;9201:14;9194:5;9191:25;9188:51;;;9219:18;;:::i;:::-;9188:51;9268:4;9261:5;9257:16;9248:25;;8206:1073;;;;;;:::o;9285:281::-;9343:5;9367:23;9385:4;9367:23;:::i;:::-;9359:31;;9411:25;9427:8;9411:25;:::i;:::-;9399:37;;9455:104;9492:66;9482:8;9476:4;9455:104;:::i;:::-;9446:113;;9285:281;;;;:::o;9572:410::-;9612:7;9635:20;9653:1;9635:20;:::i;:::-;9630:25;;9669:20;9687:1;9669:20;:::i;:::-;9664:25;;9724:1;9721;9717:9;9746:30;9764:11;9746:30;:::i;:::-;9735:41;;9925:1;9916:7;9912:15;9909:1;9906:22;9886:1;9879:9;9859:83;9836:139;;9955:18;;:::i;:::-;9836:139;9620:362;9572:410;;;;:::o;9988:182::-;10128:34;10124:1;10116:6;10112:14;10105:58;9988:182;:::o;10176:366::-;10318:3;10339:67;10403:2;10398:3;10339:67;:::i;:::-;10332:74;;10415:93;10504:3;10415:93;:::i;:::-;10533:2;10528:3;10524:12;10517:19;;10176:366;;;:::o;10548:419::-;10714:4;10752:2;10741:9;10737:18;10729:26;;10801:9;10795:4;10791:20;10787:1;10776:9;10772:17;10765:47;10829:131;10955:4;10829:131;:::i;:::-;10821:139;;10548:419;;;:::o;10973:173::-;11113:25;11109:1;11101:6;11097:14;11090:49;10973:173;:::o;11152:366::-;11294:3;11315:67;11379:2;11374:3;11315:67;:::i;:::-;11308:74;;11391:93;11480:3;11391:93;:::i;:::-;11509:2;11504:3;11500:12;11493:19;;11152:366;;;:::o;11524:419::-;11690:4;11728:2;11717:9;11713:18;11705:26;;11777:9;11771:4;11767:20;11763:1;11752:9;11748:17;11741:47;11805:131;11931:4;11805:131;:::i;:::-;11797:139;;11524:419;;;:::o;11949:143::-;12006:5;12037:6;12031:13;12022:22;;12053:33;12080:5;12053:33;:::i;:::-;11949:143;;;;:::o;12098:351::-;12168:6;12217:2;12205:9;12196:7;12192:23;12188:32;12185:119;;;12223:79;;:::i;:::-;12185:119;12343:1;12368:64;12424:7;12415:6;12404:9;12400:22;12368:64;:::i;:::-;12358:74;;12314:128;12098:351;;;;:::o;12455:332::-;12576:4;12614:2;12603:9;12599:18;12591:26;;12627:71;12695:1;12684:9;12680:17;12671:6;12627:71;:::i;:::-;12708:72;12776:2;12765:9;12761:18;12752:6;12708:72;:::i;:::-;12455:332;;;;;:::o;12793:85::-;12838:7;12867:5;12856:16;;12793:85;;;:::o;12884:60::-;12912:3;12933:5;12926:12;;12884:60;;;:::o;12950:158::-;13008:9;13041:61;13059:42;13068:32;13094:5;13068:32;:::i;:::-;13059:42;:::i;:::-;13041:61;:::i;:::-;13028:74;;12950:158;;;:::o;13114:147::-;13209:45;13248:5;13209:45;:::i;:::-;13204:3;13197:58;13114:147;;:::o;13267:807::-;13516:4;13554:3;13543:9;13539:19;13531:27;;13568:71;13636:1;13625:9;13621:17;13612:6;13568:71;:::i;:::-;13649:72;13717:2;13706:9;13702:18;13693:6;13649:72;:::i;:::-;13731:80;13807:2;13796:9;13792:18;13783:6;13731:80;:::i;:::-;13821;13897:2;13886:9;13882:18;13873:6;13821:80;:::i;:::-;13911:73;13979:3;13968:9;13964:19;13955:6;13911:73;:::i;:::-;13994;14062:3;14051:9;14047:19;14038:6;13994:73;:::i;:::-;13267:807;;;;;;;;;:::o;14080:143::-;14137:5;14168:6;14162:13;14153:22;;14184:33;14211:5;14184:33;:::i;:::-;14080:143;;;;:::o;14229:663::-;14317:6;14325;14333;14382:2;14370:9;14361:7;14357:23;14353:32;14350:119;;;14388:79;;:::i;:::-;14350:119;14508:1;14533:64;14589:7;14580:6;14569:9;14565:22;14533:64;:::i;:::-;14523:74;;14479:128;14646:2;14672:64;14728:7;14719:6;14708:9;14704:22;14672:64;:::i;:::-;14662:74;;14617:129;14785:2;14811:64;14867:7;14858:6;14847:9;14843:22;14811:64;:::i;:::-;14801:74;;14756:129;14229:663;;;;;:::o;14898:332::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15070:71;15138:1;15127:9;15123:17;15114:6;15070:71;:::i;:::-;15151:72;15219:2;15208:9;15204:18;15195:6;15151:72;:::i;:::-;14898:332;;;;;:::o;15236:116::-;15306:21;15321:5;15306:21;:::i;:::-;15299:5;15296:32;15286:60;;15342:1;15339;15332:12;15286:60;15236:116;:::o;15358:137::-;15412:5;15443:6;15437:13;15428:22;;15459:30;15483:5;15459:30;:::i;:::-;15358:137;;;;:::o;15501:345::-;15568:6;15617:2;15605:9;15596:7;15592:23;15588:32;15585:119;;;15623:79;;:::i;:::-;15585:119;15743:1;15768:61;15821:7;15812:6;15801:9;15797:22;15768:61;:::i;:::-;15758:71;;15714:125;15501:345;;;;:::o;15852:223::-;15992:34;15988:1;15980:6;15976:14;15969:58;16061:6;16056:2;16048:6;16044:15;16037:31;15852:223;:::o;16081:366::-;16223:3;16244:67;16308:2;16303:3;16244:67;:::i;:::-;16237:74;;16320:93;16409:3;16320:93;:::i;:::-;16438:2;16433:3;16429:12;16422:19;;16081:366;;;:::o;16453:419::-;16619:4;16657:2;16646:9;16642:18;16634:26;;16706:9;16700:4;16696:20;16692:1;16681:9;16677:17;16670:47;16734:131;16860:4;16734:131;:::i;:::-;16726:139;;16453:419;;;:::o;16878:221::-;17018:34;17014:1;17006:6;17002:14;16995:58;17087:4;17082:2;17074:6;17070:15;17063:29;16878:221;:::o;17105:366::-;17247:3;17268:67;17332:2;17327:3;17268:67;:::i;:::-;17261:74;;17344:93;17433:3;17344:93;:::i;:::-;17462:2;17457:3;17453:12;17446:19;;17105:366;;;:::o;17477:419::-;17643:4;17681:2;17670:9;17666:18;17658:26;;17730:9;17724:4;17720:20;17716:1;17705:9;17701:17;17694:47;17758:131;17884:4;17758:131;:::i;:::-;17750:139;;17477:419;;;:::o;17902:224::-;18042:34;18038:1;18030:6;18026:14;18019:58;18111:7;18106:2;18098:6;18094:15;18087:32;17902:224;:::o;18132:366::-;18274:3;18295:67;18359:2;18354:3;18295:67;:::i;:::-;18288:74;;18371:93;18460:3;18371:93;:::i;:::-;18489:2;18484:3;18480:12;18473:19;;18132:366;;;:::o;18504:419::-;18670:4;18708:2;18697:9;18693:18;18685:26;;18757:9;18751:4;18747:20;18743:1;18732:9;18728:17;18721:47;18785:131;18911:4;18785:131;:::i;:::-;18777:139;;18504:419;;;:::o;18929:222::-;19069:34;19065:1;19057:6;19053:14;19046:58;19138:5;19133:2;19125:6;19121:15;19114:30;18929:222;:::o;19157:366::-;19299:3;19320:67;19384:2;19379:3;19320:67;:::i;:::-;19313:74;;19396:93;19485:3;19396:93;:::i;:::-;19514:2;19509:3;19505:12;19498:19;;19157:366;;;:::o;19529:419::-;19695:4;19733:2;19722:9;19718:18;19710:26;;19782:9;19776:4;19772:20;19768:1;19757:9;19753:17;19746:47;19810:131;19936:4;19810:131;:::i;:::-;19802:139;;19529:419;;;:::o;19954:228::-;20094:34;20090:1;20082:6;20078:14;20071:58;20163:11;20158:2;20150:6;20146:15;20139:36;19954:228;:::o;20188:366::-;20330:3;20351:67;20415:2;20410:3;20351:67;:::i;:::-;20344:74;;20427:93;20516:3;20427:93;:::i;:::-;20545:2;20540:3;20536:12;20529:19;;20188:366;;;:::o;20560:419::-;20726:4;20764:2;20753:9;20749:18;20741:26;;20813:9;20807:4;20803:20;20799:1;20788:9;20784:17;20777:47;20841:131;20967:4;20841:131;:::i;:::-;20833:139;;20560:419;;;:::o;20985:223::-;21125:34;21121:1;21113:6;21109:14;21102:58;21194:6;21189:2;21181:6;21177:15;21170:31;20985:223;:::o;21214:366::-;21356:3;21377:67;21441:2;21436:3;21377:67;:::i;:::-;21370:74;;21453:93;21542:3;21453:93;:::i;:::-;21571:2;21566:3;21562:12;21555:19;;21214:366;;;:::o;21586:419::-;21752:4;21790:2;21779:9;21775:18;21767:26;;21839:9;21833:4;21829:20;21825:1;21814:9;21810:17;21803:47;21867:131;21993:4;21867:131;:::i;:::-;21859:139;;21586:419;;;:::o;22011:175::-;22151:27;22147:1;22139:6;22135:14;22128:51;22011:175;:::o;22192:366::-;22334:3;22355:67;22419:2;22414:3;22355:67;:::i;:::-;22348:74;;22431:93;22520:3;22431:93;:::i;:::-;22549:2;22544:3;22540:12;22533:19;;22192:366;;;:::o;22564:419::-;22730:4;22768:2;22757:9;22753:18;22745:26;;22817:9;22811:4;22807:20;22803:1;22792:9;22788:17;22781:47;22845:131;22971:4;22845:131;:::i;:::-;22837:139;;22564:419;;;:::o;22989:191::-;23029:3;23048:20;23066:1;23048:20;:::i;:::-;23043:25;;23082:20;23100:1;23082:20;:::i;:::-;23077:25;;23125:1;23122;23118:9;23111:16;;23146:3;23143:1;23140:10;23137:36;;;23153:18;;:::i;:::-;23137:36;22989:191;;;;:::o;23186:176::-;23326:28;23322:1;23314:6;23310:14;23303:52;23186:176;:::o;23368:366::-;23510:3;23531:67;23595:2;23590:3;23531:67;:::i;:::-;23524:74;;23607:93;23696:3;23607:93;:::i;:::-;23725:2;23720:3;23716:12;23709:19;;23368:366;;;:::o;23740:419::-;23906:4;23944:2;23933:9;23929:18;23921:26;;23993:9;23987:4;23983:20;23979:1;23968:9;23964:17;23957:47;24021:131;24147:4;24021:131;:::i;:::-;24013:139;;23740:419;;;:::o;24165:233::-;24204:3;24227:24;24245:5;24227:24;:::i;:::-;24218:33;;24273:66;24266:5;24263:77;24260:103;;24343:18;;:::i;:::-;24260:103;24390:1;24383:5;24379:13;24372:20;;24165:233;;;:::o;24404:169::-;24544:21;24540:1;24532:6;24528:14;24521:45;24404:169;:::o;24579:366::-;24721:3;24742:67;24806:2;24801:3;24742:67;:::i;:::-;24735:74;;24818:93;24907:3;24818:93;:::i;:::-;24936:2;24931:3;24927:12;24920:19;;24579:366;;;:::o;24951:419::-;25117:4;25155:2;25144:9;25140:18;25132:26;;25204:9;25198:4;25194:20;25190:1;25179:9;25175:17;25168:47;25232:131;25358:4;25232:131;:::i;:::-;25224:139;;24951:419;;;:::o;25376:194::-;25416:4;25436:20;25454:1;25436:20;:::i;:::-;25431:25;;25470:20;25488:1;25470:20;:::i;:::-;25465:25;;25514:1;25511;25507:9;25499:17;;25538:1;25532:4;25529:11;25526:37;;;25543:18;;:::i;:::-;25526:37;25376:194;;;;:::o;25576:180::-;25624:77;25621:1;25614:88;25721:4;25718:1;25711:15;25745:4;25742:1;25735:15;25762:180;25810:77;25807:1;25800:88;25907:4;25904:1;25897:15;25931:4;25928:1;25921:15;25948:114;26015:6;26049:5;26043:12;26033:22;;25948:114;;;:::o;26068:184::-;26167:11;26201:6;26196:3;26189:19;26241:4;26236:3;26232:14;26217:29;;26068:184;;;;:::o;26258:132::-;26325:4;26348:3;26340:11;;26378:4;26373:3;26369:14;26361:22;;26258:132;;;:::o;26396:108::-;26473:24;26491:5;26473:24;:::i;:::-;26468:3;26461:37;26396:108;;:::o;26510:179::-;26579:10;26600:46;26642:3;26634:6;26600:46;:::i;:::-;26678:4;26673:3;26669:14;26655:28;;26510:179;;;;:::o;26695:113::-;26765:4;26797;26792:3;26788:14;26780:22;;26695:113;;;:::o;26844:732::-;26963:3;26992:54;27040:5;26992:54;:::i;:::-;27062:86;27141:6;27136:3;27062:86;:::i;:::-;27055:93;;27172:56;27222:5;27172:56;:::i;:::-;27251:7;27282:1;27267:284;27292:6;27289:1;27286:13;27267:284;;;27368:6;27362:13;27395:63;27454:3;27439:13;27395:63;:::i;:::-;27388:70;;27481:60;27534:6;27481:60;:::i;:::-;27471:70;;27327:224;27314:1;27311;27307:9;27302:14;;27267:284;;;27271:14;27567:3;27560:10;;26968:608;;;26844:732;;;;:::o;27582:831::-;27845:4;27883:3;27872:9;27868:19;27860:27;;27897:71;27965:1;27954:9;27950:17;27941:6;27897:71;:::i;:::-;27978:80;28054:2;28043:9;28039:18;28030:6;27978:80;:::i;:::-;28105:9;28099:4;28095:20;28090:2;28079:9;28075:18;28068:48;28133:108;28236:4;28227:6;28133:108;:::i;:::-;28125:116;;28251:72;28319:2;28308:9;28304:18;28295:6;28251:72;:::i;:::-;28333:73;28401:3;28390:9;28386:19;28377:6;28333:73;:::i;:::-;27582:831;;;;;;;;:::o;28419:180::-;28467:77;28464:1;28457:88;28564:4;28561:1;28554:15;28588:4;28585:1;28578:15;28605:185;28645:1;28662:20;28680:1;28662:20;:::i;:::-;28657:25;;28696:20;28714:1;28696:20;:::i;:::-;28691:25;;28735:1;28725:35;;28740:18;;:::i;:::-;28725:35;28782:1;28779;28775:9;28770:14;;28605:185;;;;:::o;28796:220::-;28936:34;28932:1;28924:6;28920:14;28913:58;29005:3;29000:2;28992:6;28988:15;28981:28;28796:220;:::o;29022:366::-;29164:3;29185:67;29249:2;29244:3;29185:67;:::i;:::-;29178:74;;29261:93;29350:3;29261:93;:::i;:::-;29379:2;29374:3;29370:12;29363:19;;29022:366;;;:::o;29394:419::-;29560:4;29598:2;29587:9;29583:18;29575:26;;29647:9;29641:4;29637:20;29633:1;29622:9;29618:17;29611:47;29675:131;29801:4;29675:131;:::i;:::-;29667:139;;29394:419;;;:::o;29819:176::-;29959:28;29955:1;29947:6;29943:14;29936:52;29819:176;:::o;30001:366::-;30143:3;30164:67;30228:2;30223:3;30164:67;:::i;:::-;30157:74;;30240:93;30329:3;30240:93;:::i;:::-;30358:2;30353:3;30349:12;30342:19;;30001:366;;;:::o;30373:419::-;30539:4;30577:2;30566:9;30562:18;30554:26;;30626:9;30620:4;30616:20;30612:1;30601:9;30597:17;30590:47;30654:131;30780:4;30654:131;:::i;:::-;30646:139;;30373:419;;;:::o;30798:177::-;30938:29;30934:1;30926:6;30922:14;30915:53;30798:177;:::o;30981:366::-;31123:3;31144:67;31208:2;31203:3;31144:67;:::i;:::-;31137:74;;31220:93;31309:3;31220:93;:::i;:::-;31338:2;31333:3;31329:12;31322:19;;30981:366;;;:::o;31353:419::-;31519:4;31557:2;31546:9;31542:18;31534:26;;31606:9;31600:4;31596:20;31592:1;31581:9;31577:17;31570:47;31634:131;31760:4;31634:131;:::i;:::-;31626:139;;31353:419;;;:::o
Swarm Source
ipfs://8c5c45e9ace4eb890238ba37625b2203377bbd7f8454ced389438a09b29fc944
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.