Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 CAI
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
356,387.422455587 CAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChainAI
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-21 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; 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 ChainAI 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; address payable private _taxWallet; address private constant deadAddress = address(0xdead); address private uniswapV2Pair; IUniswapV2Router02 private uniswapV2Router; uint256 private constant _initialBuyTax=20; uint256 private constant _initialSellTax=30; uint256 private constant _reduceBuyTaxAt=30; uint256 private constant _reduceSellTaxAt=30; uint256 private constant _preventSwapBefore=30; uint256 private _finalBuyTax=5; uint256 private _finalSellTax=5; uint256 private _buyCount=0; uint256 private _countTax; string private constant _name = unicode"Chain AI"; string private constant _symbol = unicode"CAI"; uint8 private constant _decimals = 9; uint256 private constant _tTotal = 100000000 * 10**_decimals; uint256 private constant _countTrigger = 81000 * 10**_decimals; uint256 public constant _taxSwapThreshold = 200000 * 10**_decimals; uint256 public constant _maxTaxSwap = 1000000 * 10**_decimals; uint256 public _maxTxAmount = 1000000 * 10**_decimals; uint256 public _maxWalletSize = 1000000 * 10**_decimals; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event FinalTax (uint256 _valueBuy, uint256 _valueSell); event TradingActive (bool _tradingOpen,bool _swapEnabled); event maxAmount(uint256 _value); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; excludeFromFee(owner(), true); excludeFromFee(deadAddress, true); excludeFromFee(address(this), true); excludeFromFee(_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) { _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 excludeFromFee(address account, bool excluded) public onlyOwner { _isExcludedFromFee[account] = excluded; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0) && spender != address(0), "ERC20: approve 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) && to != address(0), "ERC20: transfer the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount=0; if (from != owner() && to != owner()) { if(!tradingOpen){ require( _isExcludedFromFee[to] || _isExcludedFromFee[from], "trading not yet open" ); } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); _buyCount++; } if ( to == uniswapV2Pair && from!= address(this) ){ taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax)/100; } else if (from == uniswapV2Pair && to!= address(this) ){ taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax)/100; } _countTax += taxAmount; uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore && _countTax > _countTrigger ){ uint256 getMinValue = (contractTokenBalance > _maxTaxSwap)?_maxTaxSwap:contractTokenBalance; swapTokensForEth((amount > getMinValue)?getMinValue:amount); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } _countTax = 0; } } 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 sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { 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 initialize () external onlyOwner { require(!tradingOpen,"init already called"); uint256 tokenAmount = balanceOf(address(this)).sub(_tTotal.mul(_initialBuyTax).div(100)); 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), tokenAmount, 0, 0, _msgSender(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function openTrading () external onlyOwner { require(!tradingOpen,"trading already open"); swapEnabled = true; tradingOpen = true; emit TradingActive (tradingOpen,swapEnabled); } function removeLimits () external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; emit maxAmount (_tTotal); } function setFinalTax (uint256 _valueBuy, uint256 _valueSell) external onlyOwner { require(_valueBuy <= 25 && _valueSell <= 25 && tradingOpen, "Final Tax: Exceeds value"); _finalBuyTax = _valueBuy; _finalSellTax = _valueSell; emit FinalTax(_valueBuy, _valueSell); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_valueBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_valueSell","type":"uint256"}],"name":"FinalTax","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":false,"internalType":"bool","name":"_tradingOpen","type":"bool"},{"indexed":false,"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"TradingActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"maxAmount","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_valueBuy","type":"uint256"},{"internalType":"uint256","name":"_valueSell","type":"uint256"}],"name":"setFinalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600755600560085560006009556009600a620000239190620005f2565b620f424062000033919062000643565b600b556009600a620000469190620005f2565b620f424062000056919062000643565b600c556000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055503480156200009c57600080fd5b506000620000af6200032c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200015d6200032c60201b60201c565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001ad9190620005f2565b6305f5e100620001be919062000643565b60016000620001d26200032c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000232620002246200033460201b60201c565b60016200035d60201b60201c565b6200024761dead60016200035d60201b60201c565b6200025a3060016200035d60201b60201c565b6200028f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200035d60201b60201c565b6200029f6200032c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620002fe9190620005f2565b6305f5e1006200030f919062000643565b6040516200031e91906200069f565b60405180910390a36200073f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200036d6200032c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620003fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f4906200071d565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004e657808604811115620004be57620004bd62000458565b5b6001851615620004ce5780820291505b8081029050620004de8562000487565b94506200049e565b94509492505050565b600082620005015760019050620005d4565b81620005115760009050620005d4565b81600181146200052a576002811462000535576200056b565b6001915050620005d4565b60ff8411156200054a576200054962000458565b5b8360020a91508482111562000564576200056362000458565b5b50620005d4565b5060208310610133831016604e8410600b8410161715620005a55782820a9050838111156200059f576200059e62000458565b5b620005d4565b620005b4848484600162000494565b92509050818404811115620005ce57620005cd62000458565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005ff82620005db565b91506200060c83620005e5565b92506200063b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004ef565b905092915050565b60006200065082620005db565b91506200065d83620005db565b92508282026200066d81620005db565b9150828204841483151762000687576200068662000458565b5b5092915050565b6200069981620005db565b82525050565b6000602082019050620006b660008301846200068e565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000705602083620006bc565b91506200071282620006cd565b602082019050919050565b600060208201905081810360008301526200073881620006f6565b9050919050565b6133df806200074f6000396000f3fe6080604052600436106101235760003560e01c80638129fc1c116100a0578063a9059cbb11610064578063a9059cbb146103ac578063bf474bed146103e9578063c9567bf914610414578063dd62ed3e1461042b578063df8408fe146104685761012a565b80638129fc1c146102eb57806382116718146103025780638da5cb5b1461032b5780638f9a55c01461035657806395d89b41146103815761012a565b8063313ce567116100e7578063313ce5671461022a57806370a0823114610255578063715018a614610292578063751039fc146102a95780637d1db4a5146102c05761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610491565b6040516101519190612452565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061250d565b6104ce565b60405161018e9190612568565b60405180910390f35b3480156101a357600080fd5b506101ac6104ec565b6040516101b99190612592565b60405180910390f35b3480156101ce57600080fd5b506101d761050b565b6040516101e49190612592565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906125ad565b61052f565b6040516102219190612568565b60405180910390f35b34801561023657600080fd5b5061023f610608565b60405161024c919061261c565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612637565b610611565b6040516102899190612592565b60405180910390f35b34801561029e57600080fd5b506102a761065a565b005b3480156102b557600080fd5b506102be6107ad565b005b3480156102cc57600080fd5b506102d56108dd565b6040516102e29190612592565b60405180910390f35b3480156102f757600080fd5b506103006108e3565b005b34801561030e57600080fd5b5061032960048036038101906103249190612664565b610e3f565b005b34801561033757600080fd5b50610340610f88565b60405161034d91906126b3565b60405180910390f35b34801561036257600080fd5b5061036b610fb1565b6040516103789190612592565b60405180910390f35b34801561038d57600080fd5b50610396610fb7565b6040516103a39190612452565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061250d565b610ff4565b6040516103e09190612568565b60405180910390f35b3480156103f557600080fd5b506103fe611012565b60405161040b9190612592565b60405180910390f35b34801561042057600080fd5b50610429611031565b005b34801561043757600080fd5b50610452600480360381019061044d91906126ce565b6111a5565b60405161045f9190612592565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a919061273a565b61122c565b005b60606040518060400160405280600881526020017f436861696e204149000000000000000000000000000000000000000000000000815250905090565b60006104e26104db61131c565b8484611324565b6001905092915050565b6009600a6104fa91906128dc565b620f42406105089190612927565b81565b60006009600a61051b91906128dc565b6305f5e10061052a9190612927565b905090565b600061053c8484846114b8565b6105fd8461054861131c565b6105f88560405180606001604052806028815260200161338260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae61131c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eaa9092919063ffffffff16565b611324565b600190509392505050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61066261131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906129b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107b561131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906129b5565b60405180910390fd5b6009600a61085091906128dc565b6305f5e10061085f9190612927565b600b819055506009600a61087391906128dc565b6305f5e1006108829190612927565b600c819055507f69ada53addde5123341ce3a822c5f66292103b2771e41e1f3c00c2de8a63a7f96009600a6108b791906128dc565b6305f5e1006108c69190612927565b6040516108d39190612592565b60405180910390a1565b600b5481565b6108eb61131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f906129b5565b60405180910390fd5b600d60009054906101000a900460ff16156109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90612a21565b60405180910390fd5b6000610a27610a106064610a0260146009600a6109e591906128dc565b6305f5e1006109f49190612927565b611f0e90919063ffffffff16565b611f8890919063ffffffff16565b610a1930610611565b611fd290919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ac730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ab391906128dc565b6305f5e100610ac29190612927565b611324565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b589190612a56565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190612a56565b6040518363ffffffff1660e01b8152600401610c22929190612a83565b6020604051808303816000875af1158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c659190612a56565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610cf161131c565b426040518863ffffffff1660e01b8152600401610d1396959493929190612af1565b60606040518083038185885af1158015610d31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d569190612b67565b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610df8929190612bba565b6020604051808303816000875af1158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612bf8565b5050565b610e4761131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb906129b5565b60405180910390fd5b60198211158015610ee6575060198111155b8015610efe5750600d60009054906101000a900460ff165b610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3490612c71565b60405180910390fd5b81600781905550806008819055507f78009e5656a5c60b3c047015fb856b2efbc6f42beed76119406d7d4e3fc161f48282604051610f7c929190612c91565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600381526020017f4341490000000000000000000000000000000000000000000000000000000000815250905090565b600061100861100161131c565b84846114b8565b6001905092915050565b6009600a61102091906128dc565b62030d4061102e9190612927565b81565b61103961131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd906129b5565b60405180910390fd5b600d60009054906101000a900460ff1615611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90612d06565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055507f41a09f17206aad1ccd4bae176b5c5e0b2154e569947545c9019e6bb0cb4ef59c600d60009054906101000a900460ff16600d60029054906101000a900460ff1660405161119b929190612d26565b60405180910390a1565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123461131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b8906129b5565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561138e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612d9b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ab9190612592565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115225750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612e07565b60405180910390fd5b600081116115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e99565b60405180910390fd5b60006115ae610f88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561161c57506115ec610f88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bed57600d60009054906101000a900460ff1661171657600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116d65750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90612f05565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117c15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118175750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118d257600b54821115611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612f71565b60405180910390fd5b600c548261186e85610611565b6118789190612f91565b11156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613011565b60405180910390fd5b600960008154809291906118cc90613031565b91905055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561195b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561199a576064611989601e6009541161197657601e61197a565b6008545b84611f0e90919063ffffffff16565b61199391906130a8565b9050611a5f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a2357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5e576064611a51601e60095411611a3e576014611a42565b6007545b84611f0e90919063ffffffff16565b611a5b91906130a8565b90505b5b80600a6000828254611a719190612f91565b925050819055506000611a8330610611565b9050600d60019054906101000a900460ff16158015611aef5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b075750600d60029054906101000a900460ff165b8015611b2d57506009600a611b1c91906128dc565b62030d40611b2a9190612927565b81115b8015611b3b5750601e600954115b8015611b6357506009600a611b5091906128dc565b62013c68611b5e9190612927565b600a54115b15611beb5760006009600a611b7891906128dc565b620f4240611b869190612927565b8211611b925781611baf565b6009600a611ba091906128dc565b620f4240611bae9190612927565b5b9050611bc8818511611bc15784611bc3565b815b61201c565b60004790506000811115611be057611bdf47612295565b5b6000600a8190555050505b505b6000811115611cf157611c4881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ce89190612592565b60405180910390a35b611d4382600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dea611d9c8284611fd290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e8f8486611fd290919063ffffffff16565b604051611e9c9190612592565b60405180910390a350505050565b6000838311158290611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee99190612452565b60405180910390fd5b5060008385611f0191906130d9565b9050809150509392505050565b6000808303611f205760009050611f82565b60008284611f2e9190612927565b9050828482611f3d91906130a8565b14611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061317f565b60405180910390fd5b809150505b92915050565b6000611fca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061235f565b905092915050565b600061201483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eaa565b905092915050565b6001600d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120545761205361319f565b5b6040519080825280602002602001820160405280156120825781602001602082028036833780820191505090505b509050308160008151811061209a576120996131ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121659190612a56565b81600181518110612179576121786131ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611324565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122449594939291906132bb565b600060405180830381600087803b15801561225e57600080fd5b505af1158015612272573d6000803e3d6000fd5b50505050506000600d60016101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122fd573d6000803e3d6000fd5b5050565b60008082846123109190612f91565b905083811015612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90613361565b60405180910390fd5b8091505092915050565b600080831182906123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d9190612452565b60405180910390fd5b50600083856123b591906130a8565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123fc5780820151818401526020810190506123e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612424826123c2565b61242e81856123cd565b935061243e8185602086016123de565b61244781612408565b840191505092915050565b6000602082019050818103600083015261246c8184612419565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124a482612479565b9050919050565b6124b481612499565b81146124bf57600080fd5b50565b6000813590506124d1816124ab565b92915050565b6000819050919050565b6124ea816124d7565b81146124f557600080fd5b50565b600081359050612507816124e1565b92915050565b6000806040838503121561252457612523612474565b5b6000612532858286016124c2565b9250506020612543858286016124f8565b9150509250929050565b60008115159050919050565b6125628161254d565b82525050565b600060208201905061257d6000830184612559565b92915050565b61258c816124d7565b82525050565b60006020820190506125a76000830184612583565b92915050565b6000806000606084860312156125c6576125c5612474565b5b60006125d4868287016124c2565b93505060206125e5868287016124c2565b92505060406125f6868287016124f8565b9150509250925092565b600060ff82169050919050565b61261681612600565b82525050565b6000602082019050612631600083018461260d565b92915050565b60006020828403121561264d5761264c612474565b5b600061265b848285016124c2565b91505092915050565b6000806040838503121561267b5761267a612474565b5b6000612689858286016124f8565b925050602061269a858286016124f8565b9150509250929050565b6126ad81612499565b82525050565b60006020820190506126c860008301846126a4565b92915050565b600080604083850312156126e5576126e4612474565b5b60006126f3858286016124c2565b9250506020612704858286016124c2565b9150509250929050565b6127178161254d565b811461272257600080fd5b50565b6000813590506127348161270e565b92915050565b6000806040838503121561275157612750612474565b5b600061275f858286016124c2565b925050602061277085828601612725565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612800578086048111156127dc576127db61277a565b5b60018516156127eb5780820291505b80810290506127f9856127a9565b94506127c0565b94509492505050565b60008261281957600190506128d5565b8161282757600090506128d5565b816001811461283d576002811461284757612876565b60019150506128d5565b60ff8411156128595761285861277a565b5b8360020a9150848211156128705761286f61277a565b5b506128d5565b5060208310610133831016604e8410600b84101617156128ab5782820a9050838111156128a6576128a561277a565b5b6128d5565b6128b884848460016127b6565b925090508184048111156128cf576128ce61277a565b5b81810290505b9392505050565b60006128e7826124d7565b91506128f283612600565b925061291f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612809565b905092915050565b6000612932826124d7565b915061293d836124d7565b925082820261294b816124d7565b915082820484148315176129625761296161277a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061299f6020836123cd565b91506129aa82612969565b602082019050919050565b600060208201905081810360008301526129ce81612992565b9050919050565b7f696e697420616c72656164792063616c6c656400000000000000000000000000600082015250565b6000612a0b6013836123cd565b9150612a16826129d5565b602082019050919050565b60006020820190508181036000830152612a3a816129fe565b9050919050565b600081519050612a50816124ab565b92915050565b600060208284031215612a6c57612a6b612474565b5b6000612a7a84828501612a41565b91505092915050565b6000604082019050612a9860008301856126a4565b612aa560208301846126a4565b9392505050565b6000819050919050565b6000819050919050565b6000612adb612ad6612ad184612aac565b612ab6565b6124d7565b9050919050565b612aeb81612ac0565b82525050565b600060c082019050612b0660008301896126a4565b612b136020830188612583565b612b206040830187612ae2565b612b2d6060830186612ae2565b612b3a60808301856126a4565b612b4760a0830184612583565b979650505050505050565b600081519050612b61816124e1565b92915050565b600080600060608486031215612b8057612b7f612474565b5b6000612b8e86828701612b52565b9350506020612b9f86828701612b52565b9250506040612bb086828701612b52565b9150509250925092565b6000604082019050612bcf60008301856126a4565b612bdc6020830184612583565b9392505050565b600081519050612bf28161270e565b92915050565b600060208284031215612c0e57612c0d612474565b5b6000612c1c84828501612be3565b91505092915050565b7f46696e616c205461783a20457863656564732076616c75650000000000000000600082015250565b6000612c5b6018836123cd565b9150612c6682612c25565b602082019050919050565b60006020820190508181036000830152612c8a81612c4e565b9050919050565b6000604082019050612ca66000830185612583565b612cb36020830184612583565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000612cf06014836123cd565b9150612cfb82612cba565b602082019050919050565b60006020820190508181036000830152612d1f81612ce3565b9050919050565b6000604082019050612d3b6000830185612559565b612d486020830184612559565b9392505050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b6000612d85601f836123cd565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b6000612df16020836123cd565b9150612dfc82612dbb565b602082019050919050565b60006020820190508181036000830152612e2081612de4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e836029836123cd565b9150612e8e82612e27565b604082019050919050565b60006020820190508181036000830152612eb281612e76565b9050919050565b7f74726164696e67206e6f7420796574206f70656e000000000000000000000000600082015250565b6000612eef6014836123cd565b9150612efa82612eb9565b602082019050919050565b60006020820190508181036000830152612f1e81612ee2565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f5b6019836123cd565b9150612f6682612f25565b602082019050919050565b60006020820190508181036000830152612f8a81612f4e565b9050919050565b6000612f9c826124d7565b9150612fa7836124d7565b9250828201905080821115612fbf57612fbe61277a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ffb601a836123cd565b915061300682612fc5565b602082019050919050565b6000602082019050818103600083015261302a81612fee565b9050919050565b600061303c826124d7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306e5761306d61277a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130b3826124d7565b91506130be836124d7565b9250826130ce576130cd613079565b5b828204905092915050565b60006130e4826124d7565b91506130ef836124d7565b92508282039050818111156131075761310661277a565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131696021836123cd565b91506131748261310d565b604082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61323281612499565b82525050565b60006132448383613229565b60208301905092915050565b6000602082019050919050565b6000613268826131fd565b6132728185613208565b935061327d83613219565b8060005b838110156132ae5781516132958882613238565b97506132a083613250565b925050600181019050613281565b5085935050505092915050565b600060a0820190506132d06000830188612583565b6132dd6020830187612ae2565b81810360408301526132ef818661325d565b90506132fe60608301856126a4565b61330b6080830184612583565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061334b601b836123cd565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c8cce528a457d4051471fe2964304c9ec4f47b9bd8f636efd7c4676cf09810f264736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101235760003560e01c80638129fc1c116100a0578063a9059cbb11610064578063a9059cbb146103ac578063bf474bed146103e9578063c9567bf914610414578063dd62ed3e1461042b578063df8408fe146104685761012a565b80638129fc1c146102eb57806382116718146103025780638da5cb5b1461032b5780638f9a55c01461035657806395d89b41146103815761012a565b8063313ce567116100e7578063313ce5671461022a57806370a0823114610255578063715018a614610292578063751039fc146102a95780637d1db4a5146102c05761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610491565b6040516101519190612452565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061250d565b6104ce565b60405161018e9190612568565b60405180910390f35b3480156101a357600080fd5b506101ac6104ec565b6040516101b99190612592565b60405180910390f35b3480156101ce57600080fd5b506101d761050b565b6040516101e49190612592565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906125ad565b61052f565b6040516102219190612568565b60405180910390f35b34801561023657600080fd5b5061023f610608565b60405161024c919061261c565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612637565b610611565b6040516102899190612592565b60405180910390f35b34801561029e57600080fd5b506102a761065a565b005b3480156102b557600080fd5b506102be6107ad565b005b3480156102cc57600080fd5b506102d56108dd565b6040516102e29190612592565b60405180910390f35b3480156102f757600080fd5b506103006108e3565b005b34801561030e57600080fd5b5061032960048036038101906103249190612664565b610e3f565b005b34801561033757600080fd5b50610340610f88565b60405161034d91906126b3565b60405180910390f35b34801561036257600080fd5b5061036b610fb1565b6040516103789190612592565b60405180910390f35b34801561038d57600080fd5b50610396610fb7565b6040516103a39190612452565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061250d565b610ff4565b6040516103e09190612568565b60405180910390f35b3480156103f557600080fd5b506103fe611012565b60405161040b9190612592565b60405180910390f35b34801561042057600080fd5b50610429611031565b005b34801561043757600080fd5b50610452600480360381019061044d91906126ce565b6111a5565b60405161045f9190612592565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a919061273a565b61122c565b005b60606040518060400160405280600881526020017f436861696e204149000000000000000000000000000000000000000000000000815250905090565b60006104e26104db61131c565b8484611324565b6001905092915050565b6009600a6104fa91906128dc565b620f42406105089190612927565b81565b60006009600a61051b91906128dc565b6305f5e10061052a9190612927565b905090565b600061053c8484846114b8565b6105fd8461054861131c565b6105f88560405180606001604052806028815260200161338260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae61131c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eaa9092919063ffffffff16565b611324565b600190509392505050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61066261131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906129b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107b561131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906129b5565b60405180910390fd5b6009600a61085091906128dc565b6305f5e10061085f9190612927565b600b819055506009600a61087391906128dc565b6305f5e1006108829190612927565b600c819055507f69ada53addde5123341ce3a822c5f66292103b2771e41e1f3c00c2de8a63a7f96009600a6108b791906128dc565b6305f5e1006108c69190612927565b6040516108d39190612592565b60405180910390a1565b600b5481565b6108eb61131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f906129b5565b60405180910390fd5b600d60009054906101000a900460ff16156109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90612a21565b60405180910390fd5b6000610a27610a106064610a0260146009600a6109e591906128dc565b6305f5e1006109f49190612927565b611f0e90919063ffffffff16565b611f8890919063ffffffff16565b610a1930610611565b611fd290919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ac730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ab391906128dc565b6305f5e100610ac29190612927565b611324565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b589190612a56565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190612a56565b6040518363ffffffff1660e01b8152600401610c22929190612a83565b6020604051808303816000875af1158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c659190612a56565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610cf161131c565b426040518863ffffffff1660e01b8152600401610d1396959493929190612af1565b60606040518083038185885af1158015610d31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d569190612b67565b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610df8929190612bba565b6020604051808303816000875af1158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612bf8565b5050565b610e4761131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb906129b5565b60405180910390fd5b60198211158015610ee6575060198111155b8015610efe5750600d60009054906101000a900460ff165b610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3490612c71565b60405180910390fd5b81600781905550806008819055507f78009e5656a5c60b3c047015fb856b2efbc6f42beed76119406d7d4e3fc161f48282604051610f7c929190612c91565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600381526020017f4341490000000000000000000000000000000000000000000000000000000000815250905090565b600061100861100161131c565b84846114b8565b6001905092915050565b6009600a61102091906128dc565b62030d4061102e9190612927565b81565b61103961131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd906129b5565b60405180910390fd5b600d60009054906101000a900460ff1615611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90612d06565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055507f41a09f17206aad1ccd4bae176b5c5e0b2154e569947545c9019e6bb0cb4ef59c600d60009054906101000a900460ff16600d60029054906101000a900460ff1660405161119b929190612d26565b60405180910390a1565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123461131c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b8906129b5565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561138e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612d9b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ab9190612592565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115225750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612e07565b60405180910390fd5b600081116115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e99565b60405180910390fd5b60006115ae610f88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561161c57506115ec610f88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bed57600d60009054906101000a900460ff1661171657600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116d65750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90612f05565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117c15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118175750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118d257600b54821115611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612f71565b60405180910390fd5b600c548261186e85610611565b6118789190612f91565b11156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613011565b60405180910390fd5b600960008154809291906118cc90613031565b91905055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561195b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561199a576064611989601e6009541161197657601e61197a565b6008545b84611f0e90919063ffffffff16565b61199391906130a8565b9050611a5f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a2357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5e576064611a51601e60095411611a3e576014611a42565b6007545b84611f0e90919063ffffffff16565b611a5b91906130a8565b90505b5b80600a6000828254611a719190612f91565b925050819055506000611a8330610611565b9050600d60019054906101000a900460ff16158015611aef5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b075750600d60029054906101000a900460ff165b8015611b2d57506009600a611b1c91906128dc565b62030d40611b2a9190612927565b81115b8015611b3b5750601e600954115b8015611b6357506009600a611b5091906128dc565b62013c68611b5e9190612927565b600a54115b15611beb5760006009600a611b7891906128dc565b620f4240611b869190612927565b8211611b925781611baf565b6009600a611ba091906128dc565b620f4240611bae9190612927565b5b9050611bc8818511611bc15784611bc3565b815b61201c565b60004790506000811115611be057611bdf47612295565b5b6000600a8190555050505b505b6000811115611cf157611c4881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ce89190612592565b60405180910390a35b611d4382600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dea611d9c8284611fd290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e8f8486611fd290919063ffffffff16565b604051611e9c9190612592565b60405180910390a350505050565b6000838311158290611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee99190612452565b60405180910390fd5b5060008385611f0191906130d9565b9050809150509392505050565b6000808303611f205760009050611f82565b60008284611f2e9190612927565b9050828482611f3d91906130a8565b14611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061317f565b60405180910390fd5b809150505b92915050565b6000611fca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061235f565b905092915050565b600061201483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eaa565b905092915050565b6001600d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120545761205361319f565b5b6040519080825280602002602001820160405280156120825781602001602082028036833780820191505090505b509050308160008151811061209a576120996131ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121659190612a56565b81600181518110612179576121786131ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611324565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122449594939291906132bb565b600060405180830381600087803b15801561225e57600080fd5b505af1158015612272573d6000803e3d6000fd5b50505050506000600d60016101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122fd573d6000803e3d6000fd5b5050565b60008082846123109190612f91565b905083811015612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90613361565b60405180910390fd5b8091505092915050565b600080831182906123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d9190612452565b60405180910390fd5b50600083856123b591906130a8565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123fc5780820151818401526020810190506123e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612424826123c2565b61242e81856123cd565b935061243e8185602086016123de565b61244781612408565b840191505092915050565b6000602082019050818103600083015261246c8184612419565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124a482612479565b9050919050565b6124b481612499565b81146124bf57600080fd5b50565b6000813590506124d1816124ab565b92915050565b6000819050919050565b6124ea816124d7565b81146124f557600080fd5b50565b600081359050612507816124e1565b92915050565b6000806040838503121561252457612523612474565b5b6000612532858286016124c2565b9250506020612543858286016124f8565b9150509250929050565b60008115159050919050565b6125628161254d565b82525050565b600060208201905061257d6000830184612559565b92915050565b61258c816124d7565b82525050565b60006020820190506125a76000830184612583565b92915050565b6000806000606084860312156125c6576125c5612474565b5b60006125d4868287016124c2565b93505060206125e5868287016124c2565b92505060406125f6868287016124f8565b9150509250925092565b600060ff82169050919050565b61261681612600565b82525050565b6000602082019050612631600083018461260d565b92915050565b60006020828403121561264d5761264c612474565b5b600061265b848285016124c2565b91505092915050565b6000806040838503121561267b5761267a612474565b5b6000612689858286016124f8565b925050602061269a858286016124f8565b9150509250929050565b6126ad81612499565b82525050565b60006020820190506126c860008301846126a4565b92915050565b600080604083850312156126e5576126e4612474565b5b60006126f3858286016124c2565b9250506020612704858286016124c2565b9150509250929050565b6127178161254d565b811461272257600080fd5b50565b6000813590506127348161270e565b92915050565b6000806040838503121561275157612750612474565b5b600061275f858286016124c2565b925050602061277085828601612725565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612800578086048111156127dc576127db61277a565b5b60018516156127eb5780820291505b80810290506127f9856127a9565b94506127c0565b94509492505050565b60008261281957600190506128d5565b8161282757600090506128d5565b816001811461283d576002811461284757612876565b60019150506128d5565b60ff8411156128595761285861277a565b5b8360020a9150848211156128705761286f61277a565b5b506128d5565b5060208310610133831016604e8410600b84101617156128ab5782820a9050838111156128a6576128a561277a565b5b6128d5565b6128b884848460016127b6565b925090508184048111156128cf576128ce61277a565b5b81810290505b9392505050565b60006128e7826124d7565b91506128f283612600565b925061291f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612809565b905092915050565b6000612932826124d7565b915061293d836124d7565b925082820261294b816124d7565b915082820484148315176129625761296161277a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061299f6020836123cd565b91506129aa82612969565b602082019050919050565b600060208201905081810360008301526129ce81612992565b9050919050565b7f696e697420616c72656164792063616c6c656400000000000000000000000000600082015250565b6000612a0b6013836123cd565b9150612a16826129d5565b602082019050919050565b60006020820190508181036000830152612a3a816129fe565b9050919050565b600081519050612a50816124ab565b92915050565b600060208284031215612a6c57612a6b612474565b5b6000612a7a84828501612a41565b91505092915050565b6000604082019050612a9860008301856126a4565b612aa560208301846126a4565b9392505050565b6000819050919050565b6000819050919050565b6000612adb612ad6612ad184612aac565b612ab6565b6124d7565b9050919050565b612aeb81612ac0565b82525050565b600060c082019050612b0660008301896126a4565b612b136020830188612583565b612b206040830187612ae2565b612b2d6060830186612ae2565b612b3a60808301856126a4565b612b4760a0830184612583565b979650505050505050565b600081519050612b61816124e1565b92915050565b600080600060608486031215612b8057612b7f612474565b5b6000612b8e86828701612b52565b9350506020612b9f86828701612b52565b9250506040612bb086828701612b52565b9150509250925092565b6000604082019050612bcf60008301856126a4565b612bdc6020830184612583565b9392505050565b600081519050612bf28161270e565b92915050565b600060208284031215612c0e57612c0d612474565b5b6000612c1c84828501612be3565b91505092915050565b7f46696e616c205461783a20457863656564732076616c75650000000000000000600082015250565b6000612c5b6018836123cd565b9150612c6682612c25565b602082019050919050565b60006020820190508181036000830152612c8a81612c4e565b9050919050565b6000604082019050612ca66000830185612583565b612cb36020830184612583565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000612cf06014836123cd565b9150612cfb82612cba565b602082019050919050565b60006020820190508181036000830152612d1f81612ce3565b9050919050565b6000604082019050612d3b6000830185612559565b612d486020830184612559565b9392505050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b6000612d85601f836123cd565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b6000612df16020836123cd565b9150612dfc82612dbb565b602082019050919050565b60006020820190508181036000830152612e2081612de4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e836029836123cd565b9150612e8e82612e27565b604082019050919050565b60006020820190508181036000830152612eb281612e76565b9050919050565b7f74726164696e67206e6f7420796574206f70656e000000000000000000000000600082015250565b6000612eef6014836123cd565b9150612efa82612eb9565b602082019050919050565b60006020820190508181036000830152612f1e81612ee2565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f5b6019836123cd565b9150612f6682612f25565b602082019050919050565b60006020820190508181036000830152612f8a81612f4e565b9050919050565b6000612f9c826124d7565b9150612fa7836124d7565b9250828201905080821115612fbf57612fbe61277a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ffb601a836123cd565b915061300682612fc5565b602082019050919050565b6000602082019050818103600083015261302a81612fee565b9050919050565b600061303c826124d7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306e5761306d61277a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130b3826124d7565b91506130be836124d7565b9250826130ce576130cd613079565b5b828204905092915050565b60006130e4826124d7565b91506130ef836124d7565b92508282039050818111156131075761310661277a565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131696021836123cd565b91506131748261310d565b604082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61323281612499565b82525050565b60006132448383613229565b60208301905092915050565b6000602082019050919050565b6000613268826131fd565b6132728185613208565b935061327d83613219565b8060005b838110156132ae5781516132958882613238565b97506132a083613250565b925050600181019050613281565b5085935050505092915050565b600060a0820190506132d06000830188612583565b6132dd6020830187612ae2565b81810360408301526132ef818661325d565b90506132fe60608301856126a4565b61330b6080830184612583565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061334b601b836123cd565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c8cce528a457d4051471fe2964304c9ec4f47b9bd8f636efd7c4676cf09810f264736f6c63430008130033
Deployed Bytecode Sourcemap
3469:8552:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5637:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6470:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4708:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6639:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5823:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6017:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2552:148;;;;;;;;;;;;;:::i;:::-;;11509:155;;;;;;;;;;;;;:::i;:::-;;4777:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10428:846;;;;;;;;;;;;;:::i;:::-;;11676:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2338:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4837:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5728:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6144:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4634:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11282:219;;;;;;;;;;;;;:::i;:::-;;6319:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6960:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5637:83;5674:13;5707:5;;;;;;;;;;;;;;;;;5700:12;;5637:83;:::o;6470:161::-;6545:4;6562:39;6571:12;:10;:12::i;:::-;6585:7;6594:6;6562:8;:39::i;:::-;6619:4;6612:11;;6470:161;;;;:::o;4708:62::-;4490:1;4757:2;:13;;;;:::i;:::-;4747:7;:23;;;;:::i;:::-;4708:62;:::o;5914:95::-;5967:7;4490:1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;5987:14;;5914:95;:::o;6639:313::-;6737:4;6754:36;6764:6;6772:9;6783:6;6754:9;:36::i;:::-;6801:121;6810:6;6818:12;:10;:12::i;:::-;6832:89;6870:6;6832:89;;;;;;;;;;;;;;;;;:11;:19;6844:6;6832:19;;;;;;;;;;;;;;;:33;6852:12;:10;:12::i;:::-;6832:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6801:8;:121::i;:::-;6940:4;6933:11;;6639:313;;;;;:::o;5823:83::-;5864:5;4490:1;5882:16;;5823:83;:::o;6017:119::-;6083:7;6110:9;:18;6120:7;6110:18;;;;;;;;;;;;;;;;6103:25;;6017:119;;;:::o;2552:148::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2659:1:::1;2622:40;;2643:6;::::0;::::1;;;;;;;;2622:40;;;;;;;;;;;;2690:1;2673:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2552:148::o:0;11509:155::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4490:1:::1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;11564:12;:22;;;;4490:1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;11597:14;:24;;;;11637:19;4490:1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;11637:19;;;;;;:::i;:::-;;;;;;;;11509:155::o:0;4777:53::-;;;;:::o;10428:846::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10490:11:::1;;;;;;;;;;;10489:12;10481:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10535:19;10557:66;10586:36;10618:3;10586:27;3978:2;4490:1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;10586:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;10557:24;10575:4;10557:9;:24::i;:::-;:28;;:66;;;;:::i;:::-;10535:88;;10671:42;10634:15;;:80;;;;;;;;;;;;;;;;;;10725:58;10742:4;10757:15;;;;;;;;;;;4490:1;4545:2;:13;;;;:::i;:::-;4533:9;:25;;;;:::i;:::-;10725:8;:58::i;:::-;10842:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10810:83;;;10902:4;10923:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10810:146;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10794:13;;:162;;;;;;;;;;;;;;;;;;10967:15;;;;;;;;;;;:31;;;11006:21;11052:4;11072:11;11098:1;11114::::0;11130:12:::1;:10;:12::i;:::-;11157:15;10967:216;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11201:13;;;;;;;;;;;11194:29;;;11232:15;;;;;;;;;;;11250:14;11194:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10470:804;10428:846::o:0;11676:305::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11788:2:::1;11775:9;:15;;:35;;;;;11808:2;11794:10;:16;;11775:35;:50;;;;;11814:11;;;;;;;;;;;11775:50;11767:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11880:9;11865:12;:24;;;;11916:10;11900:13;:26;;;;11942:31;11951:9;11962:10;11942:31;;;;;;;:::i;:::-;;;;;;;;11676:305:::0;;:::o;2338:79::-;2376:7;2403:6;;;;;;;;;;;2396:13;;2338:79;:::o;4837:55::-;;;;:::o;5728:87::-;5767:13;5800:7;;;;;;;;;;;;;;;;;5793:14;;5728:87;:::o;6144:167::-;6222:4;6239:42;6249:12;:10;:12::i;:::-;6263:9;6274:6;6239:9;:42::i;:::-;6299:4;6292:11;;6144:167;;;;:::o;4634:67::-;4490:1;4688:2;:13;;;;:::i;:::-;4679:6;:22;;;;:::i;:::-;4634:67;:::o;11282:219::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11345:11:::1;;;;;;;;;;;11344:12;11336:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11405:4;11391:11;;:18;;;;;;;;;;;;;;;;;;11434:4;11420:11;;:18;;;;;;;;;;;;;;;;;;11454:39;11469:11;;;;;;;;;;;11481;;;;;;;;;;;11454:39;;;;;;;:::i;:::-;;;;;;;;11282:219::o:0;6319:143::-;6400:7;6427:11;:18;6439:5;6427:18;;;;;;;;;;;;;;;:27;6446:7;6427:27;;;;;;;;;;;;;;;;6420:34;;6319:143;;;;:::o;6960:130::-;2475:12;:10;:12::i;:::-;2465:22;;:6;;;;;;;;;;:22;;;2457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7074:8:::1;7044:18;:27;7063:7;7044:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;6960:130:::0;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;7098:276::-;7208:1;7191:19;;:5;:19;;;;:44;;;;;7233:1;7214:21;;:7;:21;;;;7191:44;7183:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;7312:6;7282:11;:18;7294:5;7282:18;;;;;;;;;;;;;;;:27;7301:7;7282:27;;;;;;;;;;;;;;;:36;;;;7350:7;7334:32;;7343:5;7334:32;;;7359:6;7334:32;;;;;;:::i;:::-;;;;;;;;7098:276;;;:::o;7382:2447::-;7486:1;7470:18;;:4;:18;;;;:38;;;;;7506:1;7492:16;;:2;:16;;;;7470:38;7462:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:1;7564:6;:10;7556:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7631:17;7675:7;:5;:7::i;:::-;7667:15;;:4;:15;;;;:32;;;;;7692:7;:5;:7::i;:::-;7686:13;;:2;:13;;;;7667:32;7663:1810;;;7723:11;;;;;;;;;;;7719:195;;7784:18;:22;7803:2;7784:22;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;7810:18;:24;7829:4;7810:24;;;;;;;;;;;;;;;;;;;;;;;;;7784:50;7754:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;7719:195;7942:13;;;;;;;;;;;7934:21;;:4;:21;;;:55;;;;;7973:15;;;;;;;;;;;7959:30;;:2;:30;;;;7934:55;:83;;;;;7995:18;:22;8014:2;7995:22;;;;;;;;;;;;;;;;;;;;;;;;;7993:24;7934:83;7930:313;;;8057:12;;8047:6;:22;;8039:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8152:14;;8142:6;8126:13;8136:2;8126:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8118:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8216:9;;:11;;;;;;;;;:::i;:::-;;;;;;7930:313;8282:13;;;;;;;;;;;8276:19;;:2;:19;;;:43;;;;;8314:4;8299:20;;:4;:20;;;;8276:43;8271:362;;;8423:3;8352:70;4129:2;8364:9;;:26;8363:58;;4028:2;8363:58;;;8392:13;;8363:58;8352:6;:10;;:70;;;;:::i;:::-;:74;;;;:::i;:::-;8340:86;;8271:362;;;8478:13;;;;;;;;;;;8470:21;;:4;:21;;;:43;;;;;8508:4;8495:18;;:2;:18;;;;8470:43;8466:167;;;8614:3;8546:67;4078:2;8558:9;;:25;8557:55;;3978:2;8557:55;;;8585:12;;8557:55;8546:6;:10;;:67;;;;:::i;:::-;:71;;;;:::i;:::-;8534:83;;8466:167;8271:362;8662:9;8649;;:22;;;;;;;:::i;:::-;;;;;;;;8686:28;8717:24;8735:4;8717:9;:24::i;:::-;8686:55;;8779:6;;;;;;;;;;;8778:7;:48;;;;;8813:13;;;;;;;;;;;8807:19;;:2;:19;;;8778:48;:81;;;;;8848:11;;;;;;;;;;;8778:81;:143;;;;;4490:1;4688:2;:13;;;;:::i;:::-;4679:6;:22;;;;:::i;:::-;8881:20;:40;8778:143;:195;;;;;4182:2;8943:9;;:30;8778:195;:241;;;;;4490:1;4614:2;:13;;;;:::i;:::-;4606:5;:21;;;;:::i;:::-;8994:9;;:25;8778:241;8756:706;;;9053:19;4490:1;4757:2;:13;;;;:::i;:::-;4747:7;:23;;;;:::i;:::-;9076:20;:34;9075:69;;9124:20;9075:69;;;4490:1;4757:2;:13;;;;:::i;:::-;4747:7;:23;;;;:::i;:::-;9075:69;9053:91;;9163:59;9190:11;9181:6;:20;9180:41;;9215:6;9180:41;;;9203:11;9180:41;9163:16;:59::i;:::-;9241:26;9270:21;9241:50;;9334:1;9313:18;:22;9310:105;;;9360:35;9373:21;9360:12;:35::i;:::-;9310:105;9445:1;9433:9;:13;;;;9034:428;;8756:706;7701:1772;7663:1810;9498:1;9488:9;:11;9485:161;;;9538:39;9567:9;9538;:24;9556:4;9538:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9513:9;:24;9531:4;9513:24;;;;;;;;;;;;;;;:64;;;;9618:4;9595:39;;9604:4;9595:39;;;9624:9;9595:39;;;;;;:::i;:::-;;;;;;;;9485:161;9672:27;9692:6;9672:9;:15;9682:4;9672:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9656:9;:15;9666:4;9656:15;;;;;;;;;;;;;;;:43;;;;9724:40;9742:21;9753:9;9742:6;:10;;:21;;;;:::i;:::-;9724:9;:13;9734:2;9724:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9710:9;:13;9720:2;9710:13;;;;;;;;;;;;;;;:54;;;;9795:2;9780:41;;9789:4;9780:41;;;9799:21;9810:9;9799:6;:10;;:21;;;;:::i;:::-;9780:41;;;;;;:::i;:::-;;;;;;;;7451:2378;7382:2447;;;:::o;1232:190::-;1318:7;1351:1;1346;:6;;1354:12;1338:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1378:9;1394:1;1390;:5;;;;:::i;:::-;1378:17;;1413:1;1406:8;;;1232:190;;;;;:::o;1430:246::-;1488:7;1517:1;1512;:6;1508:47;;1542:1;1535:8;;;;1508:47;1565:9;1581:1;1577;:5;;;;:::i;:::-;1565:17;;1610:1;1605;1601;:5;;;;:::i;:::-;:10;1593:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1667:1;1660:8;;;1430:246;;;;;:::o;1684:132::-;1742:7;1769:39;1773:1;1776;1769:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1762:46;;1684:132;;;;:::o;1088:136::-;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1166:50;;1088:136;;;;:::o;9937:483::-;5216:4;5207:6;;:13;;;;;;;;;;;;;;;;;;10015:21:::1;10053:1;10039:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10015:40;;10084:4;10066;10071:1;10066:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10110:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10100:4;10105:1;10100:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10143:62;10160:4;10175:15;;;;;;;;;;;10193:11;10143:8;:62::i;:::-;10216:15;;;;;;;;;;;:66;;;10297:11;10323:1;10339:4;10366;10386:15;10216:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10004:416;5252:5:::0;5243:6;;:14;;;;;;;;;;;;;;;;;;9937:483;:::o;9837:92::-;9894:10;;;;;;;;;;;:19;;:27;9914:6;9894:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9837:92;:::o;901:179::-;959:7;979:9;995:1;991;:5;;;;:::i;:::-;979:17;;1020:1;1015;:6;;1007:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1071:1;1064:8;;;901:179;;;;:::o;1824:189::-;1910:7;1942:1;1938;:5;1945:12;1930:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1969:9;1985:1;1981;:5;;;;:::i;:::-;1969:17;;2004:1;1997:8;;;1824:189;;;;;:::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:474::-;5256:6;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:118::-;5755:24;5773:5;5755:24;:::i;:::-;5750:3;5743:37;5668:118;;:::o;5792:222::-;5885:4;5923:2;5912:9;5908:18;5900:26;;5936:71;6004:1;5993:9;5989:17;5980:6;5936:71;:::i;:::-;5792:222;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:116::-;6570:21;6585:5;6570:21;:::i;:::-;6563:5;6560:32;6550:60;;6606:1;6603;6596:12;6550:60;6500:116;:::o;6622:133::-;6665:5;6703:6;6690:20;6681:29;;6719:30;6743:5;6719:30;:::i;:::-;6622:133;;;;:::o;6761:468::-;6826:6;6834;6883:2;6871:9;6862:7;6858:23;6854:32;6851:119;;;6889:79;;:::i;:::-;6851:119;7009:1;7034:53;7079:7;7070:6;7059:9;7055:22;7034:53;:::i;:::-;7024:63;;6980:117;7136:2;7162:50;7204:7;7195:6;7184:9;7180:22;7162:50;:::i;:::-;7152:60;;7107:115;6761:468;;;;;:::o;7235:180::-;7283:77;7280:1;7273:88;7380:4;7377:1;7370:15;7404:4;7401:1;7394:15;7421:102;7463:8;7510:5;7507:1;7503:13;7482:34;;7421:102;;;:::o;7529:848::-;7590:5;7597:4;7621:6;7612:15;;7645:5;7636:14;;7659:712;7680:1;7670:8;7667:15;7659:712;;;7775:4;7770:3;7766:14;7760:4;7757:24;7754:50;;;7784:18;;:::i;:::-;7754:50;7834:1;7824:8;7820:16;7817:451;;;8249:4;8242:5;8238:16;8229:25;;7817:451;8299:4;8293;8289:15;8281:23;;8329:32;8352:8;8329:32;:::i;:::-;8317:44;;7659:712;;;7529:848;;;;;;;:::o;8383:1073::-;8437:5;8628:8;8618:40;;8649:1;8640:10;;8651:5;;8618:40;8677:4;8667:36;;8694:1;8685:10;;8696:5;;8667:36;8763:4;8811:1;8806:27;;;;8847:1;8842:191;;;;8756:277;;8806:27;8824:1;8815:10;;8826:5;;;8842:191;8887:3;8877:8;8874:17;8871:43;;;8894:18;;:::i;:::-;8871:43;8943:8;8940:1;8936:16;8927:25;;8978:3;8971:5;8968:14;8965:40;;;8985:18;;:::i;:::-;8965:40;9018:5;;;8756:277;;9142:2;9132:8;9129:16;9123:3;9117:4;9114:13;9110:36;9092:2;9082:8;9079:16;9074:2;9068:4;9065:12;9061:35;9045:111;9042:246;;;9198:8;9192:4;9188:19;9179:28;;9233:3;9226:5;9223:14;9220:40;;;9240:18;;:::i;:::-;9220:40;9273:5;;9042:246;9313:42;9351:3;9341:8;9335:4;9332:1;9313:42;:::i;:::-;9298:57;;;;9387:4;9382:3;9378:14;9371:5;9368:25;9365:51;;;9396:18;;:::i;:::-;9365:51;9445:4;9438:5;9434:16;9425:25;;8383:1073;;;;;;:::o;9462:281::-;9520:5;9544:23;9562:4;9544:23;:::i;:::-;9536:31;;9588:25;9604:8;9588:25;:::i;:::-;9576:37;;9632:104;9669:66;9659:8;9653:4;9632:104;:::i;:::-;9623:113;;9462:281;;;;:::o;9749:410::-;9789:7;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9846:20;9864:1;9846:20;:::i;:::-;9841:25;;9901:1;9898;9894:9;9923:30;9941:11;9923:30;:::i;:::-;9912:41;;10102:1;10093:7;10089:15;10086:1;10083:22;10063:1;10056:9;10036:83;10013:139;;10132:18;;:::i;:::-;10013:139;9797:362;9749:410;;;;:::o;10165:182::-;10305:34;10301:1;10293:6;10289:14;10282:58;10165:182;:::o;10353:366::-;10495:3;10516:67;10580:2;10575:3;10516:67;:::i;:::-;10509:74;;10592:93;10681:3;10592:93;:::i;:::-;10710:2;10705:3;10701:12;10694:19;;10353:366;;;:::o;10725:419::-;10891:4;10929:2;10918:9;10914:18;10906:26;;10978:9;10972:4;10968:20;10964:1;10953:9;10949:17;10942:47;11006:131;11132:4;11006:131;:::i;:::-;10998:139;;10725:419;;;:::o;11150:169::-;11290:21;11286:1;11278:6;11274:14;11267:45;11150:169;:::o;11325:366::-;11467:3;11488:67;11552:2;11547:3;11488:67;:::i;:::-;11481:74;;11564:93;11653:3;11564:93;:::i;:::-;11682:2;11677:3;11673:12;11666:19;;11325:366;;;:::o;11697:419::-;11863:4;11901:2;11890:9;11886:18;11878:26;;11950:9;11944:4;11940:20;11936:1;11925:9;11921:17;11914:47;11978:131;12104:4;11978:131;:::i;:::-;11970:139;;11697:419;;;:::o;12122:143::-;12179:5;12210:6;12204:13;12195:22;;12226:33;12253:5;12226:33;:::i;:::-;12122:143;;;;:::o;12271:351::-;12341:6;12390:2;12378:9;12369:7;12365:23;12361:32;12358:119;;;12396:79;;:::i;:::-;12358:119;12516:1;12541:64;12597:7;12588:6;12577:9;12573:22;12541:64;:::i;:::-;12531:74;;12487:128;12271:351;;;;:::o;12628:332::-;12749:4;12787:2;12776:9;12772:18;12764:26;;12800:71;12868:1;12857:9;12853:17;12844:6;12800:71;:::i;:::-;12881:72;12949:2;12938:9;12934:18;12925:6;12881:72;:::i;:::-;12628:332;;;;;:::o;12966:85::-;13011:7;13040:5;13029:16;;12966:85;;;:::o;13057:60::-;13085:3;13106:5;13099:12;;13057:60;;;:::o;13123:158::-;13181:9;13214:61;13232:42;13241:32;13267:5;13241:32;:::i;:::-;13232:42;:::i;:::-;13214:61;:::i;:::-;13201:74;;13123:158;;;:::o;13287:147::-;13382:45;13421:5;13382:45;:::i;:::-;13377:3;13370:58;13287:147;;:::o;13440:807::-;13689:4;13727:3;13716:9;13712:19;13704:27;;13741:71;13809:1;13798:9;13794:17;13785:6;13741:71;:::i;:::-;13822:72;13890:2;13879:9;13875:18;13866:6;13822:72;:::i;:::-;13904:80;13980:2;13969:9;13965:18;13956:6;13904:80;:::i;:::-;13994;14070:2;14059:9;14055:18;14046:6;13994:80;:::i;:::-;14084:73;14152:3;14141:9;14137:19;14128:6;14084:73;:::i;:::-;14167;14235:3;14224:9;14220:19;14211:6;14167:73;:::i;:::-;13440:807;;;;;;;;;:::o;14253:143::-;14310:5;14341:6;14335:13;14326:22;;14357:33;14384:5;14357:33;:::i;:::-;14253:143;;;;:::o;14402:663::-;14490:6;14498;14506;14555:2;14543:9;14534:7;14530:23;14526:32;14523:119;;;14561:79;;:::i;:::-;14523:119;14681:1;14706:64;14762:7;14753:6;14742:9;14738:22;14706:64;:::i;:::-;14696:74;;14652:128;14819:2;14845:64;14901:7;14892:6;14881:9;14877:22;14845:64;:::i;:::-;14835:74;;14790:129;14958:2;14984:64;15040:7;15031:6;15020:9;15016:22;14984:64;:::i;:::-;14974:74;;14929:129;14402:663;;;;;:::o;15071:332::-;15192:4;15230:2;15219:9;15215:18;15207:26;;15243:71;15311:1;15300:9;15296:17;15287:6;15243:71;:::i;:::-;15324:72;15392:2;15381:9;15377:18;15368:6;15324:72;:::i;:::-;15071:332;;;;;:::o;15409:137::-;15463:5;15494:6;15488:13;15479:22;;15510:30;15534:5;15510:30;:::i;:::-;15409:137;;;;:::o;15552:345::-;15619:6;15668:2;15656:9;15647:7;15643:23;15639:32;15636:119;;;15674:79;;:::i;:::-;15636:119;15794:1;15819:61;15872:7;15863:6;15852:9;15848:22;15819:61;:::i;:::-;15809:71;;15765:125;15552:345;;;;:::o;15903:174::-;16043:26;16039:1;16031:6;16027:14;16020:50;15903:174;:::o;16083:366::-;16225:3;16246:67;16310:2;16305:3;16246:67;:::i;:::-;16239:74;;16322:93;16411:3;16322:93;:::i;:::-;16440:2;16435:3;16431:12;16424:19;;16083:366;;;:::o;16455:419::-;16621:4;16659:2;16648:9;16644:18;16636:26;;16708:9;16702:4;16698:20;16694:1;16683:9;16679:17;16672:47;16736:131;16862:4;16736:131;:::i;:::-;16728:139;;16455:419;;;:::o;16880:332::-;17001:4;17039:2;17028:9;17024:18;17016:26;;17052:71;17120:1;17109:9;17105:17;17096:6;17052:71;:::i;:::-;17133:72;17201:2;17190:9;17186:18;17177:6;17133:72;:::i;:::-;16880:332;;;;;:::o;17218:170::-;17358:22;17354:1;17346:6;17342:14;17335:46;17218:170;:::o;17394:366::-;17536:3;17557:67;17621:2;17616:3;17557:67;:::i;:::-;17550:74;;17633:93;17722:3;17633:93;:::i;:::-;17751:2;17746:3;17742:12;17735:19;;17394:366;;;:::o;17766:419::-;17932:4;17970:2;17959:9;17955:18;17947:26;;18019:9;18013:4;18009:20;18005:1;17994:9;17990:17;17983:47;18047:131;18173:4;18047:131;:::i;:::-;18039:139;;17766:419;;;:::o;18191:308::-;18300:4;18338:2;18327:9;18323:18;18315:26;;18351:65;18413:1;18402:9;18398:17;18389:6;18351:65;:::i;:::-;18426:66;18488:2;18477:9;18473:18;18464:6;18426:66;:::i;:::-;18191:308;;;;;:::o;18505:181::-;18645:33;18641:1;18633:6;18629:14;18622:57;18505:181;:::o;18692:366::-;18834:3;18855:67;18919:2;18914:3;18855:67;:::i;:::-;18848:74;;18931:93;19020:3;18931:93;:::i;:::-;19049:2;19044:3;19040:12;19033:19;;18692:366;;;:::o;19064:419::-;19230:4;19268:2;19257:9;19253:18;19245:26;;19317:9;19311:4;19307:20;19303:1;19292:9;19288:17;19281:47;19345:131;19471:4;19345:131;:::i;:::-;19337:139;;19064:419;;;:::o;19489:182::-;19629:34;19625:1;19617:6;19613:14;19606:58;19489:182;:::o;19677:366::-;19819:3;19840:67;19904:2;19899:3;19840:67;:::i;:::-;19833:74;;19916:93;20005:3;19916:93;:::i;:::-;20034:2;20029:3;20025:12;20018:19;;19677:366;;;:::o;20049:419::-;20215:4;20253:2;20242:9;20238:18;20230:26;;20302:9;20296:4;20292:20;20288:1;20277:9;20273:17;20266:47;20330:131;20456:4;20330:131;:::i;:::-;20322:139;;20049:419;;;:::o;20474:228::-;20614:34;20610:1;20602:6;20598:14;20591:58;20683:11;20678:2;20670:6;20666:15;20659:36;20474:228;:::o;20708:366::-;20850:3;20871:67;20935:2;20930:3;20871:67;:::i;:::-;20864:74;;20947:93;21036:3;20947:93;:::i;:::-;21065:2;21060:3;21056:12;21049:19;;20708:366;;;:::o;21080:419::-;21246:4;21284:2;21273:9;21269:18;21261:26;;21333:9;21327:4;21323:20;21319:1;21308:9;21304:17;21297:47;21361:131;21487:4;21361:131;:::i;:::-;21353:139;;21080:419;;;:::o;21505:170::-;21645:22;21641:1;21633:6;21629:14;21622:46;21505:170;:::o;21681:366::-;21823:3;21844:67;21908:2;21903:3;21844:67;:::i;:::-;21837:74;;21920:93;22009:3;21920:93;:::i;:::-;22038:2;22033:3;22029:12;22022:19;;21681:366;;;:::o;22053:419::-;22219:4;22257:2;22246:9;22242:18;22234:26;;22306:9;22300:4;22296:20;22292:1;22281:9;22277:17;22270:47;22334:131;22460:4;22334:131;:::i;:::-;22326:139;;22053:419;;;:::o;22478:175::-;22618:27;22614:1;22606:6;22602:14;22595:51;22478:175;:::o;22659:366::-;22801:3;22822:67;22886:2;22881:3;22822:67;:::i;:::-;22815:74;;22898:93;22987:3;22898:93;:::i;:::-;23016:2;23011:3;23007:12;23000:19;;22659:366;;;:::o;23031:419::-;23197:4;23235:2;23224:9;23220:18;23212:26;;23284:9;23278:4;23274:20;23270:1;23259:9;23255:17;23248:47;23312:131;23438:4;23312:131;:::i;:::-;23304:139;;23031:419;;;:::o;23456:191::-;23496:3;23515:20;23533:1;23515:20;:::i;:::-;23510:25;;23549:20;23567:1;23549:20;:::i;:::-;23544:25;;23592:1;23589;23585:9;23578:16;;23613:3;23610:1;23607:10;23604:36;;;23620:18;;:::i;:::-;23604:36;23456:191;;;;:::o;23653:176::-;23793:28;23789:1;23781:6;23777:14;23770:52;23653:176;:::o;23835:366::-;23977:3;23998:67;24062:2;24057:3;23998:67;:::i;:::-;23991:74;;24074:93;24163:3;24074:93;:::i;:::-;24192:2;24187:3;24183:12;24176:19;;23835:366;;;:::o;24207:419::-;24373:4;24411:2;24400:9;24396:18;24388:26;;24460:9;24454:4;24450:20;24446:1;24435:9;24431:17;24424:47;24488:131;24614:4;24488:131;:::i;:::-;24480:139;;24207:419;;;:::o;24632:233::-;24671:3;24694:24;24712:5;24694:24;:::i;:::-;24685:33;;24740:66;24733:5;24730:77;24727:103;;24810:18;;:::i;:::-;24727:103;24857:1;24850:5;24846:13;24839:20;;24632:233;;;:::o;24871:180::-;24919:77;24916:1;24909:88;25016:4;25013:1;25006:15;25040:4;25037:1;25030:15;25057:185;25097:1;25114:20;25132:1;25114:20;:::i;:::-;25109:25;;25148:20;25166:1;25148:20;:::i;:::-;25143:25;;25187:1;25177:35;;25192:18;;:::i;:::-;25177:35;25234:1;25231;25227:9;25222:14;;25057:185;;;;:::o;25248:194::-;25288:4;25308:20;25326:1;25308:20;:::i;:::-;25303:25;;25342:20;25360:1;25342:20;:::i;:::-;25337:25;;25386:1;25383;25379:9;25371:17;;25410:1;25404:4;25401:11;25398:37;;;25415:18;;:::i;:::-;25398:37;25248:194;;;;:::o;25448:220::-;25588:34;25584:1;25576:6;25572:14;25565:58;25657:3;25652:2;25644:6;25640:15;25633:28;25448:220;:::o;25674:366::-;25816:3;25837:67;25901:2;25896:3;25837:67;:::i;:::-;25830:74;;25913:93;26002:3;25913:93;:::i;:::-;26031:2;26026:3;26022:12;26015:19;;25674:366;;;:::o;26046:419::-;26212:4;26250:2;26239:9;26235:18;26227:26;;26299:9;26293:4;26289:20;26285:1;26274:9;26270:17;26263:47;26327:131;26453:4;26327:131;:::i;:::-;26319:139;;26046:419;;;:::o;26471:180::-;26519:77;26516:1;26509:88;26616:4;26613:1;26606:15;26640:4;26637:1;26630:15;26657:180;26705:77;26702:1;26695:88;26802:4;26799:1;26792:15;26826:4;26823:1;26816:15;26843:114;26910:6;26944:5;26938:12;26928:22;;26843:114;;;:::o;26963:184::-;27062:11;27096:6;27091:3;27084:19;27136:4;27131:3;27127:14;27112:29;;26963:184;;;;:::o;27153:132::-;27220:4;27243:3;27235:11;;27273:4;27268:3;27264:14;27256:22;;27153:132;;;:::o;27291:108::-;27368:24;27386:5;27368:24;:::i;:::-;27363:3;27356:37;27291:108;;:::o;27405:179::-;27474:10;27495:46;27537:3;27529:6;27495:46;:::i;:::-;27573:4;27568:3;27564:14;27550:28;;27405:179;;;;:::o;27590:113::-;27660:4;27692;27687:3;27683:14;27675:22;;27590:113;;;:::o;27739:732::-;27858:3;27887:54;27935:5;27887:54;:::i;:::-;27957:86;28036:6;28031:3;27957:86;:::i;:::-;27950:93;;28067:56;28117:5;28067:56;:::i;:::-;28146:7;28177:1;28162:284;28187:6;28184:1;28181:13;28162:284;;;28263:6;28257:13;28290:63;28349:3;28334:13;28290:63;:::i;:::-;28283:70;;28376:60;28429:6;28376:60;:::i;:::-;28366:70;;28222:224;28209:1;28206;28202:9;28197:14;;28162:284;;;28166:14;28462:3;28455:10;;27863:608;;;27739:732;;;;:::o;28477:831::-;28740:4;28778:3;28767:9;28763:19;28755:27;;28792:71;28860:1;28849:9;28845:17;28836:6;28792:71;:::i;:::-;28873:80;28949:2;28938:9;28934:18;28925:6;28873:80;:::i;:::-;29000:9;28994:4;28990:20;28985:2;28974:9;28970:18;28963:48;29028:108;29131:4;29122:6;29028:108;:::i;:::-;29020:116;;29146:72;29214:2;29203:9;29199:18;29190:6;29146:72;:::i;:::-;29228:73;29296:3;29285:9;29281:19;29272:6;29228:73;:::i;:::-;28477:831;;;;;;;;:::o;29314:177::-;29454:29;29450:1;29442:6;29438:14;29431:53;29314:177;:::o;29497:366::-;29639:3;29660:67;29724:2;29719:3;29660:67;:::i;:::-;29653:74;;29736:93;29825:3;29736:93;:::i;:::-;29854:2;29849:3;29845:12;29838:19;;29497:366;;;:::o;29869:419::-;30035:4;30073:2;30062:9;30058:18;30050:26;;30122:9;30116:4;30112:20;30108:1;30097:9;30093:17;30086:47;30150:131;30276:4;30150:131;:::i;:::-;30142:139;;29869:419;;;:::o
Swarm Source
ipfs://c8cce528a457d4051471fe2964304c9ec4f47b9bd8f636efd7c4676cf09810f2
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.