ERC-20
Overview
Max Total Supply
1,000,000,000 Triple Toad Inu
Holders
44
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
19,000,000 Triple Toad InuValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TripleToadInu
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-18 */ /** In Chinese folklore, the legendary toad is thought to have the ability to produce gold and silver coins from its mouth. This toad lived on the moon with Liu Hai, the God of Wealth. There are various other tales that are told about the toad. There is one story where the wife of one of the eight immortals was transformed into a toad as a result of stealing the elixir of immortality from her spouse. Another fable explains that lunar eclipses are a result of the toad swallowing the moon. Introducing Triple Toad Inu An ERC20 token which will boost your fortunes simply by holding https://t.me/TripleToadInu */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.10; 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 TripleToadInu is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "TTI"; string private constant _symbol = "Triple Toad Inu"; 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; //Will be reduced once stabilize uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 5; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 5; //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(0xB1409F95b03aBE94c093aa92815213ebABBBbC8e); address payable private _marketingAddress = payable(0xB1409F95b03aBE94c093aa92815213ebABBBbC8e); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = _tTotal; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 1000000 * 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 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 removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //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 >= _swapTokensAtAmount*5) { contractTokenBalance = _swapTokensAtAmount*5; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 50000000000000000) { 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 manualswap() external { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(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) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; require ((_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy) <= 15,"Total fee must be less than 15%"); } //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 setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; require (_maxTxAmount > _tTotal / 100, "Max tx must be more than 1%"); } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; require (_maxWalletSize > _tTotal / 100, "Max Wallet must be more than 1%"); } 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":"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":"blockBots","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":"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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","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
6080604052670de0b6b3a76400006000196200001c91906200072b565b6000196200002b919062000792565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573b1409f95b03abe94c093aa92815213ebabbbbc8e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b1409f95b03abe94c093aa92815213ebabbbbc8e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550670de0b6b3a764000060165566470de4df82000060175566038d7ea4c680006018553480156200018357600080fd5b50600062000196620006c160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024b620006c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000837565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000837565b6040518363ffffffff1660e01b8152600401620004029291906200087a565b6020604051808303816000875af115801562000422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000448919062000837565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049e620006c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064b620006c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b29190620008b8565b60405180910390a350620008d5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073882620006f2565b91506200074583620006f2565b925082620007585762000757620006fc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079f82620006f2565b9150620007ac83620006f2565b925082821015620007c257620007c162000763565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007ff82620007d2565b9050919050565b6200081181620007f2565b81146200081d57600080fd5b50565b600081519050620008318162000806565b92915050565b60006020828403121562000850576200084f620007cd565b5b6000620008608482850162000820565b91505092915050565b6200087481620007f2565b82525050565b600060408201905062000891600083018562000869565b620008a0602083018462000869565b9392505050565b620008b281620006f2565b82525050565b6000602082019050620008cf6000830184620008a7565b92915050565b613ddd80620008e56000396000f3fe6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610628578063dd62ed3e14610651578063ea1644d51461068e578063f2fde38b146106b7576101cc565b8063a2a957bb1461056e578063a9059cbb14610597578063bfd79284146105d4578063c3c8cd8014610611576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f9a55c0146104ef57806395d89b411461051a57806398a5c31514610545576101cc565b806374010ece146104335780637d1db4a51461045c5780637f2feddc14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c25565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612cf6565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612d4e565b610847565b6040516102599190612da9565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612e23565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612e4d565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612e68565b61089b565b6040516102ec9190612da9565b60405180910390f35b34801561030157600080fd5b5061030a610974565b6040516103179190612e4d565b60405180910390f35b34801561032c57600080fd5b5061033561097a565b6040516103429190612ed7565b60405180910390f35b34801561035757600080fd5b50610360610983565b60405161036d9190612f01565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612f1c565b6109a9565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612f75565b610a99565b005b3480156103d457600080fd5b506103dd610b4b565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612f1c565b610b5c565b6040516104139190612e4d565b60405180910390f35b34801561042857600080fd5b50610431610bad565b005b34801561043f57600080fd5b5061045a60048036038101906104559190612fa2565b610d00565b005b34801561046857600080fd5b50610471610df7565b60405161047e9190612e4d565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612f1c565b610dfd565b6040516104bb9190612e4d565b60405180910390f35b3480156104d057600080fd5b506104d9610e15565b6040516104e69190612f01565b60405180910390f35b3480156104fb57600080fd5b50610504610e3e565b6040516105119190612e4d565b60405180910390f35b34801561052657600080fd5b5061052f610e44565b60405161053c9190612cf6565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190612fa2565b610e81565b005b34801561057a57600080fd5b5061059560048036038101906105909190612fcf565b610f20565b005b3480156105a357600080fd5b506105be60048036038101906105b99190612d4e565b611037565b6040516105cb9190612da9565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190612f1c565b611055565b6040516106089190612da9565b60405180910390f35b34801561061d57600080fd5b50610626611075565b005b34801561063457600080fd5b5061064f600480360381019061064a9190613091565b61108e565b005b34801561065d57600080fd5b50610678600480360381019061067391906130f1565b6111c8565b6040516106859190612e4d565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190612fa2565b61124f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190612f1c565b611346565b005b6106e8611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c9061317d565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a5761079961319d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe906131fb565b915050610778565b5050565b60606040518060400160405280600381526020017f5454490000000000000000000000000000000000000000000000000000000000815250905090565b600061085b610854611508565b8484611510565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108a88484846116db565b610969846108b4611508565b61096485604051806060016040528060288152602001613d8060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091a611508565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7e9092919063ffffffff16565b611510565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b1611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a359061317d565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa1611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b259061317d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610b5981611fe2565b50565b6000610ba6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e565b9050919050565b610bb5611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c399061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d08611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c9061317d565b60405180910390fd5b806016819055506064670de0b6b3a7640000610db19190613273565b60165411610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb906132f0565b60405180910390fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600f81526020017f547269706c6520546f616420496e750000000000000000000000000000000000815250905090565b610e89611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061317d565b60405180910390fd5b8060188190555050565b610f28611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac9061317d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600f600954600a54600854610fe69190613310565b610ff09190613310565b1115611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906133b2565b60405180910390fd5b50505050565b600061104b611044611508565b84846116db565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b600061108030610b5c565b905061108b816120bc565b50565b611096611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061317d565b60405180910390fd5b60005b838390508110156111c25781600560008686858181106111495761114861319d565b5b905060200201602081019061115e9190612f1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ba906131fb565b915050611126565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611257611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061317d565b60405180910390fd5b806017819055506064670de0b6b3a76400006113009190613273565b60175411611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a9061341e565b60405180910390fd5b50565b61134e611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d29061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906134b0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613542565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906135d4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ce9190612e4d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613666565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906136f8565b60405180910390fd5b600081116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061378a565b60405180910390fd5b611806610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118745750611844610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c7d57601560149054906101000a900460ff1661190357611895610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f99061381c565b60405180910390fd5b5b601654811115611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613888565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ec5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061391a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad85760175481611a8d84610b5c565b611a979190613310565b10611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace906139ac565b60405180910390fd5b5b6000611ae330610b5c565b9050600060185482101590506005601854611afe91906139cc565b8210611b16576005601854611b1391906139cc565b91505b808015611b2e575060158054906101000a900460ff16155b8015611b885750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba05750601560169054906101000a900460ff165b8015611bf65750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c4c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7a57611c5a826120bc565b600047905066b1a2bc2ec50000811115611c7857611c7747611fe2565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d245750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dd75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611de55760009050611f6c565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e905750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f535750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6b57600a54600c81905550600b54600d819055505b5b611f7884848484612333565b50505050565b6000838311158290611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd9190612cf6565b60405180910390fd5b5060008385611fd59190613a26565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561204a573d6000803e3d6000fd5b5050565b6000600654821115612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90613acc565b60405180910390fd5b600061209f612360565b90506120b4818461238b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120f3576120f2612a84565b5b6040519080825280602002602001820160405280156121215781602001602082028036833780820191505090505b50905030816000815181106121395761213861319d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122049190613b01565b816001815181106122185761221761319d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227f30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611510565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e3959493929190613c27565b600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612341576123406123d5565b5b61234c848484612418565b8061235a576123596125e3565b5b50505050565b600080600061236d6125f7565b91509150612384818361238b90919063ffffffff16565b9250505090565b60006123cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612656565b905092915050565b6000600c541480156123e957506000600d54145b156123f357612416565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061242a876126b9565b95509550955095509550955061248886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612569816127c9565b6125738483612886565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125d09190612e4d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061262b670de0b6b3a764000060065461238b90919063ffffffff16565b82101561264957600654670de0b6b3a7640000935093505050612652565b81819350935050505b9091565b6000808311829061269d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126949190612cf6565b60405180910390fd5b50600083856126ac9190613273565b9050809150509392505050565b60008060008060008060008060006126d68a600c54600d546128c0565b92509250925060006126e6612360565b905060008060006126f98e878787612956565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061276383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7e565b905092915050565b600080828461277a9190613310565b9050838110156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690613ccd565b60405180910390fd5b8091505092915050565b60006127d3612360565b905060006127ea82846129df90919063ffffffff16565b905061283e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61289b8260065461272190919063ffffffff16565b6006819055506128b68160075461276b90919063ffffffff16565b6007819055505050565b6000806000806128ec60646128de888a6129df90919063ffffffff16565b61238b90919063ffffffff16565b905060006129166064612908888b6129df90919063ffffffff16565b61238b90919063ffffffff16565b9050600061293f82612931858c61272190919063ffffffff16565b61272190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061296f85896129df90919063ffffffff16565b9050600061298686896129df90919063ffffffff16565b9050600061299d87896129df90919063ffffffff16565b905060006129c6826129b8858761272190919063ffffffff16565b61272190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129f25760009050612a54565b60008284612a0091906139cc565b9050828482612a0f9190613273565b14612a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4690613d5f565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612abc82612a73565b810181811067ffffffffffffffff82111715612adb57612ada612a84565b5b80604052505050565b6000612aee612a5a565b9050612afa8282612ab3565b919050565b600067ffffffffffffffff821115612b1a57612b19612a84565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5b82612b30565b9050919050565b612b6b81612b50565b8114612b7657600080fd5b50565b600081359050612b8881612b62565b92915050565b6000612ba1612b9c84612aff565b612ae4565b90508083825260208201905060208402830185811115612bc457612bc3612b2b565b5b835b81811015612bed5780612bd98882612b79565b845260208401935050602081019050612bc6565b5050509392505050565b600082601f830112612c0c57612c0b612a6e565b5b8135612c1c848260208601612b8e565b91505092915050565b600060208284031215612c3b57612c3a612a64565b5b600082013567ffffffffffffffff811115612c5957612c58612a69565b5b612c6584828501612bf7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ca8578082015181840152602081019050612c8d565b83811115612cb7576000848401525b50505050565b6000612cc882612c6e565b612cd28185612c79565b9350612ce2818560208601612c8a565b612ceb81612a73565b840191505092915050565b60006020820190508181036000830152612d108184612cbd565b905092915050565b6000819050919050565b612d2b81612d18565b8114612d3657600080fd5b50565b600081359050612d4881612d22565b92915050565b60008060408385031215612d6557612d64612a64565b5b6000612d7385828601612b79565b9250506020612d8485828601612d39565b9150509250929050565b60008115159050919050565b612da381612d8e565b82525050565b6000602082019050612dbe6000830184612d9a565b92915050565b6000819050919050565b6000612de9612de4612ddf84612b30565b612dc4565b612b30565b9050919050565b6000612dfb82612dce565b9050919050565b6000612e0d82612df0565b9050919050565b612e1d81612e02565b82525050565b6000602082019050612e386000830184612e14565b92915050565b612e4781612d18565b82525050565b6000602082019050612e626000830184612e3e565b92915050565b600080600060608486031215612e8157612e80612a64565b5b6000612e8f86828701612b79565b9350506020612ea086828701612b79565b9250506040612eb186828701612d39565b9150509250925092565b600060ff82169050919050565b612ed181612ebb565b82525050565b6000602082019050612eec6000830184612ec8565b92915050565b612efb81612b50565b82525050565b6000602082019050612f166000830184612ef2565b92915050565b600060208284031215612f3257612f31612a64565b5b6000612f4084828501612b79565b91505092915050565b612f5281612d8e565b8114612f5d57600080fd5b50565b600081359050612f6f81612f49565b92915050565b600060208284031215612f8b57612f8a612a64565b5b6000612f9984828501612f60565b91505092915050565b600060208284031215612fb857612fb7612a64565b5b6000612fc684828501612d39565b91505092915050565b60008060008060808587031215612fe957612fe8612a64565b5b6000612ff787828801612d39565b945050602061300887828801612d39565b935050604061301987828801612d39565b925050606061302a87828801612d39565b91505092959194509250565b600080fd5b60008083601f84011261305157613050612a6e565b5b8235905067ffffffffffffffff81111561306e5761306d613036565b5b60208301915083602082028301111561308a57613089612b2b565b5b9250929050565b6000806000604084860312156130aa576130a9612a64565b5b600084013567ffffffffffffffff8111156130c8576130c7612a69565b5b6130d48682870161303b565b935093505060206130e786828701612f60565b9150509250925092565b6000806040838503121561310857613107612a64565b5b600061311685828601612b79565b925050602061312785828601612b79565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613167602083612c79565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320682612d18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613239576132386131cc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061327e82612d18565b915061328983612d18565b92508261329957613298613244565b5b828204905092915050565b7f4d6178207478206d757374206265206d6f7265207468616e2031250000000000600082015250565b60006132da601b83612c79565b91506132e5826132a4565b602082019050919050565b60006020820190508181036000830152613309816132cd565b9050919050565b600061331b82612d18565b915061332683612d18565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561335b5761335a6131cc565b5b828201905092915050565b7f546f74616c20666565206d757374206265206c657373207468616e2031352500600082015250565b600061339c601f83612c79565b91506133a782613366565b602082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f4d61782057616c6c6574206d757374206265206d6f7265207468616e20312500600082015250565b6000613408601f83612c79565b9150613413826133d2565b602082019050919050565b60006020820190508181036000830152613437816133fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061349a602683612c79565b91506134a58261343e565b604082019050919050565b600060208201905081810360008301526134c98161348d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061352c602483612c79565b9150613537826134d0565b604082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135be602283612c79565b91506135c982613562565b604082019050919050565b600060208201905081810360008301526135ed816135b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613650602583612c79565b915061365b826135f4565b604082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136e2602383612c79565b91506136ed82613686565b604082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613774602983612c79565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613806603f83612c79565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613872601c83612c79565b915061387d8261383c565b602082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613904602383612c79565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613996602383612c79565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b60006139d782612d18565b91506139e283612d18565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1b57613a1a6131cc565b5b828202905092915050565b6000613a3182612d18565b9150613a3c83612d18565b925082821015613a4f57613a4e6131cc565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ab6602a83612c79565b9150613ac182613a5a565b604082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b600081519050613afb81612b62565b92915050565b600060208284031215613b1757613b16612a64565b5b6000613b2584828501613aec565b91505092915050565b6000819050919050565b6000613b53613b4e613b4984613b2e565b612dc4565b612d18565b9050919050565b613b6381613b38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b9e81612b50565b82525050565b6000613bb08383613b95565b60208301905092915050565b6000602082019050919050565b6000613bd482613b69565b613bde8185613b74565b9350613be983613b85565b8060005b83811015613c1a578151613c018882613ba4565b9750613c0c83613bbc565b925050600181019050613bed565b5085935050505092915050565b600060a082019050613c3c6000830188612e3e565b613c496020830187613b5a565b8181036040830152613c5b8186613bc9565b9050613c6a6060830185612ef2565b613c776080830184612e3e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cb7601b83612c79565b9150613cc282613c81565b602082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d49602183612c79565b9150613d5482613ced565b604082019050919050565b60006020820190508181036000830152613d7881613d3c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207169fca30d62a696eb5a4192b742d72756ccc28f5349add9d072c92df0884d8e64736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610628578063dd62ed3e14610651578063ea1644d51461068e578063f2fde38b146106b7576101cc565b8063a2a957bb1461056e578063a9059cbb14610597578063bfd79284146105d4578063c3c8cd8014610611576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f9a55c0146104ef57806395d89b411461051a57806398a5c31514610545576101cc565b806374010ece146104335780637d1db4a51461045c5780637f2feddc14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c25565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612cf6565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612d4e565b610847565b6040516102599190612da9565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612e23565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612e4d565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612e68565b61089b565b6040516102ec9190612da9565b60405180910390f35b34801561030157600080fd5b5061030a610974565b6040516103179190612e4d565b60405180910390f35b34801561032c57600080fd5b5061033561097a565b6040516103429190612ed7565b60405180910390f35b34801561035757600080fd5b50610360610983565b60405161036d9190612f01565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612f1c565b6109a9565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612f75565b610a99565b005b3480156103d457600080fd5b506103dd610b4b565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612f1c565b610b5c565b6040516104139190612e4d565b60405180910390f35b34801561042857600080fd5b50610431610bad565b005b34801561043f57600080fd5b5061045a60048036038101906104559190612fa2565b610d00565b005b34801561046857600080fd5b50610471610df7565b60405161047e9190612e4d565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612f1c565b610dfd565b6040516104bb9190612e4d565b60405180910390f35b3480156104d057600080fd5b506104d9610e15565b6040516104e69190612f01565b60405180910390f35b3480156104fb57600080fd5b50610504610e3e565b6040516105119190612e4d565b60405180910390f35b34801561052657600080fd5b5061052f610e44565b60405161053c9190612cf6565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190612fa2565b610e81565b005b34801561057a57600080fd5b5061059560048036038101906105909190612fcf565b610f20565b005b3480156105a357600080fd5b506105be60048036038101906105b99190612d4e565b611037565b6040516105cb9190612da9565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190612f1c565b611055565b6040516106089190612da9565b60405180910390f35b34801561061d57600080fd5b50610626611075565b005b34801561063457600080fd5b5061064f600480360381019061064a9190613091565b61108e565b005b34801561065d57600080fd5b50610678600480360381019061067391906130f1565b6111c8565b6040516106859190612e4d565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190612fa2565b61124f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190612f1c565b611346565b005b6106e8611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c9061317d565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a5761079961319d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe906131fb565b915050610778565b5050565b60606040518060400160405280600381526020017f5454490000000000000000000000000000000000000000000000000000000000815250905090565b600061085b610854611508565b8484611510565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108a88484846116db565b610969846108b4611508565b61096485604051806060016040528060288152602001613d8060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091a611508565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7e9092919063ffffffff16565b611510565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b1611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a359061317d565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa1611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b259061317d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610b5981611fe2565b50565b6000610ba6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e565b9050919050565b610bb5611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c399061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d08611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c9061317d565b60405180910390fd5b806016819055506064670de0b6b3a7640000610db19190613273565b60165411610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb906132f0565b60405180910390fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600f81526020017f547269706c6520546f616420496e750000000000000000000000000000000000815250905090565b610e89611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061317d565b60405180910390fd5b8060188190555050565b610f28611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac9061317d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600f600954600a54600854610fe69190613310565b610ff09190613310565b1115611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906133b2565b60405180910390fd5b50505050565b600061104b611044611508565b84846116db565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b600061108030610b5c565b905061108b816120bc565b50565b611096611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061317d565b60405180910390fd5b60005b838390508110156111c25781600560008686858181106111495761114861319d565b5b905060200201602081019061115e9190612f1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ba906131fb565b915050611126565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611257611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061317d565b60405180910390fd5b806017819055506064670de0b6b3a76400006113009190613273565b60175411611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a9061341e565b60405180910390fd5b50565b61134e611508565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d29061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906134b0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613542565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906135d4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ce9190612e4d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613666565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906136f8565b60405180910390fd5b600081116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061378a565b60405180910390fd5b611806610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118745750611844610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c7d57601560149054906101000a900460ff1661190357611895610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f99061381c565b60405180910390fd5b5b601654811115611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613888565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ec5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061391a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad85760175481611a8d84610b5c565b611a979190613310565b10611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace906139ac565b60405180910390fd5b5b6000611ae330610b5c565b9050600060185482101590506005601854611afe91906139cc565b8210611b16576005601854611b1391906139cc565b91505b808015611b2e575060158054906101000a900460ff16155b8015611b885750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba05750601560169054906101000a900460ff165b8015611bf65750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c4c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7a57611c5a826120bc565b600047905066b1a2bc2ec50000811115611c7857611c7747611fe2565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d245750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dd75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611de55760009050611f6c565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e905750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f535750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6b57600a54600c81905550600b54600d819055505b5b611f7884848484612333565b50505050565b6000838311158290611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd9190612cf6565b60405180910390fd5b5060008385611fd59190613a26565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561204a573d6000803e3d6000fd5b5050565b6000600654821115612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90613acc565b60405180910390fd5b600061209f612360565b90506120b4818461238b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120f3576120f2612a84565b5b6040519080825280602002602001820160405280156121215781602001602082028036833780820191505090505b50905030816000815181106121395761213861319d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122049190613b01565b816001815181106122185761221761319d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227f30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611510565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e3959493929190613c27565b600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612341576123406123d5565b5b61234c848484612418565b8061235a576123596125e3565b5b50505050565b600080600061236d6125f7565b91509150612384818361238b90919063ffffffff16565b9250505090565b60006123cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612656565b905092915050565b6000600c541480156123e957506000600d54145b156123f357612416565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061242a876126b9565b95509550955095509550955061248886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612569816127c9565b6125738483612886565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125d09190612e4d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061262b670de0b6b3a764000060065461238b90919063ffffffff16565b82101561264957600654670de0b6b3a7640000935093505050612652565b81819350935050505b9091565b6000808311829061269d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126949190612cf6565b60405180910390fd5b50600083856126ac9190613273565b9050809150509392505050565b60008060008060008060008060006126d68a600c54600d546128c0565b92509250925060006126e6612360565b905060008060006126f98e878787612956565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061276383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7e565b905092915050565b600080828461277a9190613310565b9050838110156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690613ccd565b60405180910390fd5b8091505092915050565b60006127d3612360565b905060006127ea82846129df90919063ffffffff16565b905061283e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61289b8260065461272190919063ffffffff16565b6006819055506128b68160075461276b90919063ffffffff16565b6007819055505050565b6000806000806128ec60646128de888a6129df90919063ffffffff16565b61238b90919063ffffffff16565b905060006129166064612908888b6129df90919063ffffffff16565b61238b90919063ffffffff16565b9050600061293f82612931858c61272190919063ffffffff16565b61272190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061296f85896129df90919063ffffffff16565b9050600061298686896129df90919063ffffffff16565b9050600061299d87896129df90919063ffffffff16565b905060006129c6826129b8858761272190919063ffffffff16565b61272190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129f25760009050612a54565b60008284612a0091906139cc565b9050828482612a0f9190613273565b14612a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4690613d5f565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612abc82612a73565b810181811067ffffffffffffffff82111715612adb57612ada612a84565b5b80604052505050565b6000612aee612a5a565b9050612afa8282612ab3565b919050565b600067ffffffffffffffff821115612b1a57612b19612a84565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5b82612b30565b9050919050565b612b6b81612b50565b8114612b7657600080fd5b50565b600081359050612b8881612b62565b92915050565b6000612ba1612b9c84612aff565b612ae4565b90508083825260208201905060208402830185811115612bc457612bc3612b2b565b5b835b81811015612bed5780612bd98882612b79565b845260208401935050602081019050612bc6565b5050509392505050565b600082601f830112612c0c57612c0b612a6e565b5b8135612c1c848260208601612b8e565b91505092915050565b600060208284031215612c3b57612c3a612a64565b5b600082013567ffffffffffffffff811115612c5957612c58612a69565b5b612c6584828501612bf7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ca8578082015181840152602081019050612c8d565b83811115612cb7576000848401525b50505050565b6000612cc882612c6e565b612cd28185612c79565b9350612ce2818560208601612c8a565b612ceb81612a73565b840191505092915050565b60006020820190508181036000830152612d108184612cbd565b905092915050565b6000819050919050565b612d2b81612d18565b8114612d3657600080fd5b50565b600081359050612d4881612d22565b92915050565b60008060408385031215612d6557612d64612a64565b5b6000612d7385828601612b79565b9250506020612d8485828601612d39565b9150509250929050565b60008115159050919050565b612da381612d8e565b82525050565b6000602082019050612dbe6000830184612d9a565b92915050565b6000819050919050565b6000612de9612de4612ddf84612b30565b612dc4565b612b30565b9050919050565b6000612dfb82612dce565b9050919050565b6000612e0d82612df0565b9050919050565b612e1d81612e02565b82525050565b6000602082019050612e386000830184612e14565b92915050565b612e4781612d18565b82525050565b6000602082019050612e626000830184612e3e565b92915050565b600080600060608486031215612e8157612e80612a64565b5b6000612e8f86828701612b79565b9350506020612ea086828701612b79565b9250506040612eb186828701612d39565b9150509250925092565b600060ff82169050919050565b612ed181612ebb565b82525050565b6000602082019050612eec6000830184612ec8565b92915050565b612efb81612b50565b82525050565b6000602082019050612f166000830184612ef2565b92915050565b600060208284031215612f3257612f31612a64565b5b6000612f4084828501612b79565b91505092915050565b612f5281612d8e565b8114612f5d57600080fd5b50565b600081359050612f6f81612f49565b92915050565b600060208284031215612f8b57612f8a612a64565b5b6000612f9984828501612f60565b91505092915050565b600060208284031215612fb857612fb7612a64565b5b6000612fc684828501612d39565b91505092915050565b60008060008060808587031215612fe957612fe8612a64565b5b6000612ff787828801612d39565b945050602061300887828801612d39565b935050604061301987828801612d39565b925050606061302a87828801612d39565b91505092959194509250565b600080fd5b60008083601f84011261305157613050612a6e565b5b8235905067ffffffffffffffff81111561306e5761306d613036565b5b60208301915083602082028301111561308a57613089612b2b565b5b9250929050565b6000806000604084860312156130aa576130a9612a64565b5b600084013567ffffffffffffffff8111156130c8576130c7612a69565b5b6130d48682870161303b565b935093505060206130e786828701612f60565b9150509250925092565b6000806040838503121561310857613107612a64565b5b600061311685828601612b79565b925050602061312785828601612b79565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613167602083612c79565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320682612d18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613239576132386131cc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061327e82612d18565b915061328983612d18565b92508261329957613298613244565b5b828204905092915050565b7f4d6178207478206d757374206265206d6f7265207468616e2031250000000000600082015250565b60006132da601b83612c79565b91506132e5826132a4565b602082019050919050565b60006020820190508181036000830152613309816132cd565b9050919050565b600061331b82612d18565b915061332683612d18565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561335b5761335a6131cc565b5b828201905092915050565b7f546f74616c20666565206d757374206265206c657373207468616e2031352500600082015250565b600061339c601f83612c79565b91506133a782613366565b602082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f4d61782057616c6c6574206d757374206265206d6f7265207468616e20312500600082015250565b6000613408601f83612c79565b9150613413826133d2565b602082019050919050565b60006020820190508181036000830152613437816133fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061349a602683612c79565b91506134a58261343e565b604082019050919050565b600060208201905081810360008301526134c98161348d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061352c602483612c79565b9150613537826134d0565b604082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135be602283612c79565b91506135c982613562565b604082019050919050565b600060208201905081810360008301526135ed816135b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613650602583612c79565b915061365b826135f4565b604082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136e2602383612c79565b91506136ed82613686565b604082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613774602983612c79565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613806603f83612c79565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613872601c83612c79565b915061387d8261383c565b602082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613904602383612c79565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613996602383612c79565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b60006139d782612d18565b91506139e283612d18565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1b57613a1a6131cc565b5b828202905092915050565b6000613a3182612d18565b9150613a3c83612d18565b925082821015613a4f57613a4e6131cc565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ab6602a83612c79565b9150613ac182613a5a565b604082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b600081519050613afb81612b62565b92915050565b600060208284031215613b1757613b16612a64565b5b6000613b2584828501613aec565b91505092915050565b6000819050919050565b6000613b53613b4e613b4984613b2e565b612dc4565b612d18565b9050919050565b613b6381613b38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b9e81612b50565b82525050565b6000613bb08383613b95565b60208301905092915050565b6000602082019050919050565b6000613bd482613b69565b613bde8185613b74565b9350613be983613b85565b8060005b83811015613c1a578151613c018882613ba4565b9750613c0c83613bbc565b925050600181019050613bed565b5085935050505092915050565b600060a082019050613c3c6000830188612e3e565b613c496020830187613b5a565b8181036040830152613c5b8186613bc9565b9050613c6a6060830185612ef2565b613c776080830184612e3e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cb7601b83612c79565b9150613cc282613c81565b602082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d49602183612c79565b9150613d5482613ced565b604082019050919050565b60006020820190508181036000830152613d7881613d3c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207169fca30d62a696eb5a4192b742d72756ccc28f5349add9d072c92df0884d8e64736f6c634300080a0033
Deployed Bytecode Sourcemap
4709:13550:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13160:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7247:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8172:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6099:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7524:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8373:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6395:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7433:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6147:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13337:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17475:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13009:143;;;;;;;;;;;;;:::i;:::-;;7627:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2196:148;;;;;;;;;;;;;:::i;:::-;;17615:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6296:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5841:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1982:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6340:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7338:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17284:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16835:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7773:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12857:144;;;;;;;;;;;;;:::i;:::-;;18020:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7980:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17811:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2352:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13160:169;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13236:9:::1;13231:91;13255:5;:12;13251:1;:16;13231:91;;;13306:4;13289;:14;13294:5;13300:1;13294:8;;;;;;;;:::i;:::-;;;;;;;;13289:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13269:3;;;;;:::i;:::-;;;;13231:91;;;;13160:169:::0;:::o;7247:83::-;7284:13;7317:5;;;;;;;;;;;;;;;;;7310:12;;7247:83;:::o;8172:193::-;8274:4;8296:39;8305:12;:10;:12::i;:::-;8319:7;8328:6;8296:8;:39::i;:::-;8353:4;8346:11;;8172:193;;;;:::o;6099:41::-;;;;;;;;;;;;;:::o;7524:95::-;7577:7;5267:18;7597:14;;7524:95;:::o;8373:446::-;8505:4;8522:36;8532:6;8540:9;8551:6;8522:9;:36::i;:::-;8569:220;8592:6;8613:12;:10;:12::i;:::-;8640:138;8696:6;8640:138;;;;;;;;;;;;;;;;;:11;:19;8652:6;8640:19;;;;;;;;;;;;;;;:33;8660:12;:10;:12::i;:::-;8640:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8569:8;:220::i;:::-;8807:4;8800:11;;8373:446;;;;;:::o;6395:52::-;;;;:::o;7433:83::-;7474:5;4941:1;7492:16;;7433:83;:::o;6147:28::-;;;;;;;;;;;;;:::o;13337:92::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13416:5:::1;13401:4;:12;13406:6;13401:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13337:92:::0;:::o;17475:101::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17556:12:::1;17542:11;;:26;;;;;;;;;;;;;;;;;;17475:101:::0;:::o;13009:143::-;13051:26;13080:21;13051:50;;13112:32;13125:18;13112:12;:32::i;:::-;13040:112;13009:143::o;7627:138::-;7693:7;7720:37;7740:7;:16;7748:7;7740:16;;;;;;;;;;;;;;;;7720:19;:37::i;:::-;7713:44;;7627:138;;;:::o;2196:148::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2303:1:::1;2266:40;;2287:6;::::0;::::1;;;;;;;;2266:40;;;;;;;;;;;;2334:1;2317:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2196:148::o:0;17615:188::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17704:11:::1;17689:12;:26;;;;17760:3;5267:18;17750:13;;;;:::i;:::-;17735:12;;:28;17726:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;17615:188:::0;:::o;6296:37::-;;;;:::o;5841:43::-;;;;;;;;;;;;;;;;;:::o;1982:79::-;2020:7;2047:6;;;;;;;;;;;2040:13;;1982:79;:::o;6340:48::-;;;;:::o;7338:87::-;7377:13;7410:7;;;;;;;;;;;;;;;;;7403:14;;7338:87;:::o;17284:139::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17397:18:::1;17375:19;:40;;;;17284:139:::0;:::o;16835:397::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16986:13:::1;16969:14;:30;;;;17028:14;17010:15;:32;;;;17068:11;17053:12;:26;;;;17106:12;17090:13;:28;;;;17187:2;17170:12;;17154:15;;17139:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;17138:51;;17129:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;16835:397:::0;;;;:::o;7773:199::-;7878:4;7900:42;7910:12;:10;:12::i;:::-;7924:9;7935:6;7900:9;:42::i;:::-;7960:4;7953:11;;7773:199;;;;:::o;5803:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12857:144::-;12899:23;12925:24;12943:4;12925:9;:24::i;:::-;12899:50;;12960:33;12977:15;12960:16;:33::i;:::-;12888:113;12857:144::o;18020:234::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18137:9:::1;18133:114;18156:8;;:15;;18152:1;:19;18133:114;;;18227:8;18193:18;:31;18212:8;;18221:1;18212:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18193:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18173:3;;;;;:::i;:::-;;;;18133:114;;;;18020:234:::0;;;:::o;7980:184::-;8097:7;8129:11;:18;8141:5;8129:18;;;;;;;;;;;;;;;:27;8148:7;8129:27;;;;;;;;;;;;;;;;8122:34;;7980:184;;;;:::o;17811:201::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17905:13:::1;17888:14;:30;;;;17965:3;5267:18;17955:13;;;;:::i;:::-;17938:14;;:30;17929:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17811:201:::0;:::o;2352:244::-;2119:12;:10;:12::i;:::-;2109:22;;:6;;;;;;;;;;:22;;;2101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2461:1:::1;2441:22;;:8;:22;;;;2433:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2551:8;2522:38;;2543:6;::::0;::::1;;;;;;;;2522:38;;;;;;;;;;;;2580:8;2571:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2352:244:::0;:::o;741:98::-;794:7;821:10;814:17;;741:98;:::o;9510:369::-;9654:1;9637:19;;:5;:19;;;;9629:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:1;9716:21;;:7;:21;;;;9708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9817:6;9787:11;:18;9799:5;9787:18;;;;;;;;;;;;;;;:27;9806:7;9787:27;;;;;;;;;;;;;;;:36;;;;9855:7;9839:32;;9848:5;9839:32;;;9864:6;9839:32;;;;;;:::i;:::-;;;;;;;;9510:369;;;:::o;9887:2364::-;10025:1;10009:18;;:4;:18;;;;10001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10102:1;10088:16;;:2;:16;;;;10080:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10172:1;10163:6;:10;10155:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10244:7;:5;:7::i;:::-;10236:15;;:4;:15;;;;:32;;;;;10261:7;:5;:7::i;:::-;10255:13;;:2;:13;;;;10236:32;10232:1293;;;10325:11;;;;;;;;;;;10320:144;;10373:7;:5;:7::i;:::-;10365:15;;:4;:15;;;10357:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10320:144;10498:12;;10488:6;:22;;10480:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10567:4;:10;10572:4;10567:10;;;;;;;;;;;;;;;;;;;;;;;;;10566:11;:24;;;;;10582:4;:8;10587:2;10582:8;;;;;;;;;;;;;;;;;;;;;;;;;10581:9;10566:24;10558:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10656:13;;;;;;;;;;;10650:19;;:2;:19;;;10647:146;;10723:14;;10714:6;10698:13;10708:2;10698:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10690:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10647:146;10809:28;10840:24;10858:4;10840:9;:24::i;:::-;10809:55;;10879:12;10918:19;;10894:20;:43;;10879:58;;11001:1;10981:19;;:21;;;;:::i;:::-;10957:20;:45;10954:142;;11079:1;11059:19;;:21;;;;:::i;:::-;11036:44;;10954:142;11116:7;:18;;;;;11128:6;;;;;;;;;;11127:7;11116:18;:43;;;;;11146:13;;;;;;;;;;;11138:21;;:4;:21;;;;11116:43;:58;;;;;11163:11;;;;;;;;;;;11116:58;:87;;;;;11179:18;:24;11198:4;11179:24;;;;;;;;;;;;;;;;;;;;;;;;;11178:25;11116:87;:114;;;;;11208:18;:22;11227:2;11208:22;;;;;;;;;;;;;;;;;;;;;;;;;11207:23;11116:114;11112:402;;;11251:38;11268:20;11251:16;:38::i;:::-;11308:26;11337:21;11308:50;;11402:17;11381:18;:38;11377:122;;;11444:35;11457:21;11444:12;:35::i;:::-;11377:122;11232:282;11112:402;10270:1255;;10232:1293;11537:12;11552:4;11537:19;;11601:18;:24;11620:4;11601:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11629:18;:22;11648:2;11629:22;;;;;;;;;;;;;;;;;;;;;;;;;11601:50;11600:102;;;;11665:13;;;;;;;;;;;11657:21;;:4;:21;;;;:44;;;;;11688:13;;;;;;;;;;;11682:19;;:2;:19;;;;11657:44;11600:102;11596:594;;;11729:5;11719:15;;11596:594;;;11812:13;;;;;;;;;;;11804:21;;:4;:21;;;:55;;;;;11843:15;;;;;;;;;;;11829:30;;:2;:30;;;;11804:55;11801:162;;;11892:14;;11880:9;:26;;;;11935:12;;11925:7;:22;;;;11801:162;12022:13;;;;;;;;;;;12016:19;;:2;:19;;;:55;;;;;12055:15;;;;;;;;;;;12039:32;;:4;:32;;;;12016:55;12012:165;;;12104:15;;12092:9;:27;;;;12148:13;;12138:7;:23;;;;12012:165;11596:594;12202:41;12217:4;12223:2;12227:6;12235:7;12202:14;:41::i;:::-;9990:2261;9887:2364;;;:::o;2960:224::-;3080:7;3113:1;3108;:6;;3116:12;3100:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3140:9;3156:1;3152;:5;;;;:::i;:::-;3140:17;;3175:1;3168:8;;;2960:224;;;;;:::o;12750:99::-;12807:17;;;;;;;;;;;:26;;:34;12834:6;12807:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12750:99;:::o;8827:323::-;8922:7;8980;;8969;:18;;8947:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9068:19;9090:10;:8;:10::i;:::-;9068:32;;9118:24;9130:11;9118:7;:11;;:24;;;;:::i;:::-;9111:31;;;8827:323;;;:::o;12259:483::-;6550:4;6541:6;;:13;;;;;;;;;;;;;;;;;;12337:21:::1;12375:1;12361:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12337:40;;12406:4;12388;12393:1;12388:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12432:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12422:4;12427:1;12422:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12465:62;12482:4;12497:15;;;;;;;;;;;12515:11;12465:8;:62::i;:::-;12538:15;;;;;;;;;;;:66;;;12619:11;12645:1;12661:4;12688;12708:15;12538:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12326:416;6586:5:::0;6577:6;;:14;;;;;;;;;;;;;;;;;;12259:483;:::o;13437:282::-;13593:7;13588:28;;13602:14;:12;:14::i;:::-;13588:28;13627:44;13645:6;13653:9;13664:6;13627:17;:44::i;:::-;13687:7;13682:29;;13696:15;:13;:15::i;:::-;13682:29;13437:282;;;;:::o;16398:164::-;16440:7;16461:15;16478;16497:19;:17;:19::i;:::-;16460:56;;;;16534:20;16546:7;16534;:11;;:20;;;;:::i;:::-;16527:27;;;;16398:164;:::o;3446:132::-;3504:7;3531:39;3535:1;3538;3531:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3524:46;;3446:132;;;;:::o;9158:219::-;9218:1;9205:9;;:14;:30;;;;;9234:1;9223:7;;:12;9205:30;9201:43;;;9237:7;;9201:43;9276:9;;9256:17;:29;;;;9314:7;;9296:15;:25;;;;9346:1;9334:9;:13;;;;9368:1;9358:7;:11;;;;9158:219;:::o;13727:610::-;13874:15;13904:23;13942:12;13969:23;14007:12;14034:13;14061:19;14072:7;14061:10;:19::i;:::-;13859:221;;;;;;;;;;;;14109:28;14129:7;14109;:15;14117:6;14109:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14091:7;:15;14099:6;14091:15;;;;;;;;;;;;;;;:46;;;;14169:39;14192:15;14169:7;:18;14177:9;14169:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14148:7;:18;14156:9;14148:18;;;;;;;;;;;;;;;:60;;;;14219:16;14229:5;14219:9;:16::i;:::-;14246:23;14258:4;14264;14246:11;:23::i;:::-;14302:9;14285:44;;14294:6;14285:44;;;14313:15;14285:44;;;;;;:::i;:::-;;;;;;;;13848:489;;;;;;13727:610;;;:::o;9385:117::-;9441:17;;9429:9;:29;;;;9479:15;;9469:7;:25;;;;9385:117::o;16570:257::-;16621:7;16630;16650:15;16668:7;;16650:25;;16686:15;5267:18;16686:25;;16736:20;5267:18;16736:7;;:11;;:20;;;;:::i;:::-;16726:7;:30;16722:61;;;16766:7;;5267:18;16758:25;;;;;;;;16722:61;16802:7;16811;16794:25;;;;;;16570:257;;;:::o;3586:223::-;3706:7;3738:1;3734;:5;3741:12;3726:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3765:9;3781:1;3777;:5;;;;:::i;:::-;3765:17;;3800:1;3793:8;;;3586:223;;;;;:::o;14756:615::-;14856:7;14878;14900;14922;14944;14966;15002:23;15027:12;15041:13;15071:40;15083:7;15092:9;;15103:7;;15071:11;:40::i;:::-;15001:110;;;;;;15122:19;15144:10;:8;:10::i;:::-;15122:32;;15166:15;15183:23;15208:12;15237:46;15249:7;15258:4;15264:5;15271:11;15237;:46::i;:::-;15165:118;;;;;;15302:7;15311:15;15328:4;15334:15;15351:4;15357:5;15294:69;;;;;;;;;;;;;;;;;;;14756:615;;;;;;;:::o;2816:136::-;2874:7;2901:43;2905:1;2908;2901:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2894:50;;2816:136;;;;:::o;2629:179::-;2687:7;2707:9;2723:1;2719;:5;;;;:::i;:::-;2707:17;;2748:1;2743;:6;;2735:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2799:1;2792:8;;;2629:179;;;;:::o;14345:211::-;14398:19;14420:10;:8;:10::i;:::-;14398:32;;14441:13;14457:22;14467:11;14457:5;:9;;:22;;;;:::i;:::-;14441:38;;14515:33;14542:5;14515:7;:22;14531:4;14515:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14490:7;:22;14506:4;14490:22;;;;;;;;;;;;;;;:58;;;;14387:169;;14345:211;:::o;14564:147::-;14642:17;14654:4;14642:7;;:11;;:17;;;;:::i;:::-;14632:7;:27;;;;14683:20;14698:4;14683:10;;:14;;:20;;;;:::i;:::-;14670:10;:33;;;;14564:147;;:::o;15379:469::-;15548:7;15570;15592;15627:12;15642:30;15668:3;15642:21;15654:8;15642:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15627:45;;15683:13;15699:28;15723:3;15699:19;15711:6;15699:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15683:44;;15738:23;15764:28;15786:5;15764:17;15776:4;15764:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15738:54;;15811:15;15828:4;15834:5;15803:37;;;;;;;;;15379:469;;;;;;;:::o;15856:534::-;16050:7;16072;16094;16129:15;16147:24;16159:11;16147:7;:11;;:24;;;;:::i;:::-;16129:42;;16182:12;16197:21;16206:11;16197:4;:8;;:21;;;;:::i;:::-;16182:36;;16229:13;16245:22;16255:11;16245:5;:9;;:22;;;;:::i;:::-;16229:38;;16278:23;16304:28;16326:5;16304:17;16316:4;16304:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16278:54;;16351:7;16360:15;16377:4;16343:39;;;;;;;;;;15856:534;;;;;;;;:::o;3192:246::-;3250:7;3279:1;3274;:6;3270:47;;;3304:1;3297:8;;;;3270:47;3327:9;3343:1;3339;:5;;;;:::i;:::-;3327:17;;3372:1;3367;3363;:5;;;;:::i;:::-;:10;3355:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3429:1;3422:8;;;3192: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:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::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:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:180::-;14641:77;14638:1;14631:88;14738:4;14735:1;14728:15;14762:4;14759:1;14752:15;14779:185;14819:1;14836:20;14854:1;14836:20;:::i;:::-;14831:25;;14870:20;14888:1;14870:20;:::i;:::-;14865:25;;14909:1;14899:35;;14914:18;;:::i;:::-;14899:35;14956:1;14953;14949:9;14944:14;;14779:185;;;;:::o;14970:177::-;15110:29;15106:1;15098:6;15094:14;15087:53;14970:177;:::o;15153:366::-;15295:3;15316:67;15380:2;15375:3;15316:67;:::i;:::-;15309:74;;15392:93;15481:3;15392:93;:::i;:::-;15510:2;15505:3;15501:12;15494:19;;15153:366;;;:::o;15525:419::-;15691:4;15729:2;15718:9;15714:18;15706:26;;15778:9;15772:4;15768:20;15764:1;15753:9;15749:17;15742:47;15806:131;15932:4;15806:131;:::i;:::-;15798:139;;15525:419;;;:::o;15950:305::-;15990:3;16009:20;16027:1;16009:20;:::i;:::-;16004:25;;16043:20;16061:1;16043:20;:::i;:::-;16038:25;;16197:1;16129:66;16125:74;16122:1;16119:81;16116:107;;;16203:18;;:::i;:::-;16116:107;16247:1;16244;16240:9;16233:16;;15950:305;;;;:::o;16261:181::-;16401:33;16397:1;16389:6;16385:14;16378:57;16261:181;:::o;16448:366::-;16590:3;16611:67;16675:2;16670:3;16611:67;:::i;:::-;16604:74;;16687:93;16776:3;16687:93;:::i;:::-;16805:2;16800:3;16796:12;16789:19;;16448:366;;;:::o;16820:419::-;16986:4;17024:2;17013:9;17009:18;17001:26;;17073:9;17067:4;17063:20;17059:1;17048:9;17044:17;17037:47;17101:131;17227:4;17101:131;:::i;:::-;17093:139;;16820:419;;;:::o;17245:181::-;17385:33;17381:1;17373:6;17369:14;17362:57;17245:181;:::o;17432:366::-;17574:3;17595:67;17659:2;17654:3;17595:67;:::i;:::-;17588:74;;17671:93;17760:3;17671:93;:::i;:::-;17789:2;17784:3;17780:12;17773:19;;17432:366;;;:::o;17804:419::-;17970:4;18008:2;17997:9;17993:18;17985:26;;18057:9;18051:4;18047:20;18043:1;18032:9;18028:17;18021:47;18085:131;18211:4;18085:131;:::i;:::-;18077:139;;17804:419;;;:::o;18229:225::-;18369:34;18365:1;18357:6;18353:14;18346:58;18438:8;18433:2;18425:6;18421:15;18414:33;18229:225;:::o;18460:366::-;18602:3;18623:67;18687:2;18682:3;18623:67;:::i;:::-;18616:74;;18699:93;18788:3;18699:93;:::i;:::-;18817:2;18812:3;18808:12;18801:19;;18460:366;;;:::o;18832:419::-;18998:4;19036:2;19025:9;19021:18;19013:26;;19085:9;19079:4;19075:20;19071:1;19060:9;19056:17;19049:47;19113:131;19239:4;19113:131;:::i;:::-;19105:139;;18832:419;;;:::o;19257:223::-;19397:34;19393:1;19385:6;19381:14;19374:58;19466:6;19461:2;19453:6;19449:15;19442:31;19257:223;:::o;19486:366::-;19628:3;19649:67;19713:2;19708:3;19649:67;:::i;:::-;19642:74;;19725:93;19814:3;19725:93;:::i;:::-;19843:2;19838:3;19834:12;19827:19;;19486:366;;;:::o;19858:419::-;20024:4;20062:2;20051:9;20047:18;20039:26;;20111:9;20105:4;20101:20;20097:1;20086:9;20082:17;20075:47;20139:131;20265:4;20139:131;:::i;:::-;20131:139;;19858:419;;;:::o;20283:221::-;20423:34;20419:1;20411:6;20407:14;20400:58;20492:4;20487:2;20479:6;20475:15;20468:29;20283:221;:::o;20510:366::-;20652:3;20673:67;20737:2;20732:3;20673:67;:::i;:::-;20666:74;;20749:93;20838:3;20749:93;:::i;:::-;20867:2;20862:3;20858:12;20851:19;;20510:366;;;:::o;20882:419::-;21048:4;21086:2;21075:9;21071:18;21063:26;;21135:9;21129:4;21125:20;21121:1;21110:9;21106:17;21099:47;21163:131;21289:4;21163:131;:::i;:::-;21155:139;;20882:419;;;:::o;21307:224::-;21447:34;21443:1;21435:6;21431:14;21424:58;21516:7;21511:2;21503:6;21499:15;21492:32;21307:224;:::o;21537:366::-;21679:3;21700:67;21764:2;21759:3;21700:67;:::i;:::-;21693:74;;21776:93;21865:3;21776:93;:::i;:::-;21894:2;21889:3;21885:12;21878:19;;21537:366;;;:::o;21909:419::-;22075:4;22113:2;22102:9;22098:18;22090:26;;22162:9;22156:4;22152:20;22148:1;22137:9;22133:17;22126:47;22190:131;22316:4;22190:131;:::i;:::-;22182:139;;21909:419;;;:::o;22334:222::-;22474:34;22470:1;22462:6;22458:14;22451:58;22543:5;22538:2;22530:6;22526:15;22519:30;22334:222;:::o;22562:366::-;22704:3;22725:67;22789:2;22784:3;22725:67;:::i;:::-;22718:74;;22801:93;22890:3;22801:93;:::i;:::-;22919:2;22914:3;22910:12;22903:19;;22562:366;;;:::o;22934:419::-;23100:4;23138:2;23127:9;23123:18;23115:26;;23187:9;23181:4;23177:20;23173:1;23162:9;23158:17;23151:47;23215:131;23341:4;23215:131;:::i;:::-;23207:139;;22934:419;;;:::o;23359:228::-;23499:34;23495:1;23487:6;23483:14;23476:58;23568:11;23563:2;23555:6;23551:15;23544:36;23359:228;:::o;23593:366::-;23735:3;23756:67;23820:2;23815:3;23756:67;:::i;:::-;23749:74;;23832:93;23921:3;23832:93;:::i;:::-;23950:2;23945:3;23941:12;23934:19;;23593:366;;;:::o;23965:419::-;24131:4;24169:2;24158:9;24154:18;24146:26;;24218:9;24212:4;24208:20;24204:1;24193:9;24189:17;24182:47;24246:131;24372:4;24246:131;:::i;:::-;24238:139;;23965:419;;;:::o;24390:250::-;24530:34;24526:1;24518:6;24514:14;24507:58;24599:33;24594:2;24586:6;24582:15;24575:58;24390:250;:::o;24646:366::-;24788:3;24809:67;24873:2;24868:3;24809:67;:::i;:::-;24802:74;;24885:93;24974:3;24885:93;:::i;:::-;25003:2;24998:3;24994:12;24987:19;;24646:366;;;:::o;25018:419::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25271:9;25265:4;25261:20;25257:1;25246:9;25242:17;25235:47;25299:131;25425:4;25299:131;:::i;:::-;25291:139;;25018:419;;;:::o;25443:178::-;25583:30;25579:1;25571:6;25567:14;25560:54;25443:178;:::o;25627:366::-;25769:3;25790:67;25854:2;25849:3;25790:67;:::i;:::-;25783:74;;25866:93;25955:3;25866:93;:::i;:::-;25984:2;25979:3;25975:12;25968:19;;25627:366;;;:::o;25999:419::-;26165:4;26203:2;26192:9;26188:18;26180:26;;26252:9;26246:4;26242:20;26238:1;26227:9;26223:17;26216:47;26280:131;26406:4;26280:131;:::i;:::-;26272:139;;25999:419;;;:::o;26424:222::-;26564:34;26560:1;26552:6;26548:14;26541:58;26633:5;26628:2;26620:6;26616:15;26609:30;26424:222;:::o;26652:366::-;26794:3;26815:67;26879:2;26874:3;26815:67;:::i;:::-;26808:74;;26891:93;26980:3;26891:93;:::i;:::-;27009:2;27004:3;27000:12;26993:19;;26652:366;;;:::o;27024:419::-;27190:4;27228:2;27217:9;27213:18;27205:26;;27277:9;27271:4;27267:20;27263:1;27252:9;27248:17;27241:47;27305:131;27431:4;27305:131;:::i;:::-;27297:139;;27024:419;;;:::o;27449:222::-;27589:34;27585:1;27577:6;27573:14;27566:58;27658:5;27653:2;27645:6;27641:15;27634:30;27449:222;:::o;27677:366::-;27819:3;27840:67;27904:2;27899:3;27840:67;:::i;:::-;27833:74;;27916:93;28005:3;27916:93;:::i;:::-;28034:2;28029:3;28025:12;28018:19;;27677:366;;;:::o;28049:419::-;28215:4;28253:2;28242:9;28238:18;28230:26;;28302:9;28296:4;28292:20;28288:1;28277:9;28273:17;28266:47;28330:131;28456:4;28330:131;:::i;:::-;28322:139;;28049:419;;;:::o;28474:348::-;28514:7;28537:20;28555:1;28537:20;:::i;:::-;28532:25;;28571:20;28589:1;28571:20;:::i;:::-;28566:25;;28759:1;28691:66;28687:74;28684:1;28681:81;28676:1;28669:9;28662:17;28658:105;28655:131;;;28766:18;;:::i;:::-;28655:131;28814:1;28811;28807:9;28796:20;;28474:348;;;;:::o;28828:191::-;28868:4;28888:20;28906:1;28888:20;:::i;:::-;28883:25;;28922:20;28940:1;28922:20;:::i;:::-;28917:25;;28961:1;28958;28955:8;28952:34;;;28966:18;;:::i;:::-;28952:34;29011:1;29008;29004:9;28996:17;;28828:191;;;;:::o;29025:229::-;29165:34;29161:1;29153:6;29149:14;29142:58;29234:12;29229:2;29221:6;29217:15;29210:37;29025:229;:::o;29260:366::-;29402:3;29423:67;29487:2;29482:3;29423:67;:::i;:::-;29416:74;;29499:93;29588:3;29499:93;:::i;:::-;29617:2;29612:3;29608:12;29601:19;;29260:366;;;:::o;29632:419::-;29798:4;29836:2;29825:9;29821:18;29813:26;;29885:9;29879:4;29875:20;29871:1;29860:9;29856:17;29849:47;29913:131;30039:4;29913:131;:::i;:::-;29905:139;;29632:419;;;:::o;30057:143::-;30114:5;30145:6;30139:13;30130:22;;30161:33;30188:5;30161:33;:::i;:::-;30057:143;;;;:::o;30206:351::-;30276:6;30325:2;30313:9;30304:7;30300:23;30296:32;30293:119;;;30331:79;;:::i;:::-;30293:119;30451:1;30476:64;30532:7;30523:6;30512:9;30508:22;30476:64;:::i;:::-;30466:74;;30422:128;30206:351;;;;:::o;30563:85::-;30608:7;30637:5;30626:16;;30563:85;;;:::o;30654:158::-;30712:9;30745:61;30763:42;30772:32;30798:5;30772:32;:::i;:::-;30763:42;:::i;:::-;30745:61;:::i;:::-;30732:74;;30654:158;;;:::o;30818:147::-;30913:45;30952:5;30913:45;:::i;:::-;30908:3;30901:58;30818:147;;:::o;30971:114::-;31038:6;31072:5;31066:12;31056:22;;30971:114;;;:::o;31091:184::-;31190:11;31224:6;31219:3;31212:19;31264:4;31259:3;31255:14;31240:29;;31091:184;;;;:::o;31281:132::-;31348:4;31371:3;31363:11;;31401:4;31396:3;31392:14;31384:22;;31281:132;;;:::o;31419:108::-;31496:24;31514:5;31496:24;:::i;:::-;31491:3;31484:37;31419:108;;:::o;31533:179::-;31602:10;31623:46;31665:3;31657:6;31623:46;:::i;:::-;31701:4;31696:3;31692:14;31678:28;;31533:179;;;;:::o;31718:113::-;31788:4;31820;31815:3;31811:14;31803:22;;31718:113;;;:::o;31867:732::-;31986:3;32015:54;32063:5;32015:54;:::i;:::-;32085:86;32164:6;32159:3;32085:86;:::i;:::-;32078:93;;32195:56;32245:5;32195:56;:::i;:::-;32274:7;32305:1;32290:284;32315:6;32312:1;32309:13;32290:284;;;32391:6;32385:13;32418:63;32477:3;32462:13;32418:63;:::i;:::-;32411:70;;32504:60;32557:6;32504:60;:::i;:::-;32494:70;;32350:224;32337:1;32334;32330:9;32325:14;;32290:284;;;32294:14;32590:3;32583:10;;31991:608;;;31867:732;;;;:::o;32605:831::-;32868:4;32906:3;32895:9;32891:19;32883:27;;32920:71;32988:1;32977:9;32973:17;32964:6;32920:71;:::i;:::-;33001:80;33077:2;33066:9;33062:18;33053:6;33001:80;:::i;:::-;33128:9;33122:4;33118:20;33113:2;33102:9;33098:18;33091:48;33156:108;33259:4;33250:6;33156:108;:::i;:::-;33148:116;;33274:72;33342:2;33331:9;33327:18;33318:6;33274:72;:::i;:::-;33356:73;33424:3;33413:9;33409:19;33400:6;33356:73;:::i;:::-;32605:831;;;;;;;;:::o;33442:177::-;33582:29;33578:1;33570:6;33566:14;33559:53;33442:177;:::o;33625:366::-;33767:3;33788:67;33852:2;33847:3;33788:67;:::i;:::-;33781:74;;33864:93;33953:3;33864:93;:::i;:::-;33982:2;33977:3;33973:12;33966:19;;33625:366;;;:::o;33997:419::-;34163:4;34201:2;34190:9;34186:18;34178:26;;34250:9;34244:4;34240:20;34236:1;34225:9;34221:17;34214:47;34278:131;34404:4;34278:131;:::i;:::-;34270:139;;33997:419;;;:::o;34422:220::-;34562:34;34558:1;34550:6;34546:14;34539:58;34631:3;34626:2;34618:6;34614:15;34607:28;34422:220;:::o;34648:366::-;34790:3;34811:67;34875:2;34870:3;34811:67;:::i;:::-;34804:74;;34887:93;34976:3;34887:93;:::i;:::-;35005:2;35000:3;34996:12;34989:19;;34648:366;;;:::o;35020:419::-;35186:4;35224:2;35213:9;35209:18;35201:26;;35273:9;35267:4;35263:20;35259:1;35248:9;35244:17;35237:47;35301:131;35427:4;35301:131;:::i;:::-;35293:139;;35020:419;;;:::o
Swarm Source
ipfs://7169fca30d62a696eb5a4192b742d72756ccc28f5349add9d072c92df0884d8e
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.