ERC-20
Overview
Max Total Supply
1,000,000,000 Gintama
Holders
76
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
55,076.460069424 GintamaValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Gintama
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-19 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; 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 Gintama is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Gintama"; string private constant _symbol = "Gintama"; 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 = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 40; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xFb89472E6d5b0C76CBEA786DC392697D04c6D0a6); address payable private _marketingAddress = payable(0xFb89472E6d5b0C76CBEA786DC392697D04c6D0a6); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = 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 buytax() public view returns (uint256) { return _taxFeeOnBuy; } 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) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeFee() 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()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } 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)) { _redisFee = _redisFeeOnSell; _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 { _marketingAddress.transfer(amount); } function Gintoki(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualSwap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualclaim() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockAllBot(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreallFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 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 setallTax(uint256 redisBuy, uint256 redisSell, uint256 taxBuy, uint256 taxSell) public onlyOwner { _redisFeeOnBuy = redisBuy; _redisFeeOnSell = redisSell; _taxFeeOnBuy = taxBuy; _taxFeeOnSell = taxSell; } //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; } //Set maximum transaction function setmaxtxwallets(uint256 maxtx,uint256 maxw) public onlyOwner { _maxTxAmount = maxtx; _maxWalletSize = maxw; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"Gintoki","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockAllBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuy","type":"uint256"},{"internalType":"uint256","name":"redisSell","type":"uint256"},{"internalType":"uint256","name":"taxBuy","type":"uint256"},{"internalType":"uint256","name":"taxSell","type":"uint256"}],"name":"setallTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtx","type":"uint256"},{"internalType":"uint256","name":"maxw","type":"uint256"}],"name":"setmaxtxwallets","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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
6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b600655600060085560146009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5573fb89472e6d5b0c76cbea786dc392697d04c6d0a6601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fb89472e6d5b0c76cbea786dc392697d04c6d0a6601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9680620009136000396000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063a9059cbb11610095578063c92823ba11610064578063c92823ba1461065f578063dd62ed3e14610688578063e7991721146106c5578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063bfd79284146105f9578063c492f04614610636576101d8565b80638da5cb5b116100d15780638da5cb5b146104fb5780638f9a55c01461052657806395d89b4114610551578063986618721461057c576101d8565b8063715018a61461047c5780637d1db4a5146104935780637f2feddc146104be576101d8565b8063313ce5671161016f57806351bc3c851161013e57806351bc3c85146103d65780636b999053146103ed5780636d8aa8f81461041657806370a082311461043f576101d8565b8063313ce5671461032c5780633ee0f5f51461035757806349bd5a5e146103805780634a1263f3146103ab576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c45780632fd689e314610301576101d8565b806306914fee146101dd57806306fdde0314610206578063095ea7b314610231576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612b63565b610717565b005b34801561021257600080fd5b5061021b6107c9565b6040516102289190612c29565b60405180910390f35b34801561023d57600080fd5b5061025860048036038101906102539190612cdf565b610806565b6040516102659190612d2e565b60405180910390f35b34801561027a57600080fd5b50610283610824565b6040516102909190612da8565b60405180910390f35b3480156102a557600080fd5b506102ae61084a565b6040516102bb9190612dd2565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190612ded565b61085a565b6040516102f89190612d2e565b60405180910390f35b34801561030d57600080fd5b50610316610933565b6040516103239190612dd2565b60405180910390f35b34801561033857600080fd5b50610341610939565b60405161034e9190612e5c565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612e77565b610942565b005b34801561038c57600080fd5b506103956109e1565b6040516103a29190612eb3565b60405180910390f35b3480156103b757600080fd5b506103c0610a07565b6040516103cd9190612dd2565b60405180910390f35b3480156103e257600080fd5b506103eb610a11565b005b3480156103f957600080fd5b50610414600480360381019061040f9190612ece565b610aea565b005b34801561042257600080fd5b5061043d60048036038101906104389190612b63565b610bda565b005b34801561044b57600080fd5b5061046660048036038101906104619190612ece565b610c8c565b6040516104739190612dd2565b60405180910390f35b34801561048857600080fd5b50610491610cdd565b005b34801561049f57600080fd5b506104a8610e30565b6040516104b59190612dd2565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612ece565b610e36565b6040516104f29190612dd2565b60405180910390f35b34801561050757600080fd5b50610510610e4e565b60405161051d9190612eb3565b60405180910390f35b34801561053257600080fd5b5061053b610e77565b6040516105489190612dd2565b60405180910390f35b34801561055d57600080fd5b50610566610e7d565b6040516105739190612c29565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612efb565b610eba565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612cdf565b610f71565b6040516105d99190612d2e565b60405180910390f35b3480156105ee57600080fd5b506105f7610f8f565b005b34801561060557600080fd5b50610620600480360381019061061b9190612ece565b611060565b60405161062d9190612d2e565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612fc7565b611080565b005b34801561066b57600080fd5b5061068660048036038101906106819190613165565b6111ba565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131ae565b6112e4565b6040516106bc9190612dd2565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906131ee565b61136b565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612ece565b611412565b005b61071f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a39061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600781526020017f47696e74616d6100000000000000000000000000000000000000000000000000815250905090565b600061081a6108136115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108678484846117a7565b610928846108736115d4565b61092385604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d96115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b60006009905090565b61094a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a526115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610ac85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab06115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610ad157600080fd5b6000610adc30610c8c565b9050610ae781612090565b50565b610af26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b769061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610be26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c669061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610cd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610ce56115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d699061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600781526020017f47696e74616d6100000000000000000000000000000000000000000000000000815250905090565b610ec26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f469061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f85610f7e6115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fd06115d4565b73ffffffffffffffffffffffffffffffffffffffff1614806110465750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102e6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b61104f57600080fd5b600047905061105d81612384565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b6110886115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c9061327a565b60405180910390fd5b60005b838390508110156111b457816005600086868581811061113b5761113a61329a565b5b90506020020160208101906111509190612ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ac906132f8565b915050611118565b50505050565b6111c26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061327a565b60405180910390fd5b60005b81518110156112e0576001601060008484815181106112745761127361329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d8906132f8565b915050611252565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113736115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061327a565b60405180910390fd5b81601681905550806017819055505050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612dd2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610e4e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c8c565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610c8c565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612c29565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613027565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612c29565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b612b4081612b2b565b8114612b4b57600080fd5b50565b600081359050612b5d81612b37565b92915050565b600060208284031215612b7957612b78612b21565b5b6000612b8784828501612b4e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bca578082015181840152602081019050612baf565b83811115612bd9576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bfb82612b90565b612c058185612b9b565b9350612c15818560208601612bac565b612c1e81612bdf565b840191505092915050565b60006020820190508181036000830152612c438184612bf0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7682612c4b565b9050919050565b612c8681612c6b565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b6000819050919050565b612cbc81612ca9565b8114612cc757600080fd5b50565b600081359050612cd981612cb3565b92915050565b60008060408385031215612cf657612cf5612b21565b5b6000612d0485828601612c94565b9250506020612d1585828601612cca565b9150509250929050565b612d2881612b2b565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000819050919050565b6000612d6e612d69612d6484612c4b565b612d49565b612c4b565b9050919050565b6000612d8082612d53565b9050919050565b6000612d9282612d75565b9050919050565b612da281612d87565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612ca9565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600080600060608486031215612e0657612e05612b21565b5b6000612e1486828701612c94565b9350506020612e2586828701612c94565b9250506040612e3686828701612cca565b9150509250925092565b600060ff82169050919050565b612e5681612e40565b82525050565b6000602082019050612e716000830184612e4d565b92915050565b600060208284031215612e8d57612e8c612b21565b5b6000612e9b84828501612cca565b91505092915050565b612ead81612c6b565b82525050565b6000602082019050612ec86000830184612ea4565b92915050565b600060208284031215612ee457612ee3612b21565b5b6000612ef284828501612c94565b91505092915050565b60008060008060808587031215612f1557612f14612b21565b5b6000612f2387828801612cca565b9450506020612f3487828801612cca565b9350506040612f4587828801612cca565b9250506060612f5687828801612cca565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612f8757612f86612f62565b5b8235905067ffffffffffffffff811115612fa457612fa3612f67565b5b602083019150836020820283011115612fc057612fbf612f6c565b5b9250929050565b600080600060408486031215612fe057612fdf612b21565b5b600084013567ffffffffffffffff811115612ffe57612ffd612b26565b5b61300a86828701612f71565b9350935050602061301d86828701612b4e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305f82612bdf565b810181811067ffffffffffffffff8211171561307e5761307d613027565b5b80604052505050565b6000613091612b17565b905061309d8282613056565b919050565b600067ffffffffffffffff8211156130bd576130bc613027565b5b602082029050602081019050919050565b60006130e16130dc846130a2565b613087565b9050808382526020820190506020840283018581111561310457613103612f6c565b5b835b8181101561312d57806131198882612c94565b845260208401935050602081019050613106565b5050509392505050565b600082601f83011261314c5761314b612f62565b5b813561315c8482602086016130ce565b91505092915050565b60006020828403121561317b5761317a612b21565b5b600082013567ffffffffffffffff81111561319957613198612b26565b5b6131a584828501613137565b91505092915050565b600080604083850312156131c5576131c4612b21565b5b60006131d385828601612c94565b92505060206131e485828601612c94565b9150509250929050565b6000806040838503121561320557613204612b21565b5b600061321385828601612cca565b925050602061322485828601612cca565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b9b565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612ca9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b9b565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b9b565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b9b565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b9b565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b9b565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b9b565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b9b565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b9b565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b9b565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612ca9565b915061385383612ca9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b9b565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612ca9565b915061393b83612ca9565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c7d565b92915050565b60006020828403121561398457613983612b21565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612d49565b612ca9565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c6b565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612dc3565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612ea4565b613ae46080830184612dc3565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b9b565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612ca9565b9150613bc583612ca9565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b9b565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612ca9565b9150613c6283612ca9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b9b565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209096aacf185a2dc657a3ae9ed91bcaef72296a4a621eb18c552776ca913919c164736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c8063715018a6116100f7578063a9059cbb11610095578063c92823ba11610064578063c92823ba1461065f578063dd62ed3e14610688578063e7991721146106c5578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063bfd79284146105f9578063c492f04614610636576101d8565b80638da5cb5b116100d15780638da5cb5b146104fb5780638f9a55c01461052657806395d89b4114610551578063986618721461057c576101d8565b8063715018a61461047c5780637d1db4a5146104935780637f2feddc146104be576101d8565b8063313ce5671161016f57806351bc3c851161013e57806351bc3c85146103d65780636b999053146103ed5780636d8aa8f81461041657806370a082311461043f576101d8565b8063313ce5671461032c5780633ee0f5f51461035757806349bd5a5e146103805780634a1263f3146103ab576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c45780632fd689e314610301576101d8565b806306914fee146101dd57806306fdde0314610206578063095ea7b314610231576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612b63565b610717565b005b34801561021257600080fd5b5061021b6107c9565b6040516102289190612c29565b60405180910390f35b34801561023d57600080fd5b5061025860048036038101906102539190612cdf565b610806565b6040516102659190612d2e565b60405180910390f35b34801561027a57600080fd5b50610283610824565b6040516102909190612da8565b60405180910390f35b3480156102a557600080fd5b506102ae61084a565b6040516102bb9190612dd2565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190612ded565b61085a565b6040516102f89190612d2e565b60405180910390f35b34801561030d57600080fd5b50610316610933565b6040516103239190612dd2565b60405180910390f35b34801561033857600080fd5b50610341610939565b60405161034e9190612e5c565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612e77565b610942565b005b34801561038c57600080fd5b506103956109e1565b6040516103a29190612eb3565b60405180910390f35b3480156103b757600080fd5b506103c0610a07565b6040516103cd9190612dd2565b60405180910390f35b3480156103e257600080fd5b506103eb610a11565b005b3480156103f957600080fd5b50610414600480360381019061040f9190612ece565b610aea565b005b34801561042257600080fd5b5061043d60048036038101906104389190612b63565b610bda565b005b34801561044b57600080fd5b5061046660048036038101906104619190612ece565b610c8c565b6040516104739190612dd2565b60405180910390f35b34801561048857600080fd5b50610491610cdd565b005b34801561049f57600080fd5b506104a8610e30565b6040516104b59190612dd2565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612ece565b610e36565b6040516104f29190612dd2565b60405180910390f35b34801561050757600080fd5b50610510610e4e565b60405161051d9190612eb3565b60405180910390f35b34801561053257600080fd5b5061053b610e77565b6040516105489190612dd2565b60405180910390f35b34801561055d57600080fd5b50610566610e7d565b6040516105739190612c29565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612efb565b610eba565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612cdf565b610f71565b6040516105d99190612d2e565b60405180910390f35b3480156105ee57600080fd5b506105f7610f8f565b005b34801561060557600080fd5b50610620600480360381019061061b9190612ece565b611060565b60405161062d9190612d2e565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612fc7565b611080565b005b34801561066b57600080fd5b5061068660048036038101906106819190613165565b6111ba565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131ae565b6112e4565b6040516106bc9190612dd2565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906131ee565b61136b565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612ece565b611412565b005b61071f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a39061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600781526020017f47696e74616d6100000000000000000000000000000000000000000000000000815250905090565b600061081a6108136115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108678484846117a7565b610928846108736115d4565b61092385604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d96115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b60006009905090565b61094a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a526115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610ac85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab06115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610ad157600080fd5b6000610adc30610c8c565b9050610ae781612090565b50565b610af26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b769061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610be26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c669061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610cd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610ce56115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d699061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600781526020017f47696e74616d6100000000000000000000000000000000000000000000000000815250905090565b610ec26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f469061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f85610f7e6115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fd06115d4565b73ffffffffffffffffffffffffffffffffffffffff1614806110465750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102e6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b61104f57600080fd5b600047905061105d81612384565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b6110886115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c9061327a565b60405180910390fd5b60005b838390508110156111b457816005600086868581811061113b5761113a61329a565b5b90506020020160208101906111509190612ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ac906132f8565b915050611118565b50505050565b6111c26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061327a565b60405180910390fd5b60005b81518110156112e0576001601060008484815181106112745761127361329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d8906132f8565b915050611252565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113736115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061327a565b60405180910390fd5b81601681905550806017819055505050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612dd2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610e4e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c8c565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610c8c565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612c29565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613027565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612c29565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b612b4081612b2b565b8114612b4b57600080fd5b50565b600081359050612b5d81612b37565b92915050565b600060208284031215612b7957612b78612b21565b5b6000612b8784828501612b4e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bca578082015181840152602081019050612baf565b83811115612bd9576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bfb82612b90565b612c058185612b9b565b9350612c15818560208601612bac565b612c1e81612bdf565b840191505092915050565b60006020820190508181036000830152612c438184612bf0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7682612c4b565b9050919050565b612c8681612c6b565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b6000819050919050565b612cbc81612ca9565b8114612cc757600080fd5b50565b600081359050612cd981612cb3565b92915050565b60008060408385031215612cf657612cf5612b21565b5b6000612d0485828601612c94565b9250506020612d1585828601612cca565b9150509250929050565b612d2881612b2b565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000819050919050565b6000612d6e612d69612d6484612c4b565b612d49565b612c4b565b9050919050565b6000612d8082612d53565b9050919050565b6000612d9282612d75565b9050919050565b612da281612d87565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612ca9565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600080600060608486031215612e0657612e05612b21565b5b6000612e1486828701612c94565b9350506020612e2586828701612c94565b9250506040612e3686828701612cca565b9150509250925092565b600060ff82169050919050565b612e5681612e40565b82525050565b6000602082019050612e716000830184612e4d565b92915050565b600060208284031215612e8d57612e8c612b21565b5b6000612e9b84828501612cca565b91505092915050565b612ead81612c6b565b82525050565b6000602082019050612ec86000830184612ea4565b92915050565b600060208284031215612ee457612ee3612b21565b5b6000612ef284828501612c94565b91505092915050565b60008060008060808587031215612f1557612f14612b21565b5b6000612f2387828801612cca565b9450506020612f3487828801612cca565b9350506040612f4587828801612cca565b9250506060612f5687828801612cca565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612f8757612f86612f62565b5b8235905067ffffffffffffffff811115612fa457612fa3612f67565b5b602083019150836020820283011115612fc057612fbf612f6c565b5b9250929050565b600080600060408486031215612fe057612fdf612b21565b5b600084013567ffffffffffffffff811115612ffe57612ffd612b26565b5b61300a86828701612f71565b9350935050602061301d86828701612b4e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305f82612bdf565b810181811067ffffffffffffffff8211171561307e5761307d613027565b5b80604052505050565b6000613091612b17565b905061309d8282613056565b919050565b600067ffffffffffffffff8211156130bd576130bc613027565b5b602082029050602081019050919050565b60006130e16130dc846130a2565b613087565b9050808382526020820190506020840283018581111561310457613103612f6c565b5b835b8181101561312d57806131198882612c94565b845260208401935050602081019050613106565b5050509392505050565b600082601f83011261314c5761314b612f62565b5b813561315c8482602086016130ce565b91505092915050565b60006020828403121561317b5761317a612b21565b5b600082013567ffffffffffffffff81111561319957613198612b26565b5b6131a584828501613137565b91505092915050565b600080604083850312156131c5576131c4612b21565b5b60006131d385828601612c94565b92505060206131e485828601612c94565b9150509250929050565b6000806040838503121561320557613204612b21565b5b600061321385828601612cca565b925050602061322485828601612cca565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b9b565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612ca9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b9b565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b9b565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b9b565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b9b565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b9b565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b9b565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b9b565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b9b565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b9b565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612ca9565b915061385383612ca9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b9b565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612ca9565b915061393b83612ca9565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c7d565b92915050565b60006020828403121561398457613983612b21565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612d49565b612ca9565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c6b565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612dc3565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612ea4565b613ae46080830184612dc3565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b9b565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612ca9565b9150613bc583612ca9565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b9b565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612ca9565b9150613c6283612ca9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b9b565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209096aacf185a2dc657a3ae9ed91bcaef72296a4a621eb18c552776ca913919c164736f6c63430008090033
Deployed Bytecode Sourcemap
4068:13481:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12238:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6569:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7590:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5412:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6942:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7791:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5717:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6755:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16812:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5460:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6847:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12344:236;;;;;;;;;;;;;:::i;:::-;;13011:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17003:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7045:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;5609:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5154:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5662:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6660:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16506:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7191:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12588:236;;;;;;;;;;;;;:::i;:::-;;5116:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17310:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12832:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7398:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17151:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12238:98;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12316:12:::1;12302:11;;:26;;;;;;;;;;;;;;;;;;12238:98:::0;:::o;6569:83::-;6606:13;6639:5;;;;;;;;;;;;;;;;;6632:12;;6569:83;:::o;7590:193::-;7692:4;7714:39;7723:12;:10;:12::i;:::-;7737:7;7746:6;7714:8;:39::i;:::-;7771:4;7764:11;;7590:193;;;;:::o;5412:41::-;;;;;;;;;;;;;:::o;6942:95::-;6995:7;4616:18;7015:14;;6942:95;:::o;7791:446::-;7923:4;7940:36;7950:6;7958:9;7969:6;7940:9;:36::i;:::-;7987:220;8010:6;8031:12;:10;:12::i;:::-;8058:138;8114:6;8058:138;;;;;;;;;;;;;;;;;:11;:19;8070:6;8058:19;;;;;;;;;;;;;;;:33;8078:12;:10;:12::i;:::-;8058:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7987:8;:220::i;:::-;8225:4;8218:11;;7791:446;;;;;:::o;5717:50::-;;;;:::o;6755:83::-;6796:5;4290:1;6814:16;;6755:83;:::o;16812:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16925:18:::1;16903:19;:40;;;;16812:139:::0;:::o;5460:28::-;;;;;;;;;;;;;:::o;6847:87::-;6887:7;6914:12;;6907:19;;6847:87;:::o;12344:236::-;12410:19;;;;;;;;;;;12394:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12449:17;;;;;;;;;;;12433:33;;:12;:10;:12::i;:::-;:33;;;12394:72;12386:81;;;;;;12478:23;12504:24;12522:4;12504:9;:24::i;:::-;12478:50;;12539:33;12556:15;12539:16;:33::i;:::-;12375:205;12344:236::o;13011:92::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13090:5:::1;13075:4;:12;13080:6;13075:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13011:92:::0;:::o;17003:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17084:12:::1;17070:11;;:26;;;;;;;;;;;;;;;;;;17003:101:::0;:::o;7045:138::-;7111:7;7138:37;7158:7;:16;7166:7;7158:16;;;;;;;;;;;;;;;;7138:19;:37::i;:::-;7131:44;;7045:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;5609:46::-;;;;:::o;5154:43::-;;;;;;;;;;;;;;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;5662:48::-;;;;:::o;6660:87::-;6699:13;6732:7;;;;;;;;;;;;;;;;;6725:14;;6660:87;:::o;16506:254::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16640:8:::1;16623:14;:25;;;;16677:9;16659:15;:27;;;;16712:6;16697:12;:21;;;;16745:7;16729:13;:23;;;;16506:254:::0;;;;:::o;7191:199::-;7296:4;7318:42;7328:12;:10;:12::i;:::-;7342:9;7353:6;7318:9;:42::i;:::-;7378:4;7371:11;;7191:199;;;;:::o;12588:236::-;12655:19;;;;;;;;;;;12639:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12694:17;;;;;;;;;;;12678:33;;:12;:10;:12::i;:::-;:33;;;12639:72;12631:81;;;;;;12723:26;12752:21;12723:50;;12784:32;12797:18;12784:12;:32::i;:::-;12620:204;12588:236::o;5116:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17310:234::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17427:9:::1;17423:114;17446:8;;:15;;17442:1;:19;17423:114;;;17517:8;17483:18;:31;17502:8;;17511:1;17502:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17483:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17463:3;;;;;:::i;:::-;;;;17423:114;;;;17310:234:::0;;;:::o;12832:171::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12910:9:::1;12905:91;12929:5;:12;12925:1;:16;12905:91;;;12980:4;12963;:14;12968:5;12974:1;12968:8;;;;;;;;:::i;:::-;;;;;;;;12963:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12943:3;;;;;:::i;:::-;;;;12905:91;;;;12832:171:::0;:::o;7398:184::-;7515:7;7547:11;:18;7559:5;7547:18;;;;;;;;;;;;;;;:27;7566:7;7547:27;;;;;;;;;;;;;;;;7540:34;;7398:184;;;;:::o;17151:151::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17247:5:::1;17232:12;:20;;;;17280:4;17263:14;:21;;;;17151:151:::0;;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8925:369::-;9069:1;9052:19;;:5;:19;;;;9044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9150:1;9131:21;;:7;:21;;;;9123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9232:6;9202:11;:18;9214:5;9202:18;;;;;;;;;;;;;;;:27;9221:7;9202:27;;;;;;;;;;;;;;;:36;;;;9270:7;9254:32;;9263:5;9254:32;;;9279:6;9254:32;;;;;;:::i;:::-;;;;;;;;8925:369;;;:::o;9302:2330::-;9440:1;9424:18;;:4;:18;;;;9416:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9517:1;9503:16;;:2;:16;;;;9495:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9587:1;9578:6;:10;9570:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9659:7;:5;:7::i;:::-;9651:15;;:4;:15;;;;:32;;;;;9676:7;:5;:7::i;:::-;9670:13;;:2;:13;;;;9651:32;9647:1259;;;9740:11;;;;;;;;;;;9735:144;;9788:7;:5;:7::i;:::-;9780:15;;:4;:15;;;9772:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:144;9913:12;;9903:6;:22;;9895:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9982:4;:10;9987:4;9982:10;;;;;;;;;;;;;;;;;;;;;;;;;9981:11;:24;;;;;9997:4;:8;10002:2;9997:8;;;;;;;;;;;;;;;;;;;;;;;;;9996:9;9981:24;9973:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10071:13;;;;;;;;;;;10065:19;;:2;:19;;;10062:146;;10138:14;;10129:6;10113:13;10123:2;10113:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10105:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10062:146;10224:28;10255:24;10273:4;10255:9;:24::i;:::-;10224:55;;10294:12;10333:19;;10309:20;:43;;10294:58;;10396:12;;10372:20;:36;10369:124;;10465:12;;10442:35;;10369:124;10513:7;:18;;;;;10525:6;;;;;;;;;;10524:7;10513:18;:43;;;;;10543:13;;;;;;;;;;;10535:21;;:4;:21;;;;10513:43;:58;;;;;10560:11;;;;;;;;;;;10513:58;:87;;;;;10576:18;:24;10595:4;10576:24;;;;;;;;;;;;;;;;;;;;;;;;;10575:25;10513:87;:114;;;;;10605:18;:22;10624:2;10605:22;;;;;;;;;;;;;;;;;;;;;;;;;10604:23;10513:114;10509:386;;;10648:38;10665:20;10648:16;:38::i;:::-;10705:26;10734:21;10705:50;;10799:1;10778:18;:22;10774:106;;;10825:35;10838:21;10825:12;:35::i;:::-;10774:106;10629:266;10509:386;9685:1221;;9647:1259;10918:12;10933:4;10918:19;;10982:18;:24;11001:4;10982:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11010:18;:22;11029:2;11010:22;;;;;;;;;;;;;;;;;;;;;;;;;10982:50;10981:102;;;;11046:13;;;;;;;;;;;11038:21;;:4;:21;;;;:44;;;;;11069:13;;;;;;;;;;;11063:19;;:2;:19;;;;11038:44;10981:102;10977:594;;;11110:5;11100:15;;10977:594;;;11193:13;;;;;;;;;;;11185:21;;:4;:21;;;:55;;;;;11224:15;;;;;;;;;;;11210:30;;:2;:30;;;;11185:55;11182:162;;;11273:14;;11261:9;:26;;;;11316:12;;11306:7;:22;;;;11182:162;11403:13;;;;;;;;;;;11397:19;;:2;:19;;;:55;;;;;11436:15;;;;;;;;;;;11420:32;;:4;:32;;;;11397:55;11393:165;;;11485:15;;11473:9;:27;;;;11529:13;;11519:7;:23;;;;11393:165;10977:594;11583:41;11598:4;11604:2;11608:6;11616:7;11583:14;:41::i;:::-;9405:2227;9302:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;11640:483::-;5870:4;5861:6;;:13;;;;;;;;;;;;;;;;;;11718:21:::1;11756:1;11742:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11718:40;;11787:4;11769;11774:1;11769:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11813:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11803:4;11808:1;11803:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11846:62;11863:4;11878:15;;;;;;;;;;;11896:11;11846:8;:62::i;:::-;11919:15;;;;;;;;;;;:66;;;12000:11;12026:1;12042:4;12069;12089:15;11919:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11707:416;5906:5:::0;5897:6;;:14;;;;;;;;;;;;;;;;;;11640:483;:::o;8245:323::-;8340:7;8398;;8387;:18;;8365:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8486:19;8508:10;:8;:10::i;:::-;8486:32;;8536:24;8548:11;8536:7;:11;;:24;;;;:::i;:::-;8529:31;;;8245:323;;;:::o;12131:99::-;12188:17;;;;;;;;;;;:26;;:34;12215:6;12188:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12131:99;:::o;13111:279::-;13267:7;13262:25;;13276:11;:9;:11::i;:::-;13262:25;13298:44;13316:6;13324:9;13335:6;13298:17;:44::i;:::-;13358:7;13353:29;;13367:15;:13;:15::i;:::-;13353:29;13111:279;;;;:::o;16069:164::-;16111:7;16132:15;16149;16168:19;:17;:19::i;:::-;16131:56;;;;16205:20;16217:7;16205;:11;;:20;;;;:::i;:::-;16198:27;;;;16069:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8576:216::-;8633:1;8620:9;;:14;:30;;;;;8649:1;8638:7;;:12;8620:30;8616:43;;;8652:7;;8616:43;8691:9;;8671:17;:29;;;;8729:7;;8711:15;:25;;;;8761:1;8749:9;:13;;;;8783:1;8773:7;:11;;;;8576:216;:::o;13398:610::-;13545:15;13575:23;13613:12;13640:23;13678:12;13705:13;13732:19;13743:7;13732:10;:19::i;:::-;13530:221;;;;;;;;;;;;13780:28;13800:7;13780;:15;13788:6;13780:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13762:7;:15;13770:6;13762:15;;;;;;;;;;;;;;;:46;;;;13840:39;13863:15;13840:7;:18;13848:9;13840:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13819:7;:18;13827:9;13819:18;;;;;;;;;;;;;;;:60;;;;13890:16;13900:5;13890:9;:16::i;:::-;13917:23;13929:4;13935;13917:11;:23::i;:::-;13973:9;13956:44;;13965:6;13956:44;;;13984:15;13956:44;;;;;;:::i;:::-;;;;;;;;13519:489;;;;;;13398:610;;;:::o;8800:117::-;8856:17;;8844:9;:29;;;;8894:15;;8884:7;:25;;;;8800:117::o;16241:257::-;16292:7;16301;16321:15;16339:7;;16321:25;;16357:15;4616:18;16357:25;;16407:20;4616:18;16407:7;;:11;;:20;;;;:::i;:::-;16397:7;:30;16393:61;;;16437:7;;4616:18;16429:25;;;;;;;;16393:61;16473:7;16482;16465:25;;;;;;16241:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14427:615::-;14527:7;14549;14571;14593;14615;14637;14673:23;14698:12;14712:13;14742:40;14754:7;14763:9;;14774:7;;14742:11;:40::i;:::-;14672:110;;;;;;14793:19;14815:10;:8;:10::i;:::-;14793:32;;14837:15;14854:23;14879:12;14908:46;14920:7;14929:4;14935:5;14942:11;14908;:46::i;:::-;14836:118;;;;;;14973:7;14982:15;14999:4;15005:15;15022:4;15028:5;14965:69;;;;;;;;;;;;;;;;;;;14427:615;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;14016:211::-;14069:19;14091:10;:8;:10::i;:::-;14069:32;;14112:13;14128:22;14138:11;14128:5;:9;;:22;;;;:::i;:::-;14112:38;;14186:33;14213:5;14186:7;:22;14202:4;14186:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14161:7;:22;14177:4;14161:22;;;;;;;;;;;;;;;:58;;;;14058:169;;14016:211;:::o;14235:147::-;14313:17;14325:4;14313:7;;:11;;:17;;;;:::i;:::-;14303:7;:27;;;;14354:20;14369:4;14354:10;;:14;;:20;;;;:::i;:::-;14341:10;:33;;;;14235:147;;:::o;15050:469::-;15219:7;15241;15263;15298:12;15313:30;15339:3;15313:21;15325:8;15313:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15298:45;;15354:13;15370:28;15394:3;15370:19;15382:6;15370:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15354:44;;15409:23;15435:28;15457:5;15435:17;15447:4;15435:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15409:54;;15482:15;15499:4;15505:5;15474:37;;;;;;;;;15050:469;;;;;;;:::o;15527:534::-;15721:7;15743;15765;15800:15;15818:24;15830:11;15818:7;:11;;:24;;;;:::i;:::-;15800:42;;15853:12;15868:21;15877:11;15868:4;:8;;:21;;;;:::i;:::-;15853:36;;15900:13;15916:22;15926:11;15916:5;:9;;:22;;;;:::i;:::-;15900:38;;15949:23;15975:28;15997:5;15975:17;15987:4;15975:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15949:54;;16022:7;16031:15;16048:4;16014:39;;;;;;;;;;15527:534;;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:99::-;1072:6;1106:5;1100:12;1090:22;;1020:99;;;:::o;1125:169::-;1209:11;1243:6;1238:3;1231:19;1283:4;1278:3;1274:14;1259:29;;1125:169;;;;:::o;1300:307::-;1368:1;1378:113;1392:6;1389:1;1386:13;1378:113;;;1477:1;1472:3;1468:11;1462:18;1458:1;1453:3;1449:11;1442:39;1414:2;1411:1;1407:10;1402:15;;1378:113;;;1509:6;1506:1;1503:13;1500:101;;;1589:1;1580:6;1575:3;1571:16;1564:27;1500:101;1349:258;1300:307;;;:::o;1613:102::-;1654:6;1705:2;1701:7;1696:2;1689:5;1685:14;1681:28;1671:38;;1613:102;;;:::o;1721:364::-;1809:3;1837:39;1870:5;1837:39;:::i;:::-;1892:71;1956:6;1951:3;1892:71;:::i;:::-;1885:78;;1972:52;2017:6;2012:3;2005:4;1998:5;1994:16;1972:52;:::i;:::-;2049:29;2071:6;2049:29;:::i;:::-;2044:3;2040:39;2033:46;;1813:272;1721:364;;;;:::o;2091:313::-;2204:4;2242:2;2231:9;2227:18;2219:26;;2291:9;2285:4;2281:20;2277:1;2266:9;2262:17;2255:47;2319:78;2392:4;2383:6;2319:78;:::i;:::-;2311:86;;2091:313;;;;:::o;2410:126::-;2447:7;2487:42;2480:5;2476:54;2465:65;;2410:126;;;:::o;2542:96::-;2579:7;2608:24;2626:5;2608:24;:::i;:::-;2597:35;;2542:96;;;:::o;2644:122::-;2717:24;2735:5;2717:24;:::i;:::-;2710:5;2707:35;2697:63;;2756:1;2753;2746:12;2697:63;2644:122;:::o;2772:139::-;2818:5;2856:6;2843:20;2834:29;;2872:33;2899:5;2872:33;:::i;:::-;2772:139;;;;:::o;2917:77::-;2954:7;2983:5;2972:16;;2917:77;;;:::o;3000:122::-;3073:24;3091:5;3073:24;:::i;:::-;3066:5;3063:35;3053:63;;3112:1;3109;3102:12;3053:63;3000:122;:::o;3128:139::-;3174:5;3212:6;3199:20;3190:29;;3228:33;3255:5;3228:33;:::i;:::-;3128:139;;;;:::o;3273:474::-;3341:6;3349;3398:2;3386:9;3377:7;3373:23;3369:32;3366:119;;;3404:79;;:::i;:::-;3366:119;3524:1;3549:53;3594:7;3585:6;3574:9;3570:22;3549:53;:::i;:::-;3539:63;;3495:117;3651:2;3677:53;3722:7;3713:6;3702:9;3698:22;3677:53;:::i;:::-;3667:63;;3622:118;3273:474;;;;;:::o;3753:109::-;3834:21;3849:5;3834:21;:::i;:::-;3829:3;3822:34;3753:109;;:::o;3868:210::-;3955:4;3993:2;3982:9;3978:18;3970:26;;4006:65;4068:1;4057:9;4053:17;4044:6;4006:65;:::i;:::-;3868:210;;;;:::o;4084:60::-;4112:3;4133:5;4126:12;;4084:60;;;:::o;4150:142::-;4200:9;4233:53;4251:34;4260:24;4278:5;4260:24;:::i;:::-;4251:34;:::i;:::-;4233:53;:::i;:::-;4220:66;;4150:142;;;:::o;4298:126::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4298:126;;;:::o;4430:152::-;4506:9;4539:37;4570:5;4539:37;:::i;:::-;4526:50;;4430:152;;;:::o;4588:183::-;4701:63;4758:5;4701:63;:::i;:::-;4696:3;4689:76;4588:183;;:::o;4777:274::-;4896:4;4934:2;4923:9;4919:18;4911:26;;4947:97;5041:1;5030:9;5026:17;5017:6;4947:97;:::i;:::-;4777:274;;;;:::o;5057:118::-;5144:24;5162:5;5144:24;:::i;:::-;5139:3;5132:37;5057:118;;:::o;5181:222::-;5274:4;5312:2;5301:9;5297:18;5289:26;;5325:71;5393:1;5382:9;5378:17;5369:6;5325:71;:::i;:::-;5181:222;;;;:::o;5409:619::-;5486:6;5494;5502;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5804:2;5830:53;5875:7;5866:6;5855:9;5851:22;5830:53;:::i;:::-;5820:63;;5775:118;5932:2;5958:53;6003:7;5994:6;5983:9;5979:22;5958:53;:::i;:::-;5948:63;;5903:118;5409:619;;;;;:::o;6034:86::-;6069:7;6109:4;6102:5;6098:16;6087:27;;6034:86;;;:::o;6126:112::-;6209:22;6225:5;6209:22;:::i;:::-;6204:3;6197:35;6126:112;;:::o;6244:214::-;6333:4;6371:2;6360:9;6356:18;6348:26;;6384:67;6448:1;6437:9;6433:17;6424:6;6384:67;:::i;:::-;6244:214;;;;:::o;6464:329::-;6523:6;6572:2;6560:9;6551:7;6547:23;6543:32;6540:119;;;6578:79;;:::i;:::-;6540:119;6698:1;6723:53;6768:7;6759:6;6748:9;6744:22;6723:53;:::i;:::-;6713:63;;6669:117;6464:329;;;;:::o;6799:118::-;6886:24;6904:5;6886:24;:::i;:::-;6881:3;6874:37;6799:118;;:::o;6923:222::-;7016:4;7054:2;7043:9;7039:18;7031:26;;7067:71;7135:1;7124:9;7120:17;7111:6;7067:71;:::i;:::-;6923:222;;;;:::o;7151:329::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:180::-;9969:77;9966:1;9959:88;10066:4;10063:1;10056:15;10090:4;10087:1;10080:15;10107:281;10190:27;10212:4;10190:27;:::i;:::-;10182:6;10178:40;10320:6;10308:10;10305:22;10284:18;10272:10;10269:34;10266:62;10263:88;;;10331:18;;:::i;:::-;10263:88;10371:10;10367:2;10360:22;10150:238;10107:281;;:::o;10394:129::-;10428:6;10455:20;;:::i;:::-;10445:30;;10484:33;10512:4;10504:6;10484:33;:::i;:::-;10394:129;;;:::o;10529:311::-;10606:4;10696:18;10688:6;10685:30;10682:56;;;10718:18;;:::i;:::-;10682:56;10768:4;10760:6;10756:17;10748:25;;10828:4;10822;10818:15;10810:23;;10529:311;;;:::o;10863:710::-;10959:5;10984:81;11000:64;11057:6;11000:64;:::i;:::-;10984:81;:::i;:::-;10975:90;;11085:5;11114:6;11107:5;11100:21;11148:4;11141:5;11137:16;11130:23;;11201:4;11193:6;11189:17;11181:6;11177:30;11230:3;11222:6;11219:15;11216:122;;;11249:79;;:::i;:::-;11216:122;11364:6;11347:220;11381:6;11376:3;11373:15;11347:220;;;11456:3;11485:37;11518:3;11506:10;11485:37;:::i;:::-;11480:3;11473:50;11552:4;11547:3;11543:14;11536:21;;11423:144;11407:4;11402:3;11398:14;11391:21;;11347:220;;;11351:21;10965:608;;10863:710;;;;;:::o;11596:370::-;11667:5;11716:3;11709:4;11701:6;11697:17;11693:27;11683:122;;11724:79;;:::i;:::-;11683:122;11841:6;11828:20;11866:94;11956:3;11948:6;11941:4;11933:6;11929:17;11866:94;:::i;:::-;11857:103;;11673:293;11596:370;;;;:::o;11972:539::-;12056:6;12105:2;12093:9;12084:7;12080:23;12076:32;12073:119;;;12111:79;;:::i;:::-;12073:119;12259:1;12248:9;12244:17;12231:31;12289:18;12281:6;12278:30;12275:117;;;12311:79;;:::i;:::-;12275:117;12416:78;12486:7;12477:6;12466:9;12462:22;12416:78;:::i;:::-;12406:88;;12202:302;11972:539;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:143::-;25883:5;25914:6;25908:13;25899:22;;25930:33;25957:5;25930:33;:::i;:::-;25826:143;;;;:::o;25975:351::-;26045:6;26094:2;26082:9;26073:7;26069:23;26065:32;26062:119;;;26100:79;;:::i;:::-;26062:119;26220:1;26245:64;26301:7;26292:6;26281:9;26277:22;26245:64;:::i;:::-;26235:74;;26191:128;25975:351;;;;:::o;26332:85::-;26377:7;26406:5;26395:16;;26332:85;;;:::o;26423:158::-;26481:9;26514:61;26532:42;26541:32;26567:5;26541:32;:::i;:::-;26532:42;:::i;:::-;26514:61;:::i;:::-;26501:74;;26423:158;;;:::o;26587:147::-;26682:45;26721:5;26682:45;:::i;:::-;26677:3;26670:58;26587:147;;:::o;26740:114::-;26807:6;26841:5;26835:12;26825:22;;26740:114;;;:::o;26860:184::-;26959:11;26993:6;26988:3;26981:19;27033:4;27028:3;27024:14;27009:29;;26860:184;;;;:::o;27050:132::-;27117:4;27140:3;27132:11;;27170:4;27165:3;27161:14;27153:22;;27050:132;;;:::o;27188:108::-;27265:24;27283:5;27265:24;:::i;:::-;27260:3;27253:37;27188:108;;:::o;27302:179::-;27371:10;27392:46;27434:3;27426:6;27392:46;:::i;:::-;27470:4;27465:3;27461:14;27447:28;;27302:179;;;;:::o;27487:113::-;27557:4;27589;27584:3;27580:14;27572:22;;27487:113;;;:::o;27636:732::-;27755:3;27784:54;27832:5;27784:54;:::i;:::-;27854:86;27933:6;27928:3;27854:86;:::i;:::-;27847:93;;27964:56;28014:5;27964:56;:::i;:::-;28043:7;28074:1;28059:284;28084:6;28081:1;28078:13;28059:284;;;28160:6;28154:13;28187:63;28246:3;28231:13;28187:63;:::i;:::-;28180:70;;28273:60;28326:6;28273:60;:::i;:::-;28263:70;;28119:224;28106:1;28103;28099:9;28094:14;;28059:284;;;28063:14;28359:3;28352:10;;27760:608;;;27636:732;;;;:::o;28374:831::-;28637:4;28675:3;28664:9;28660:19;28652:27;;28689:71;28757:1;28746:9;28742:17;28733:6;28689:71;:::i;:::-;28770:80;28846:2;28835:9;28831:18;28822:6;28770:80;:::i;:::-;28897:9;28891:4;28887:20;28882:2;28871:9;28867:18;28860:48;28925:108;29028:4;29019:6;28925:108;:::i;:::-;28917:116;;29043:72;29111:2;29100:9;29096:18;29087:6;29043:72;:::i;:::-;29125:73;29193:3;29182:9;29178:19;29169:6;29125:73;:::i;:::-;28374:831;;;;;;;;:::o;29211:229::-;29351:34;29347:1;29339:6;29335:14;29328:58;29420:12;29415:2;29407:6;29403:15;29396:37;29211:229;:::o;29446:366::-;29588:3;29609:67;29673:2;29668:3;29609:67;:::i;:::-;29602:74;;29685:93;29774:3;29685:93;:::i;:::-;29803:2;29798:3;29794:12;29787:19;;29446:366;;;:::o;29818:419::-;29984:4;30022:2;30011:9;30007:18;29999:26;;30071:9;30065:4;30061:20;30057:1;30046:9;30042:17;30035:47;30099:131;30225:4;30099:131;:::i;:::-;30091:139;;29818:419;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o
Swarm Source
ipfs://9096aacf185a2dc657a3ae9ed91bcaef72296a4a621eb18c552776ca913919c1
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.