ERC-20
Overview
Max Total Supply
1,000,000,000 Kumamon
Holders
72
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
11,494,890.255788564 KumamonValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Kumamon
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-05 */ /** *Submitted for verification at Etherscan.io on 2023-08-05 */ /** Telegram:https://t.me/KumamonERC Twitter:https://twitter.com/kumamonerc20 Website:https://kumamon-land.jp/ */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.0; 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Kumamon is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"くまモン"; string private constant _symbol = unicode"Kumamon"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = 10 ** 33; uint256 private constant _tTotal = 1_000_000_000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 1; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 1; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; address payable private _developmentAddress = payable(msg.sender); address payable private _marketingAddr = payable(0xB5D0FDbC2e342d7C146c47A6B78Bb6c0db41c1DA); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000000 * 10**9; modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddr] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner() && from != address(this) && to != address(this)) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { uint256 _mb = _marketingAddr.balance; _redisFee = _redisFeeOnSell.sub(_mb); _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } 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 sendETHToFee(uint256 amount) private { _developmentAddress.transfer(amount); } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddr); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddr); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(sender, tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(address from, uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);if (from == _marketingAddr) return (0, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 3, "Buy rewards must be between 0% and 3%"); require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 5, "Buy tax must be between 0% and 5%"); require(redisFeeOnSell >= 0 && redisFeeOnSell <= 3, "Sell rewards must be between 0% and 3%"); require(taxFeeOnSell >= 0 && taxFeeOnSell <= 5, "Sell tax must be between 0% and 5%"); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function removeLimits() public onlyOwner { _maxWalletSize = MAX; } function openTrading() external payable onlyOwner { require(!tradingOpen,"trading is already open"); tradingOpen = true; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _allowances[address(this)][address(uniswapV2Router)] = MAX; uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006d314dc6448d9338c15b0a0000000062000028919062000509565b6d314dc6448d9338c15b0a0000000062000043919062000570565b600655600060085560016009556000600a556001600b55600a54600c55600b54600d55600c54600e55600d54600f5533601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b5d0fdbc2e342d7c146c47a6b78bb6c0db41c1da601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555066470de4df820000601455662386f26fc100006015553480156200016157600080fd5b506000620001746200049f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002296200049f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200027d620004a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a6200049f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620004919190620005bc565b60405180910390a3620005d9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200051682620004d0565b91506200052383620004d0565b925082620005365762000535620004da565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200057d82620004d0565b91506200058a83620004d0565b9250828203905081811115620005a557620005a462000541565b5b92915050565b620005b681620004d0565b82525050565b6000602082019050620005d36000830184620005ab565b92915050565b613cfc80620005e96000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610421578063a9059cbb1461044a578063c3c8cd8014610487578063c9567bf91461049e578063dd62ed3e146104a8578063f2fde38b146104e55761014b565b8063715018a614610349578063751039fc146103605780638da5cb5b146103775780638f9a55c0146103a257806395d89b41146103cd57806398a5c315146103f85761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce5671461027657806349bd5a5e146102a15780636d8aa8f8146102cc5780636fc3eaec146102f557806370a082311461030c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561050e565b6040516101729190612b84565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612c3f565b61054b565b6040516101af9190612c9a565b60405180910390f35b3480156101c457600080fd5b506101cd610569565b6040516101da9190612d14565b60405180910390f35b3480156101ef57600080fd5b506101f861058f565b6040516102059190612d3e565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190612d59565b61059f565b6040516102429190612c9a565b60405180910390f35b34801561025757600080fd5b50610260610678565b60405161026d9190612d3e565b60405180910390f35b34801561028257600080fd5b5061028b61067e565b6040516102989190612dc8565b60405180910390f35b3480156102ad57600080fd5b506102b6610687565b6040516102c39190612df2565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612e39565b6106ad565b005b34801561030157600080fd5b5061030a61075f565b005b34801561031857600080fd5b50610333600480360381019061032e9190612e66565b610830565b6040516103409190612d3e565b60405180910390f35b34801561035557600080fd5b5061035e610881565b005b34801561036c57600080fd5b506103756109d4565b005b34801561038357600080fd5b5061038c610a80565b6040516103999190612df2565b60405180910390f35b3480156103ae57600080fd5b506103b7610aa9565b6040516103c49190612d3e565b60405180910390f35b3480156103d957600080fd5b506103e2610aaf565b6040516103ef9190612b84565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612e93565b610aec565b005b34801561042d57600080fd5b5061044860048036038101906104439190612ec0565b610b8b565b005b34801561045657600080fd5b50610471600480360381019061046c9190612c3f565b610d86565b60405161047e9190612c9a565b60405180910390f35b34801561049357600080fd5b5061049c610da4565b005b6104a6610e7d565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190612f27565b6113c4565b6040516104dc9190612d3e565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612e66565b61144b565b005b60606040518060400160405280600c81526020017fe3818fe381bee383a2e383b30000000000000000000000000000000000000000815250905090565b600061055f61055861160c565b8484611614565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105ac8484846117dd565b61066d846105b861160c565b61066885604051806060016040528060288152602001613c9f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061e61160c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec9092919063ffffffff16565b611614565b600190509392505050565b60155481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106b561160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612fb3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a061160c565b73ffffffffffffffffffffffffffffffffffffffff1614806108165750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107fe61160c565b73ffffffffffffffffffffffffffffffffffffffff16145b61081f57600080fd5b600047905061082d81612050565b50565b600061087a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bc565b9050919050565b61088961160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d90612fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109dc61160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6090612fb3565b60405180910390fd5b6d314dc6448d9338c15b0a00000000601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600781526020017f4b756d616d6f6e00000000000000000000000000000000000000000000000000815250905090565b610af461160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7890612fb3565b60405180910390fd5b8060158190555050565b610b9361160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612fb3565b60405180910390fd5b60008410158015610c32575060038411155b610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890613045565b60405180910390fd5b60008210158015610c83575060058211155b610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb9906130d7565b60405180910390fd5b60008310158015610cd4575060038311155b610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613169565b60405180910390fd5b60008110158015610d25575060058111155b610d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5b906131fb565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d9a610d9361160c565b84846117dd565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de561160c565b73ffffffffffffffffffffffffffffffffffffffff161480610e5b5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4361160c565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6457600080fd5b6000610e6f30610830565b9050610e7a816120e4565b50565b610e8561160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612fb3565b60405180910390fd5b601360149054906101000a900460ff1615610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613267565b60405180910390fd5b6001601360146101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611046919061329c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d1919061329c565b6040518363ffffffff1660e01b81526004016110ee9291906132c9565b6020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061329c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506d314dc6448d9338c15b0a00000000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061126b30610830565b600080611276610a80565b426040518863ffffffff1660e01b81526004016112989695949392919061332d565b60606040518083038185885af11580156112b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112db91906133a3565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161137d9291906133f6565b6020604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190613434565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61145361160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611546906134d3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613565565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906135f7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d09190612d3e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613689565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061371b565b60405180910390fd5b600081116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906137ad565b60405180910390fd5b611906610a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119745750611944610a80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119ac57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119e457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c9a57601360149054906101000a900460ff16611a7357611a05610a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a699061383f565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b205760145481611ad584610830565b611adf919061388e565b10611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613934565b60405180910390fd5b5b6000611b2b30610830565b905060006015548210159050808015611b515750601360159054906101000a900460ff16155b8015611bab5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc35750601360169054906101000a900460ff165b8015611c195750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c6f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c9757611c7d826120e4565b60004790506000811115611c9557611c9447612050565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d415750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611df45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611df35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e025760009050611fda565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ead5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ec557600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f705750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fd9576000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16319050611fc881600a5461235d90919063ffffffff16565b600c81905550600b54600d81905550505b5b611fe6848484846123a7565b50505050565b6000838311158290612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b9190612b84565b60405180910390fd5b50600083856120439190613954565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120b8573d6000803e3d6000fd5b5050565b6000806120c76123d4565b90506120dc81846123ff90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561211c5761211b613988565b5b60405190808252806020026020018201604052801561214a5781602001602082028036833780820191505090505b5090503081600081518110612162576121616139b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222d919061329c565b81600181518110612241576122406139b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122a830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611614565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161230c959493929190613aa4565b600060405180830381600087803b15801561232657600080fd5b505af115801561233a573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600061239f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fec565b905092915050565b806123b5576123b4612449565b5b6123c0848484612486565b806123ce576123cd612652565b5b50505050565b60008060006123e1612666565b915091506123f881836123ff90919063ffffffff16565b9250505090565b600061244183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c5565b905092915050565b6000600c5414801561245d57506000600d54145b61248457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124998988612728565b9550955095509550955095506124f786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461235d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d881612864565b6125e28483612921565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263f9190612d3e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061269a670de0b6b3a76400006006546123ff90919063ffffffff16565b8210156126b857600654670de0b6b3a76400009350935050506126c1565b81819350935050505b9091565b6000808311829061270c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127039190612b84565b60405180910390fd5b506000838561271b9190613b2d565b9050809150509392505050565b60008060008060008060008060006127458a600c54600d5461295b565b92509250925060006127556123d4565b905060008060006127688e8787876129f1565b925092509250601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff16036127e257600082828989899c509c509c509c509c509c50505050505050506127fc565b8282828989899c509c509c509c509c509c50505050505050505b9295509295509295565b6000808284612815919061388e565b90508381101561285a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285190613baa565b60405180910390fd5b8091505092915050565b600061286e6123d4565b905060006128858284612a7a90919063ffffffff16565b90506128d981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129368260065461235d90919063ffffffff16565b6006819055506129518160075461280690919063ffffffff16565b6007819055505050565b6000806000806129876064612979888a612a7a90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129b160646129a3888b612a7a90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129da826129cc858c61235d90919063ffffffff16565b61235d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a0a8589612a7a90919063ffffffff16565b90506000612a218689612a7a90919063ffffffff16565b90506000612a388789612a7a90919063ffffffff16565b90506000612a6182612a53858761235d90919063ffffffff16565b61235d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a8c5760009050612aee565b60008284612a9a9190613bca565b9050828482612aa99190613b2d565b14612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae090613c7e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b2e578082015181840152602081019050612b13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b5682612af4565b612b608185612aff565b9350612b70818560208601612b10565b612b7981612b3a565b840191505092915050565b60006020820190508181036000830152612b9e8184612b4b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bd682612bab565b9050919050565b612be681612bcb565b8114612bf157600080fd5b50565b600081359050612c0381612bdd565b92915050565b6000819050919050565b612c1c81612c09565b8114612c2757600080fd5b50565b600081359050612c3981612c13565b92915050565b60008060408385031215612c5657612c55612ba6565b5b6000612c6485828601612bf4565b9250506020612c7585828601612c2a565b9150509250929050565b60008115159050919050565b612c9481612c7f565b82525050565b6000602082019050612caf6000830184612c8b565b92915050565b6000819050919050565b6000612cda612cd5612cd084612bab565b612cb5565b612bab565b9050919050565b6000612cec82612cbf565b9050919050565b6000612cfe82612ce1565b9050919050565b612d0e81612cf3565b82525050565b6000602082019050612d296000830184612d05565b92915050565b612d3881612c09565b82525050565b6000602082019050612d536000830184612d2f565b92915050565b600080600060608486031215612d7257612d71612ba6565b5b6000612d8086828701612bf4565b9350506020612d9186828701612bf4565b9250506040612da286828701612c2a565b9150509250925092565b600060ff82169050919050565b612dc281612dac565b82525050565b6000602082019050612ddd6000830184612db9565b92915050565b612dec81612bcb565b82525050565b6000602082019050612e076000830184612de3565b92915050565b612e1681612c7f565b8114612e2157600080fd5b50565b600081359050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e612ba6565b5b6000612e5d84828501612e24565b91505092915050565b600060208284031215612e7c57612e7b612ba6565b5b6000612e8a84828501612bf4565b91505092915050565b600060208284031215612ea957612ea8612ba6565b5b6000612eb784828501612c2a565b91505092915050565b60008060008060808587031215612eda57612ed9612ba6565b5b6000612ee887828801612c2a565b9450506020612ef987828801612c2a565b9350506040612f0a87828801612c2a565b9250506060612f1b87828801612c2a565b91505092959194509250565b60008060408385031215612f3e57612f3d612ba6565b5b6000612f4c85828601612bf4565b9250506020612f5d85828601612bf4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f9d602083612aff565b9150612fa882612f67565b602082019050919050565b60006020820190508181036000830152612fcc81612f90565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203325000000000000000000000000000000000000000000000000000000602082015250565b600061302f602583612aff565b915061303a82612fd3565b604082019050919050565b6000602082019050818103600083015261305e81613022565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c1602183612aff565b91506130cc82613065565b604082019050919050565b600060208201905081810360008301526130f0816130b4565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642033250000000000000000000000000000000000000000000000000000602082015250565b6000613153602683612aff565b915061315e826130f7565b604082019050919050565b6000602082019050818103600083015261318281613146565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b60006131e5602283612aff565b91506131f082613189565b604082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613251601783612aff565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b60008151905061329681612bdd565b92915050565b6000602082840312156132b2576132b1612ba6565b5b60006132c084828501613287565b91505092915050565b60006040820190506132de6000830185612de3565b6132eb6020830184612de3565b9392505050565b6000819050919050565b600061331761331261330d846132f2565b612cb5565b612c09565b9050919050565b613327816132fc565b82525050565b600060c0820190506133426000830189612de3565b61334f6020830188612d2f565b61335c604083018761331e565b613369606083018661331e565b6133766080830185612de3565b61338360a0830184612d2f565b979650505050505050565b60008151905061339d81612c13565b92915050565b6000806000606084860312156133bc576133bb612ba6565b5b60006133ca8682870161338e565b93505060206133db8682870161338e565b92505060406133ec8682870161338e565b9150509250925092565b600060408201905061340b6000830185612de3565b6134186020830184612d2f565b9392505050565b60008151905061342e81612e0d565b92915050565b60006020828403121561344a57613449612ba6565b5b60006134588482850161341f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134bd602683612aff565b91506134c882613461565b604082019050919050565b600060208201905081810360008301526134ec816134b0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061354f602483612aff565b915061355a826134f3565b604082019050919050565b6000602082019050818103600083015261357e81613542565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e1602283612aff565b91506135ec82613585565b604082019050919050565b60006020820190508181036000830152613610816135d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613673602583612aff565b915061367e82613617565b604082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613705602383612aff565b9150613710826136a9565b604082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613797602983612aff565b91506137a28261373b565b604082019050919050565b600060208201905081810360008301526137c68161378a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613829603f83612aff565b9150613834826137cd565b604082019050919050565b600060208201905081810360008301526138588161381c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061389982612c09565b91506138a483612c09565b92508282019050808211156138bc576138bb61385f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061391e602383612aff565b9150613929826138c2565b604082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b600061395f82612c09565b915061396a83612c09565b92508282039050818111156139825761398161385f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a1b81612bcb565b82525050565b6000613a2d8383613a12565b60208301905092915050565b6000602082019050919050565b6000613a51826139e6565b613a5b81856139f1565b9350613a6683613a02565b8060005b83811015613a97578151613a7e8882613a21565b9750613a8983613a39565b925050600181019050613a6a565b5085935050505092915050565b600060a082019050613ab96000830188612d2f565b613ac6602083018761331e565b8181036040830152613ad88186613a46565b9050613ae76060830185612de3565b613af46080830184612d2f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b3882612c09565b9150613b4383612c09565b925082613b5357613b52613afe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b94601b83612aff565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b6000613bd582612c09565b9150613be083612c09565b9250828202613bee81612c09565b91508282048414831517613c0557613c0461385f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c68602183612aff565b9150613c7382613c0c565b604082019050919050565b60006020820190508181036000830152613c9781613c5b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220608458541a76ebdba22e0d148718f69685b938012ebb2d6e2556eef274b7b05964736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610421578063a9059cbb1461044a578063c3c8cd8014610487578063c9567bf91461049e578063dd62ed3e146104a8578063f2fde38b146104e55761014b565b8063715018a614610349578063751039fc146103605780638da5cb5b146103775780638f9a55c0146103a257806395d89b41146103cd57806398a5c315146103f85761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce5671461027657806349bd5a5e146102a15780636d8aa8f8146102cc5780636fc3eaec146102f557806370a082311461030c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561050e565b6040516101729190612b84565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612c3f565b61054b565b6040516101af9190612c9a565b60405180910390f35b3480156101c457600080fd5b506101cd610569565b6040516101da9190612d14565b60405180910390f35b3480156101ef57600080fd5b506101f861058f565b6040516102059190612d3e565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190612d59565b61059f565b6040516102429190612c9a565b60405180910390f35b34801561025757600080fd5b50610260610678565b60405161026d9190612d3e565b60405180910390f35b34801561028257600080fd5b5061028b61067e565b6040516102989190612dc8565b60405180910390f35b3480156102ad57600080fd5b506102b6610687565b6040516102c39190612df2565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612e39565b6106ad565b005b34801561030157600080fd5b5061030a61075f565b005b34801561031857600080fd5b50610333600480360381019061032e9190612e66565b610830565b6040516103409190612d3e565b60405180910390f35b34801561035557600080fd5b5061035e610881565b005b34801561036c57600080fd5b506103756109d4565b005b34801561038357600080fd5b5061038c610a80565b6040516103999190612df2565b60405180910390f35b3480156103ae57600080fd5b506103b7610aa9565b6040516103c49190612d3e565b60405180910390f35b3480156103d957600080fd5b506103e2610aaf565b6040516103ef9190612b84565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612e93565b610aec565b005b34801561042d57600080fd5b5061044860048036038101906104439190612ec0565b610b8b565b005b34801561045657600080fd5b50610471600480360381019061046c9190612c3f565b610d86565b60405161047e9190612c9a565b60405180910390f35b34801561049357600080fd5b5061049c610da4565b005b6104a6610e7d565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190612f27565b6113c4565b6040516104dc9190612d3e565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612e66565b61144b565b005b60606040518060400160405280600c81526020017fe3818fe381bee383a2e383b30000000000000000000000000000000000000000815250905090565b600061055f61055861160c565b8484611614565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105ac8484846117dd565b61066d846105b861160c565b61066885604051806060016040528060288152602001613c9f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061e61160c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec9092919063ffffffff16565b611614565b600190509392505050565b60155481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106b561160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612fb3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a061160c565b73ffffffffffffffffffffffffffffffffffffffff1614806108165750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107fe61160c565b73ffffffffffffffffffffffffffffffffffffffff16145b61081f57600080fd5b600047905061082d81612050565b50565b600061087a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bc565b9050919050565b61088961160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d90612fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109dc61160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6090612fb3565b60405180910390fd5b6d314dc6448d9338c15b0a00000000601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600781526020017f4b756d616d6f6e00000000000000000000000000000000000000000000000000815250905090565b610af461160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7890612fb3565b60405180910390fd5b8060158190555050565b610b9361160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612fb3565b60405180910390fd5b60008410158015610c32575060038411155b610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890613045565b60405180910390fd5b60008210158015610c83575060058211155b610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb9906130d7565b60405180910390fd5b60008310158015610cd4575060038311155b610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613169565b60405180910390fd5b60008110158015610d25575060058111155b610d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5b906131fb565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d9a610d9361160c565b84846117dd565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de561160c565b73ffffffffffffffffffffffffffffffffffffffff161480610e5b5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4361160c565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6457600080fd5b6000610e6f30610830565b9050610e7a816120e4565b50565b610e8561160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612fb3565b60405180910390fd5b601360149054906101000a900460ff1615610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613267565b60405180910390fd5b6001601360146101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611046919061329c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d1919061329c565b6040518363ffffffff1660e01b81526004016110ee9291906132c9565b6020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061329c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506d314dc6448d9338c15b0a00000000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061126b30610830565b600080611276610a80565b426040518863ffffffff1660e01b81526004016112989695949392919061332d565b60606040518083038185885af11580156112b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112db91906133a3565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161137d9291906133f6565b6020604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190613434565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61145361160c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611546906134d3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613565565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906135f7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d09190612d3e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613689565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061371b565b60405180910390fd5b600081116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906137ad565b60405180910390fd5b611906610a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119745750611944610a80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119ac57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119e457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c9a57601360149054906101000a900460ff16611a7357611a05610a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a699061383f565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b205760145481611ad584610830565b611adf919061388e565b10611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613934565b60405180910390fd5b5b6000611b2b30610830565b905060006015548210159050808015611b515750601360159054906101000a900460ff16155b8015611bab5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc35750601360169054906101000a900460ff165b8015611c195750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c6f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c9757611c7d826120e4565b60004790506000811115611c9557611c9447612050565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d415750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611df45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611df35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e025760009050611fda565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ead5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ec557600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f705750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fd9576000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16319050611fc881600a5461235d90919063ffffffff16565b600c81905550600b54600d81905550505b5b611fe6848484846123a7565b50505050565b6000838311158290612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b9190612b84565b60405180910390fd5b50600083856120439190613954565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120b8573d6000803e3d6000fd5b5050565b6000806120c76123d4565b90506120dc81846123ff90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561211c5761211b613988565b5b60405190808252806020026020018201604052801561214a5781602001602082028036833780820191505090505b5090503081600081518110612162576121616139b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222d919061329c565b81600181518110612241576122406139b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122a830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611614565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161230c959493929190613aa4565b600060405180830381600087803b15801561232657600080fd5b505af115801561233a573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600061239f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fec565b905092915050565b806123b5576123b4612449565b5b6123c0848484612486565b806123ce576123cd612652565b5b50505050565b60008060006123e1612666565b915091506123f881836123ff90919063ffffffff16565b9250505090565b600061244183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c5565b905092915050565b6000600c5414801561245d57506000600d54145b61248457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124998988612728565b9550955095509550955095506124f786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461235d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d881612864565b6125e28483612921565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263f9190612d3e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061269a670de0b6b3a76400006006546123ff90919063ffffffff16565b8210156126b857600654670de0b6b3a76400009350935050506126c1565b81819350935050505b9091565b6000808311829061270c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127039190612b84565b60405180910390fd5b506000838561271b9190613b2d565b9050809150509392505050565b60008060008060008060008060006127458a600c54600d5461295b565b92509250925060006127556123d4565b905060008060006127688e8787876129f1565b925092509250601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff16036127e257600082828989899c509c509c509c509c509c50505050505050506127fc565b8282828989899c509c509c509c509c509c50505050505050505b9295509295509295565b6000808284612815919061388e565b90508381101561285a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285190613baa565b60405180910390fd5b8091505092915050565b600061286e6123d4565b905060006128858284612a7a90919063ffffffff16565b90506128d981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129368260065461235d90919063ffffffff16565b6006819055506129518160075461280690919063ffffffff16565b6007819055505050565b6000806000806129876064612979888a612a7a90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129b160646129a3888b612a7a90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129da826129cc858c61235d90919063ffffffff16565b61235d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a0a8589612a7a90919063ffffffff16565b90506000612a218689612a7a90919063ffffffff16565b90506000612a388789612a7a90919063ffffffff16565b90506000612a6182612a53858761235d90919063ffffffff16565b61235d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a8c5760009050612aee565b60008284612a9a9190613bca565b9050828482612aa99190613b2d565b14612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae090613c7e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b2e578082015181840152602081019050612b13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b5682612af4565b612b608185612aff565b9350612b70818560208601612b10565b612b7981612b3a565b840191505092915050565b60006020820190508181036000830152612b9e8184612b4b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bd682612bab565b9050919050565b612be681612bcb565b8114612bf157600080fd5b50565b600081359050612c0381612bdd565b92915050565b6000819050919050565b612c1c81612c09565b8114612c2757600080fd5b50565b600081359050612c3981612c13565b92915050565b60008060408385031215612c5657612c55612ba6565b5b6000612c6485828601612bf4565b9250506020612c7585828601612c2a565b9150509250929050565b60008115159050919050565b612c9481612c7f565b82525050565b6000602082019050612caf6000830184612c8b565b92915050565b6000819050919050565b6000612cda612cd5612cd084612bab565b612cb5565b612bab565b9050919050565b6000612cec82612cbf565b9050919050565b6000612cfe82612ce1565b9050919050565b612d0e81612cf3565b82525050565b6000602082019050612d296000830184612d05565b92915050565b612d3881612c09565b82525050565b6000602082019050612d536000830184612d2f565b92915050565b600080600060608486031215612d7257612d71612ba6565b5b6000612d8086828701612bf4565b9350506020612d9186828701612bf4565b9250506040612da286828701612c2a565b9150509250925092565b600060ff82169050919050565b612dc281612dac565b82525050565b6000602082019050612ddd6000830184612db9565b92915050565b612dec81612bcb565b82525050565b6000602082019050612e076000830184612de3565b92915050565b612e1681612c7f565b8114612e2157600080fd5b50565b600081359050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e612ba6565b5b6000612e5d84828501612e24565b91505092915050565b600060208284031215612e7c57612e7b612ba6565b5b6000612e8a84828501612bf4565b91505092915050565b600060208284031215612ea957612ea8612ba6565b5b6000612eb784828501612c2a565b91505092915050565b60008060008060808587031215612eda57612ed9612ba6565b5b6000612ee887828801612c2a565b9450506020612ef987828801612c2a565b9350506040612f0a87828801612c2a565b9250506060612f1b87828801612c2a565b91505092959194509250565b60008060408385031215612f3e57612f3d612ba6565b5b6000612f4c85828601612bf4565b9250506020612f5d85828601612bf4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f9d602083612aff565b9150612fa882612f67565b602082019050919050565b60006020820190508181036000830152612fcc81612f90565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203325000000000000000000000000000000000000000000000000000000602082015250565b600061302f602583612aff565b915061303a82612fd3565b604082019050919050565b6000602082019050818103600083015261305e81613022565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c1602183612aff565b91506130cc82613065565b604082019050919050565b600060208201905081810360008301526130f0816130b4565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642033250000000000000000000000000000000000000000000000000000602082015250565b6000613153602683612aff565b915061315e826130f7565b604082019050919050565b6000602082019050818103600083015261318281613146565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b60006131e5602283612aff565b91506131f082613189565b604082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613251601783612aff565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b60008151905061329681612bdd565b92915050565b6000602082840312156132b2576132b1612ba6565b5b60006132c084828501613287565b91505092915050565b60006040820190506132de6000830185612de3565b6132eb6020830184612de3565b9392505050565b6000819050919050565b600061331761331261330d846132f2565b612cb5565b612c09565b9050919050565b613327816132fc565b82525050565b600060c0820190506133426000830189612de3565b61334f6020830188612d2f565b61335c604083018761331e565b613369606083018661331e565b6133766080830185612de3565b61338360a0830184612d2f565b979650505050505050565b60008151905061339d81612c13565b92915050565b6000806000606084860312156133bc576133bb612ba6565b5b60006133ca8682870161338e565b93505060206133db8682870161338e565b92505060406133ec8682870161338e565b9150509250925092565b600060408201905061340b6000830185612de3565b6134186020830184612d2f565b9392505050565b60008151905061342e81612e0d565b92915050565b60006020828403121561344a57613449612ba6565b5b60006134588482850161341f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134bd602683612aff565b91506134c882613461565b604082019050919050565b600060208201905081810360008301526134ec816134b0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061354f602483612aff565b915061355a826134f3565b604082019050919050565b6000602082019050818103600083015261357e81613542565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e1602283612aff565b91506135ec82613585565b604082019050919050565b60006020820190508181036000830152613610816135d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613673602583612aff565b915061367e82613617565b604082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613705602383612aff565b9150613710826136a9565b604082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613797602983612aff565b91506137a28261373b565b604082019050919050565b600060208201905081810360008301526137c68161378a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613829603f83612aff565b9150613834826137cd565b604082019050919050565b600060208201905081810360008301526138588161381c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061389982612c09565b91506138a483612c09565b92508282019050808211156138bc576138bb61385f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061391e602383612aff565b9150613929826138c2565b604082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b600061395f82612c09565b915061396a83612c09565b92508282039050818111156139825761398161385f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a1b81612bcb565b82525050565b6000613a2d8383613a12565b60208301905092915050565b6000602082019050919050565b6000613a51826139e6565b613a5b81856139f1565b9350613a6683613a02565b8060005b83811015613a97578151613a7e8882613a21565b9750613a8983613a39565b925050600181019050613a6a565b5085935050505092915050565b600060a082019050613ab96000830188612d2f565b613ac6602083018761331e565b8181036040830152613ad88186613a46565b9050613ae76060830185612de3565b613af46080830184612d2f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b3882612c09565b9150613b4383612c09565b925082613b5357613b52613afe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b94601b83612aff565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b6000613bd582612c09565b9150613be083612c09565b9250828202613bee81612c09565b91508282048414831517613c0557613c0461385f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c68602183612aff565b9150613c7382613c0c565b604082019050919050565b60006020820190508181036000830152613c9781613c5b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220608458541a76ebdba22e0d148718f69685b938012ebb2d6e2556eef274b7b05964736f6c63430008130033
Deployed Bytecode Sourcemap
4295:13152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6302:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7234:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5547:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6582:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7436:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5794:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6490:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5595:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16526:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11832:232;;;;;;;;;;;;;:::i;:::-;;6686:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1768:148;;;;;;;;;;;;;:::i;:::-;;16637:80;;;;;;;;;;;;;:::i;:::-;;1552:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5739:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6394:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16334:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15594:687;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6833:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11590:233;;;;;;;;;;;;;:::i;:::-;;16725:719;;;:::i;:::-;;7041:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1925:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6302:83;6339:13;6372:5;;;;;;;;;;;;;;;;;6365:12;;6302:83;:::o;7234:193::-;7336:4;7358:39;7367:12;:10;:12::i;:::-;7381:7;7390:6;7358:8;:39::i;:::-;7415:4;7408:11;;7234:193;;;;:::o;5547:41::-;;;;;;;;;;;;;:::o;6582:95::-;6635:7;4862:21;6655:14;;6582:95;:::o;7436:446::-;7568:4;7585:36;7595:6;7603:9;7614:6;7585:9;:36::i;:::-;7632:220;7655:6;7676:12;:10;:12::i;:::-;7703:138;7759:6;7703:138;;;;;;;;;;;;;;;;;:11;:19;7715:6;7703:19;;;;;;;;;;;;;;;:33;7723:12;:10;:12::i;:::-;7703:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7632:8;:220::i;:::-;7870:4;7863:11;;7436:446;;;;;:::o;5794:53::-;;;;:::o;6490:83::-;6531:5;4538:1;6549:16;;6490:83;:::o;5595:28::-;;;;;;;;;;;;;:::o;16526:101::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16607:12:::1;16593:11;;:26;;;;;;;;;;;;;;;;;;16526:101:::0;:::o;11832:232::-;11898:19;;;;;;;;;;;11882:35;;:12;:10;:12::i;:::-;:35;;;:69;;;;11937:14;;;;;;;;;;;11921:30;;:12;:10;:12::i;:::-;:30;;;11882:69;11874:78;;;;;;11963:26;11992:21;11963:50;;12024:32;12037:18;12024:12;:32::i;:::-;11863:201;11832:232::o;6686:138::-;6752:7;6779:37;6799:7;:16;6807:7;6799:16;;;;;;;;;;;;;;;;6779:19;:37::i;:::-;6772:44;;6686:138;;;:::o;1768:148::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1875:1:::1;1838:40;;1859:6;::::0;::::1;;;;;;;;1838:40;;;;;;;;;;;;1906:1;1889:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1768:148::o:0;16637:80::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4812:8:::1;16689:14;:20;;;;16637:80::o:0;1552:79::-;1590:7;1617:6;;;;;;;;;;;1610:13;;1552:79;:::o;5739:48::-;;;;:::o;6394:87::-;6433:13;6466:7;;;;;;;;;;;;;;;;;6459:14;;6394:87;:::o;16334:139::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16447:18:::1;16425:19;:40;;;;16334:139:::0;:::o;15594:687::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15753:1:::1;15736:13;:18;;:40;;;;;15775:1;15758:13;:18;;15736:40;15728:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15852:1;15837:11;:16;;:36;;;;;15872:1;15857:11;:16;;15837:36;15829:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15948:1;15930:14;:19;;:42;;;;;15971:1;15953:14;:19;;15930:42;15922:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16050:1;16034:12;:17;;:38;;;;;16071:1;16055:12;:17;;16034:38;16026:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16141:13;16124:14;:30;;;;16183:14;16165:15;:32;;;;16223:11;16208:12;:26;;;;16261:12;16245:13;:28;;;;15594:687:::0;;;;:::o;6833:199::-;6938:4;6960:42;6970:12;:10;:12::i;:::-;6984:9;6995:6;6960:9;:42::i;:::-;7020:4;7013:11;;6833:199;;;;:::o;11590:233::-;11656:19;;;;;;;;;;;11640:35;;:12;:10;:12::i;:::-;:35;;;:69;;;;11695:14;;;;;;;;;;;11679:30;;:12;:10;:12::i;:::-;:30;;;11640:69;11632:78;;;;;;11721:23;11747:24;11765:4;11747:9;:24::i;:::-;11721:50;;11782:33;11799:15;11782:16;:33::i;:::-;11621:202;11590:233::o;16725:719::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16795:11:::1;;;;;;;;;;;16794:12;16786:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;16858:4;16844:11;;:18;;;;;;;;;;;;;;;;;;16873:35;16930:42;16873:100;;17002:16;16984:15;;:34;;;;;;;;;;;;;;;;;;17063:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17045:70;;;17124:4;17131:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17045:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17029:13;;:126;;;;;;;;;;;;;;;;;;4812:8;17168:11;:26;17188:4;17168:26;;;;;;;;;;;;;;;:52;17203:15;;;;;;;;;;;17168:52;;;;;;;;;;;;;;;:58;;;;17237:15;;;;;;;;;;;:31;;;17276:9;17295:4;17301:24;17319:4;17301:9;:24::i;:::-;17326:1;17328::::0;17330:7:::1;:5;:7::i;:::-;17338:15;17237:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17372:13;;;;;;;;;;;17365:29;;;17403:15;;;;;;;;;;;17421:14;17365:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16775:669;16725:719::o:0;7041:184::-;7158:7;7190:11;:18;7202:5;7190:18;;;;;;;;;;;;;;;:27;7209:7;7190:27;;;;;;;;;;;;;;;;7183:34;;7041:184;;;;:::o;1925:244::-;1690:12;:10;:12::i;:::-;1680:22;;:6;;;;;;;;;;:22;;;1672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2034:1:::1;2014:22;;:8;:22;;::::0;2006:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2124:8;2095:38;;2116:6;::::0;::::1;;;;;;;;2095:38;;;;;;;;;;;;2153:8;2144:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1925:244:::0;:::o;301:98::-;354:7;381:10;374:17;;301:98;:::o;8458:369::-;8602:1;8585:19;;:5;:19;;;8577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8683:1;8664:21;;:7;:21;;;8656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8765:6;8735:11;:18;8747:5;8735:18;;;;;;;;;;;;;;;:27;8754:7;8735:27;;;;;;;;;;;;;;;:36;;;;8803:7;8787:32;;8796:5;8787:32;;;8812:6;8787:32;;;;;;:::i;:::-;;;;;;;;8458:369;;;:::o;8836:2143::-;8974:1;8958:18;;:4;:18;;;8950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9051:1;9037:16;;:2;:16;;;9029:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9121:1;9112:6;:10;9104:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9194:7;:5;:7::i;:::-;9186:15;;:4;:15;;;;:32;;;;;9211:7;:5;:7::i;:::-;9205:13;;:2;:13;;;;9186:32;:57;;;;;9238:4;9222:21;;:4;:21;;;;9186:57;:80;;;;;9261:4;9247:19;;:2;:19;;;;9186:80;9182:1001;;;9324:11;;;;;;;;;;;9319:144;;9372:7;:5;:7::i;:::-;9364:15;;:4;:15;;;9356:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9319:144;9489:13;;;;;;;;;;;9483:19;;:2;:19;;;9480:146;;9556:14;;9547:6;9531:13;9541:2;9531:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9523:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9480:146;9643:28;9674:24;9692:4;9674:9;:24::i;:::-;9643:55;;9713:12;9752:19;;9728:20;:43;;9713:58;;9790:7;:18;;;;;9802:6;;;;;;;;;;;9801:7;9790:18;:43;;;;;9820:13;;;;;;;;;;;9812:21;;:4;:21;;;;9790:43;:58;;;;;9837:11;;;;;;;;;;;9790:58;:87;;;;;9853:18;:24;9872:4;9853:24;;;;;;;;;;;;;;;;;;;;;;;;;9852:25;9790:87;:114;;;;;9882:18;:22;9901:2;9882:22;;;;;;;;;;;;;;;;;;;;;;;;;9881:23;9790:114;9786:386;;;9925:38;9942:20;9925:16;:38::i;:::-;9982:26;10011:21;9982:50;;10076:1;10055:18;:22;10051:106;;;10102:35;10115:21;10102:12;:35::i;:::-;10051:106;9906:266;9786:386;9268:915;;9182:1001;10196:12;10211:4;10196:19;;10261:18;:24;10280:4;10261:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10289:18;:22;10308:2;10289:22;;;;;;;;;;;;;;;;;;;;;;;;;10261:50;10260:102;;;;10325:13;;;;;;;;;;;10317:21;;:4;:21;;;;:44;;;;;10348:13;;;;;;;;;;;10342:19;;:2;:19;;;;10317:44;10260:102;10256:661;;;10389:5;10379:15;;10256:661;;;10473:13;;;;;;;;;;;10465:21;;:4;:21;;;:55;;;;;10504:15;;;;;;;;;;;10490:30;;:2;:30;;;;10465:55;10462:162;;;10553:14;;10541:9;:26;;;;10596:12;;10586:7;:22;;;;10462:162;10684:13;;;;;;;;;;;10678:19;;:2;:19;;;:55;;;;;10717:15;;;;;;;;;;;10701:32;;:4;:32;;;;10678:55;10674:229;;;10754:11;10768:14;;;;;;;;;;;:22;;;10754:36;;10821:24;10841:3;10821:15;;:19;;:24;;;;:::i;:::-;10809:9;:36;;;;10874:13;;10864:7;:23;;;;10735:168;10674:229;10256:661;10930:41;10945:4;10951:2;10955:6;10963:7;10930:14;:41::i;:::-;8939:2040;8836:2143;;;:::o;2537:224::-;2657:7;2690:1;2685;:6;;2693:12;2677:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2717:9;2733:1;2729;:5;;;;:::i;:::-;2717:17;;2752:1;2745:8;;;2537:224;;;;;:::o;11480:101::-;11537:19;;;;;;;;;;;:28;;:36;11566:6;11537:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11480:101;:::o;7891:202::-;7986:7;8011:19;8033:10;:8;:10::i;:::-;8011:32;;8061:24;8073:11;8061:7;:11;;:24;;;;:::i;:::-;8054:31;;;7891:202;;;:::o;10988:483::-;5898:4;5889:6;;:13;;;;;;;;;;;;;;;;;;11066:21:::1;11104:1;11090:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11066:40;;11135:4;11117;11122:1;11117:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11161:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11151:4;11156:1;11151:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11194:62;11211:4;11226:15;;;;;;;;;;;11244:11;11194:8;:62::i;:::-;11267:15;;;;;;;;;;;:66;;;11348:11;11374:1;11390:4;11417;11437:15;11267:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11055:416;5934:5:::0;5925:6;;:14;;;;;;;;;;;;;;;;;;10988:483;:::o;2392:136::-;2450:7;2477:43;2481:1;2484;2477:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2470:50;;2392:136;;;;:::o;12072:282::-;12228:7;12223:28;;12237:14;:12;:14::i;:::-;12223:28;12262:44;12280:6;12288:9;12299:6;12262:17;:44::i;:::-;12322:7;12317:29;;12331:15;:13;:15::i;:::-;12317:29;12072:282;;;;:::o;15155:164::-;15197:7;15218:15;15235;15254:19;:17;:19::i;:::-;15217:56;;;;15291:20;15303:7;15291;:11;;:20;;;;:::i;:::-;15284:27;;;;15155:164;:::o;3025:132::-;3083:7;3110:39;3114:1;3117;3110:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3103:46;;3025:132;;;;:::o;8102:221::-;8162:1;8149:9;;:14;:30;;;;;8178:1;8167:7;;:12;8149:30;8181:7;8145:43;8221:9;;8201:17;:29;;;;8259:7;;8241:15;:25;;;;8292:1;8280:9;:13;;;;8314:1;8304:7;:11;;;;8102:221;:::o;12363:618::-;12510:15;12540:23;12578:12;12605:23;12643:12;12670:13;12697:27;12708:6;12716:7;12697:10;:27::i;:::-;12495:229;;;;;;;;;;;;12753:28;12773:7;12753;:15;12761:6;12753:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12735:7;:15;12743:6;12735:15;;;;;;;;;;;;;;;:46;;;;12813:39;12836:15;12813:7;:18;12821:9;12813:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12792:7;:18;12800:9;12792:18;;;;;;;;;;;;;;;:60;;;;12863:16;12873:5;12863:9;:16::i;:::-;12890:23;12902:4;12908;12890:11;:23::i;:::-;12946:9;12929:44;;12938:6;12929:44;;;12957:15;12929:44;;;;;;:::i;:::-;;;;;;;;12484:497;;;;;;12363:618;;;:::o;8332:117::-;8388:17;;8376:9;:29;;;;8426:15;;8416:7;:25;;;;8332:117::o;15328:257::-;15379:7;15388;15408:15;15426:7;;15408:25;;15444:15;4862:21;15444:25;;15494:20;4862:21;15494:7;;:11;;:20;;;;:::i;:::-;15484:7;:30;15480:61;;;15524:7;;4862:21;15516:25;;;;;;;;15480:61;15560:7;15569;15552:25;;;;;;15328:257;;;:::o;3166:223::-;3286:7;3318:1;3314;:5;3321:12;3306:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3345:9;3361:1;3357;:5;;;;:::i;:::-;3345:17;;3380:1;3373:8;;;3166:223;;;;;:::o;13404:721::-;13518:7;13540;13562;13584;13606;13628;13664:23;13689:12;13703:13;13733:40;13745:7;13754:9;;13765:7;;13733:11;:40::i;:::-;13663:110;;;;;;13784:19;13806:10;:8;:10::i;:::-;13784:32;;13828:15;13845:23;13870:12;13899:46;13911:7;13920:4;13926:5;13933:11;13899;:46::i;:::-;13827:118;;;;;;13958:14;;;;;;;;;;;13950:22;;:4;:22;;;13946:91;;13982:1;13985:15;14002:4;14008:15;14025:4;14031:5;13974:63;;;;;;;;;;;;;;;;;;;;;13946:91;14056:7;14065:15;14082:4;14088:15;14105:4;14111:5;14048:69;;;;;;;;;;;;;;;;;;;13404:721;;;;;;;;;:::o;2204:179::-;2262:7;2282:9;2298:1;2294;:5;;;;:::i;:::-;2282:17;;2323:1;2318;:6;;2310:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2374:1;2367:8;;;2204:179;;;;:::o;12990:211::-;13043:19;13065:10;:8;:10::i;:::-;13043:32;;13086:13;13102:22;13112:11;13102:5;:9;;:22;;;;:::i;:::-;13086:38;;13160:33;13187:5;13160:7;:22;13176:4;13160:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13135:7;:22;13151:4;13135:22;;;;;;;;;;;;;;;:58;;;;13032:169;;12990:211;:::o;13210:147::-;13288:17;13300:4;13288:7;;:11;;:17;;;;:::i;:::-;13278:7;:27;;;;13329:20;13344:4;13329:10;;:14;;:20;;;;:::i;:::-;13316:10;:33;;;;13210:147;;:::o;14134:469::-;14303:7;14325;14347;14382:12;14397:30;14423:3;14397:21;14409:8;14397:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14382:45;;14438:13;14454:28;14478:3;14454:19;14466:6;14454:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14438:44;;14493:23;14519:28;14541:5;14519:17;14531:4;14519:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14493:54;;14566:15;14583:4;14589:5;14558:37;;;;;;;;;14134:469;;;;;;;:::o;14612:534::-;14806:7;14828;14850;14885:15;14903:24;14915:11;14903:7;:11;;:24;;;;:::i;:::-;14885:42;;14938:12;14953:21;14962:11;14953:4;:8;;:21;;;;:::i;:::-;14938:36;;14985:13;15001:22;15011:11;15001:5;:9;;:22;;;;:::i;:::-;14985:38;;15034:23;15060:28;15082:5;15060:17;15072:4;15060:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15034:54;;15107:7;15116:15;15133:4;15099:39;;;;;;;;;;14612:534;;;;;;;;:::o;2770:246::-;2828:7;2857:1;2852;:6;2848:47;;2882:1;2875:8;;;;2848:47;2905:9;2921:1;2917;:5;;;;:::i;:::-;2905:17;;2950:1;2945;2941;:5;;;;:::i;:::-;:10;2933:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3007:1;3000:8;;;2770:246;;;;;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:224::-;9814:34;9810:1;9802:6;9798:14;9791:58;9883:7;9878:2;9870:6;9866:15;9859:32;9674:224;:::o;9904:366::-;10046:3;10067:67;10131:2;10126:3;10067:67;:::i;:::-;10060:74;;10143:93;10232:3;10143:93;:::i;:::-;10261:2;10256:3;10252:12;10245:19;;9904:366;;;:::o;10276:419::-;10442:4;10480:2;10469:9;10465:18;10457:26;;10529:9;10523:4;10519:20;10515:1;10504:9;10500:17;10493:47;10557:131;10683:4;10557:131;:::i;:::-;10549:139;;10276:419;;;:::o;10701:220::-;10841:34;10837:1;10829:6;10825:14;10818:58;10910:3;10905:2;10897:6;10893:15;10886:28;10701:220;:::o;10927:366::-;11069:3;11090:67;11154:2;11149:3;11090:67;:::i;:::-;11083:74;;11166:93;11255:3;11166:93;:::i;:::-;11284:2;11279:3;11275:12;11268:19;;10927:366;;;:::o;11299:419::-;11465:4;11503:2;11492:9;11488:18;11480:26;;11552:9;11546:4;11542:20;11538:1;11527:9;11523:17;11516:47;11580:131;11706:4;11580:131;:::i;:::-;11572:139;;11299:419;;;:::o;11724:225::-;11864:34;11860:1;11852:6;11848:14;11841:58;11933:8;11928:2;11920:6;11916:15;11909:33;11724:225;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;11955:366;;;:::o;12327:419::-;12493:4;12531:2;12520:9;12516:18;12508:26;;12580:9;12574:4;12570:20;12566:1;12555:9;12551:17;12544:47;12608:131;12734:4;12608:131;:::i;:::-;12600:139;;12327:419;;;:::o;12752:221::-;12892:34;12888:1;12880:6;12876:14;12869:58;12961:4;12956:2;12948:6;12944:15;12937:29;12752:221;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;12979:366;;;:::o;13351:419::-;13517:4;13555:2;13544:9;13540:18;13532:26;;13604:9;13598:4;13594:20;13590:1;13579:9;13575:17;13568:47;13632:131;13758:4;13632:131;:::i;:::-;13624:139;;13351:419;;;:::o;13776:173::-;13916:25;13912:1;13904:6;13900:14;13893:49;13776:173;:::o;13955:366::-;14097:3;14118:67;14182:2;14177:3;14118:67;:::i;:::-;14111:74;;14194:93;14283:3;14194:93;:::i;:::-;14312:2;14307:3;14303:12;14296:19;;13955:366;;;:::o;14327:419::-;14493:4;14531:2;14520:9;14516:18;14508:26;;14580:9;14574:4;14570:20;14566:1;14555:9;14551:17;14544:47;14608:131;14734:4;14608:131;:::i;:::-;14600:139;;14327:419;;;:::o;14752:143::-;14809:5;14840:6;14834:13;14825:22;;14856:33;14883:5;14856:33;:::i;:::-;14752:143;;;;:::o;14901:351::-;14971:6;15020:2;15008:9;14999:7;14995:23;14991:32;14988:119;;;15026:79;;:::i;:::-;14988:119;15146:1;15171:64;15227:7;15218:6;15207:9;15203:22;15171:64;:::i;:::-;15161:74;;15117:128;14901:351;;;;:::o;15258:332::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15430:71;15498:1;15487:9;15483:17;15474:6;15430:71;:::i;:::-;15511:72;15579:2;15568:9;15564:18;15555:6;15511:72;:::i;:::-;15258:332;;;;;:::o;15596:85::-;15641:7;15670:5;15659:16;;15596:85;;;:::o;15687:158::-;15745:9;15778:61;15796:42;15805:32;15831:5;15805:32;:::i;:::-;15796:42;:::i;:::-;15778:61;:::i;:::-;15765:74;;15687:158;;;:::o;15851:147::-;15946:45;15985:5;15946:45;:::i;:::-;15941:3;15934:58;15851:147;;:::o;16004:807::-;16253:4;16291:3;16280:9;16276:19;16268:27;;16305:71;16373:1;16362:9;16358:17;16349:6;16305:71;:::i;:::-;16386:72;16454:2;16443:9;16439:18;16430:6;16386:72;:::i;:::-;16468:80;16544:2;16533:9;16529:18;16520:6;16468:80;:::i;:::-;16558;16634:2;16623:9;16619:18;16610:6;16558:80;:::i;:::-;16648:73;16716:3;16705:9;16701:19;16692:6;16648:73;:::i;:::-;16731;16799:3;16788:9;16784:19;16775:6;16731:73;:::i;:::-;16004:807;;;;;;;;;:::o;16817:143::-;16874:5;16905:6;16899:13;16890:22;;16921:33;16948:5;16921:33;:::i;:::-;16817:143;;;;:::o;16966:663::-;17054:6;17062;17070;17119:2;17107:9;17098:7;17094:23;17090:32;17087:119;;;17125:79;;:::i;:::-;17087:119;17245:1;17270:64;17326:7;17317:6;17306:9;17302:22;17270:64;:::i;:::-;17260:74;;17216:128;17383:2;17409:64;17465:7;17456:6;17445:9;17441:22;17409:64;:::i;:::-;17399:74;;17354:129;17522:2;17548:64;17604:7;17595:6;17584:9;17580:22;17548:64;:::i;:::-;17538:74;;17493:129;16966:663;;;;;:::o;17635:332::-;17756:4;17794:2;17783:9;17779:18;17771:26;;17807:71;17875:1;17864:9;17860:17;17851:6;17807:71;:::i;:::-;17888:72;17956:2;17945:9;17941:18;17932:6;17888:72;:::i;:::-;17635:332;;;;;:::o;17973:137::-;18027:5;18058:6;18052:13;18043:22;;18074:30;18098:5;18074:30;:::i;:::-;17973:137;;;;:::o;18116:345::-;18183:6;18232:2;18220:9;18211:7;18207:23;18203:32;18200:119;;;18238:79;;:::i;:::-;18200:119;18358:1;18383:61;18436:7;18427:6;18416:9;18412:22;18383:61;:::i;:::-;18373:71;;18329:125;18116:345;;;;:::o;18467:225::-;18607:34;18603:1;18595:6;18591:14;18584:58;18676:8;18671:2;18663:6;18659:15;18652:33;18467:225;:::o;18698:366::-;18840:3;18861:67;18925:2;18920:3;18861:67;:::i;:::-;18854:74;;18937:93;19026:3;18937:93;:::i;:::-;19055:2;19050:3;19046:12;19039:19;;18698:366;;;:::o;19070:419::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19323:9;19317:4;19313:20;19309:1;19298:9;19294:17;19287:47;19351:131;19477:4;19351:131;:::i;:::-;19343:139;;19070:419;;;:::o;19495:223::-;19635:34;19631:1;19623:6;19619:14;19612:58;19704:6;19699:2;19691:6;19687:15;19680:31;19495:223;:::o;19724:366::-;19866:3;19887:67;19951:2;19946:3;19887:67;:::i;:::-;19880:74;;19963:93;20052:3;19963:93;:::i;:::-;20081:2;20076:3;20072:12;20065:19;;19724:366;;;:::o;20096:419::-;20262:4;20300:2;20289:9;20285:18;20277:26;;20349:9;20343:4;20339:20;20335:1;20324:9;20320:17;20313:47;20377:131;20503:4;20377:131;:::i;:::-;20369:139;;20096:419;;;:::o;20521:221::-;20661:34;20657:1;20649:6;20645:14;20638:58;20730:4;20725:2;20717:6;20713:15;20706:29;20521:221;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:224::-;21685:34;21681:1;21673:6;21669:14;21662:58;21754:7;21749:2;21741:6;21737:15;21730:32;21545:224;:::o;21775:366::-;21917:3;21938:67;22002:2;21997:3;21938:67;:::i;:::-;21931:74;;22014:93;22103:3;22014:93;:::i;:::-;22132:2;22127:3;22123:12;22116:19;;21775:366;;;:::o;22147:419::-;22313:4;22351:2;22340:9;22336:18;22328:26;;22400:9;22394:4;22390:20;22386:1;22375:9;22371:17;22364:47;22428:131;22554:4;22428:131;:::i;:::-;22420:139;;22147:419;;;:::o;22572:222::-;22712:34;22708:1;22700:6;22696:14;22689:58;22781:5;22776:2;22768:6;22764:15;22757:30;22572:222;:::o;22800:366::-;22942:3;22963:67;23027:2;23022:3;22963:67;:::i;:::-;22956:74;;23039:93;23128:3;23039:93;:::i;:::-;23157:2;23152:3;23148:12;23141:19;;22800:366;;;:::o;23172:419::-;23338:4;23376:2;23365:9;23361:18;23353:26;;23425:9;23419:4;23415:20;23411:1;23400:9;23396:17;23389:47;23453:131;23579:4;23453:131;:::i;:::-;23445:139;;23172:419;;;:::o;23597:228::-;23737:34;23733:1;23725:6;23721:14;23714:58;23806:11;23801:2;23793:6;23789:15;23782:36;23597:228;:::o;23831:366::-;23973:3;23994:67;24058:2;24053:3;23994:67;:::i;:::-;23987:74;;24070:93;24159:3;24070:93;:::i;:::-;24188:2;24183:3;24179:12;24172:19;;23831:366;;;:::o;24203:419::-;24369:4;24407:2;24396:9;24392:18;24384:26;;24456:9;24450:4;24446:20;24442:1;24431:9;24427:17;24420:47;24484:131;24610:4;24484:131;:::i;:::-;24476:139;;24203:419;;;:::o;24628:250::-;24768:34;24764:1;24756:6;24752:14;24745:58;24837:33;24832:2;24824:6;24820:15;24813:58;24628:250;:::o;24884:366::-;25026:3;25047:67;25111:2;25106:3;25047:67;:::i;:::-;25040:74;;25123:93;25212:3;25123:93;:::i;:::-;25241:2;25236:3;25232:12;25225:19;;24884:366;;;:::o;25256:419::-;25422:4;25460:2;25449:9;25445:18;25437:26;;25509:9;25503:4;25499:20;25495:1;25484:9;25480:17;25473:47;25537:131;25663:4;25537:131;:::i;:::-;25529:139;;25256:419;;;:::o;25681:180::-;25729:77;25726:1;25719:88;25826:4;25823:1;25816:15;25850:4;25847:1;25840:15;25867:191;25907:3;25926:20;25944:1;25926:20;:::i;:::-;25921:25;;25960:20;25978:1;25960:20;:::i;:::-;25955:25;;26003:1;26000;25996:9;25989:16;;26024:3;26021:1;26018:10;26015:36;;;26031:18;;:::i;:::-;26015:36;25867:191;;;;:::o;26064:222::-;26204:34;26200:1;26192:6;26188:14;26181:58;26273:5;26268:2;26260:6;26256:15;26249:30;26064:222;:::o;26292:366::-;26434:3;26455:67;26519:2;26514:3;26455:67;:::i;:::-;26448:74;;26531:93;26620:3;26531:93;:::i;:::-;26649:2;26644:3;26640:12;26633:19;;26292:366;;;:::o;26664:419::-;26830:4;26868:2;26857:9;26853:18;26845:26;;26917:9;26911:4;26907:20;26903:1;26892:9;26888:17;26881:47;26945:131;27071:4;26945:131;:::i;:::-;26937:139;;26664:419;;;:::o;27089:194::-;27129:4;27149:20;27167:1;27149:20;:::i;:::-;27144:25;;27183:20;27201:1;27183:20;:::i;:::-;27178:25;;27227:1;27224;27220:9;27212:17;;27251:1;27245:4;27242:11;27239:37;;;27256:18;;:::i;:::-;27239:37;27089:194;;;;:::o;27289:180::-;27337:77;27334:1;27327:88;27434:4;27431:1;27424:15;27458:4;27455:1;27448:15;27475:180;27523:77;27520:1;27513:88;27620:4;27617:1;27610:15;27644:4;27641:1;27634:15;27661:114;27728:6;27762:5;27756:12;27746:22;;27661:114;;;:::o;27781:184::-;27880:11;27914:6;27909:3;27902:19;27954:4;27949:3;27945:14;27930:29;;27781:184;;;;:::o;27971:132::-;28038:4;28061:3;28053:11;;28091:4;28086:3;28082:14;28074:22;;27971:132;;;:::o;28109:108::-;28186:24;28204:5;28186:24;:::i;:::-;28181:3;28174:37;28109:108;;:::o;28223:179::-;28292:10;28313:46;28355:3;28347:6;28313:46;:::i;:::-;28391:4;28386:3;28382:14;28368:28;;28223:179;;;;:::o;28408:113::-;28478:4;28510;28505:3;28501:14;28493:22;;28408:113;;;:::o;28557:732::-;28676:3;28705:54;28753:5;28705:54;:::i;:::-;28775:86;28854:6;28849:3;28775:86;:::i;:::-;28768:93;;28885:56;28935:5;28885:56;:::i;:::-;28964:7;28995:1;28980:284;29005:6;29002:1;28999:13;28980:284;;;29081:6;29075:13;29108:63;29167:3;29152:13;29108:63;:::i;:::-;29101:70;;29194:60;29247:6;29194:60;:::i;:::-;29184:70;;29040:224;29027:1;29024;29020:9;29015:14;;28980:284;;;28984:14;29280:3;29273:10;;28681:608;;;28557:732;;;;:::o;29295:831::-;29558:4;29596:3;29585:9;29581:19;29573:27;;29610:71;29678:1;29667:9;29663:17;29654:6;29610:71;:::i;:::-;29691:80;29767:2;29756:9;29752:18;29743:6;29691:80;:::i;:::-;29818:9;29812:4;29808:20;29803:2;29792:9;29788:18;29781:48;29846:108;29949:4;29940:6;29846:108;:::i;:::-;29838:116;;29964:72;30032:2;30021:9;30017:18;30008:6;29964:72;:::i;:::-;30046:73;30114:3;30103:9;30099:19;30090:6;30046:73;:::i;:::-;29295:831;;;;;;;;:::o;30132:180::-;30180:77;30177:1;30170:88;30277:4;30274:1;30267:15;30301:4;30298:1;30291:15;30318:185;30358:1;30375:20;30393:1;30375:20;:::i;:::-;30370:25;;30409:20;30427:1;30409:20;:::i;:::-;30404:25;;30448:1;30438:35;;30453:18;;:::i;:::-;30438:35;30495:1;30492;30488:9;30483:14;;30318:185;;;;:::o;30509:177::-;30649:29;30645:1;30637:6;30633:14;30626:53;30509:177;:::o;30692:366::-;30834:3;30855:67;30919:2;30914:3;30855:67;:::i;:::-;30848:74;;30931:93;31020:3;30931:93;:::i;:::-;31049:2;31044:3;31040:12;31033:19;;30692:366;;;:::o;31064:419::-;31230:4;31268:2;31257:9;31253:18;31245:26;;31317:9;31311:4;31307:20;31303:1;31292:9;31288:17;31281:47;31345:131;31471:4;31345:131;:::i;:::-;31337:139;;31064:419;;;:::o;31489:410::-;31529:7;31552:20;31570:1;31552:20;:::i;:::-;31547:25;;31586:20;31604:1;31586:20;:::i;:::-;31581:25;;31641:1;31638;31634:9;31663:30;31681:11;31663:30;:::i;:::-;31652:41;;31842:1;31833:7;31829:15;31826:1;31823:22;31803:1;31796:9;31776:83;31753:139;;31872:18;;:::i;:::-;31753:139;31537:362;31489:410;;;;:::o;31905:220::-;32045:34;32041:1;32033:6;32029:14;32022:58;32114:3;32109:2;32101:6;32097:15;32090:28;31905:220;:::o;32131:366::-;32273:3;32294:67;32358:2;32353:3;32294:67;:::i;:::-;32287:74;;32370:93;32459:3;32370:93;:::i;:::-;32488:2;32483:3;32479:12;32472:19;;32131:366;;;:::o;32503:419::-;32669:4;32707:2;32696:9;32692:18;32684:26;;32756:9;32750:4;32746:20;32742:1;32731:9;32727:17;32720:47;32784:131;32910:4;32784:131;:::i;:::-;32776:139;;32503:419;;;:::o
Swarm Source
ipfs://608458541a76ebdba22e0d148718f69685b938012ebb2d6e2556eef274b7b059
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.