ERC-20
Artificial Intelligence
Overview
Max Total Supply
100,000,000 NeonAI
Holders
573 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$20,011.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 NeonAIValue
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
NeonAI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-29 */ // SPDX-License-Identifier: Unlicensed /** Website: https://www.neonai.app/ Twitter: https://twitter.com/neonaiapp Telegram: https://t.me/NeonAIapp WhitePaper: https://neonai.gitbook.io// **/ pragma solidity ^0.8.18; 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 NeonAI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "NeonAI"; string private constant _symbol = "NeonAI"; 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 = 100000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; 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(0x2829F19cFF72342Dbc351F2701164e4F71F66857); address payable private _marketingAddress = payable(0x2829F19cFF72342Dbc351F2701164e4F71F66857); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 2000000 * 10**9; uint256 public _maxWalletSize = 2000000 * 10**9; uint256 public _swapTokensAtAmount = 1000 * 10**9; bool private _maxTxn = false; bool private _maxWallet = false; bool private _maxTxnCan = false; bool private _maxWalletCan = false; 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, "the transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount has to 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), "Can't approve from zero address"); require(spender != address(0), "Can't approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "Cant transfer from address zero"); require(to != address(0), "Cant transfer to address zero"); require(amount > 0, "Amount should be above zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "Only owner can trade before trading activation"); } require(amount <= _maxTxAmount, "Exceeded max transaction limit"); require(!bots[from] && !bots[to], "This account is on the blacklist"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "Exceeds max wallet balance"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); 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 { require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%"); require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95, "Buy tax must be between 0% and 95%"); require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%"); require(taxFeeOnSell >= 0 && taxFeeOnSell <= 95, "Sell tax must be between 0% and 95%"); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount, bool maxTxn, bool maxTxnCan) public onlyOwner { _maxTxAmount = maxTxAmount; _maxTxn = maxTxn; _maxTxnCan = maxTxnCan; } function setMaxWalletSize(uint256 maxWalletSize, bool maxWallet, bool maxWalletCan) public onlyOwner { _maxWalletSize = maxWalletSize; _maxWallet = maxWallet; _maxWalletCan = maxWalletCan; } 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"},{"internalType":"bool","name":"maxTxn","type":"bool"},{"internalType":"bool","name":"maxTxnCan","type":"bool"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"bool","name":"maxWallet","type":"bool"},{"internalType":"bool","name":"maxWalletCan","type":"bool"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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
608060405267016345785d8a00005f196200001b919062000748565b5f19620000299190620007ac565b6006555f60085560056009555f600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f55732829f19cff72342dbc351f2701164e4f71f6685760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732829f19cff72342dbc351f2701164e4f71f6685760135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d000060165566071afd498d000060175564e8d4a510006018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055505f601960026101000a81548160ff0219169083151502179055505f601960036101000a81548160ff021916908315150217905550348015620001c4575f80fd5b505f620001d6620006e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000288620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038d91906200084b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041991906200084b565b6040518363ffffffff1660e01b8152600401620004389291906200088c565b6020604051808303815f875af115801562000455573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200047b91906200084b565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004cf620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200066f620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006d59190620008c8565b60405180910390a350620008e3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007548262000712565b9150620007618362000712565b9250826200077457620007736200071b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007b88262000712565b9150620007c58362000712565b9250828203905081811115620007e057620007df6200077f565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200081582620007ea565b9050919050565b620008278162000809565b811462000832575f80fd5b50565b5f8151905062000845816200081c565b92915050565b5f60208284031215620008635762000862620007e6565b5b5f620008728482850162000835565b91505092915050565b620008868162000809565b82525050565b5f604082019050620008a15f8301856200087b565b620008b060208301846200087b565b9392505050565b620008c28162000712565b82525050565b5f602082019050620008dd5f830184620008b7565b92915050565b613eec80620008f15f395ff3fe6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600681526020017f4e656f6e41490000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4e656f6e41490000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f1e3b842ad0590c3ac340cde98d6533717aaf6bd6e27c75c24ddf9231d22aa1164736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600681526020017f4e656f6e41490000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4e656f6e41490000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f1e3b842ad0590c3ac340cde98d6533717aaf6bd6e27c75c24ddf9231d22aa1164736f6c63430008180033
Deployed Bytecode Sourcemap
4259:14267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13065:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6921:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5612:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7201:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8055:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5912:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7109:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5660:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13243:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17690:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12821:235;;;;;;;;;;;;;:::i;:::-;;7305:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1732:148;;;;;;;;;;;;;:::i;:::-;;5804:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5351:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1516:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12466:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5857:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7013:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17498:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16752:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7452:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17831:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5313:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:236;;;;;;;;;;;;;:::i;:::-;;18287:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7660:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1889:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18056:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13065:169;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13141:9:::1;13136:91;13160:5;:12;13156:1;:16;13136:91;;;13211:4;13194;:14;13199:5;13205:1;13199:8;;;;;;;;:::i;:::-;;;;;;;;13194:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13174:3;;;;;;;13136:91;;;;13065:169:::0;:::o;6921:83::-;6958:13;6991:5;;;;;;;;;;;;;;;;;6984:12;;6921:83;:::o;7853:193::-;7955:4;7977:39;7986:12;:10;:12::i;:::-;8000:7;8009:6;7977:8;:39::i;:::-;8034:4;8027:11;;7853:193;;;;:::o;5612:41::-;;;;;;;;;;;;;:::o;7201:95::-;7254:7;4807:17;7274:14;;7201:95;:::o;8055:443::-;8187:4;8204:36;8214:6;8222:9;8233:6;8204:9;:36::i;:::-;8251:217;8274:6;8295:12;:10;:12::i;:::-;8322:135;8378:6;8322:135;;;;;;;;;;;;;;;;;:11;:19;8334:6;8322:19;;;;;;;;;;;;;;;:33;8342:12;:10;:12::i;:::-;8322:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8251:8;:217::i;:::-;8486:4;8479:11;;8055:443;;;;;:::o;5912:49::-;;;;:::o;7109:83::-;7150:5;4480:1;7168:16;;7109:83;:::o;5660:28::-;;;;;;;;;;;;;:::o;13243:92::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13322:5:::1;13307:4;:12;13312:6;13307:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13243:92:::0;:::o;17690:101::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17771:12:::1;17757:11;;:26;;;;;;;;;;;;;;;;;;17690:101:::0;:::o;12821:235::-;12887:19;;;;;;;;;;;12871:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12926:17;;;;;;;;;;;12910:33;;:12;:10;:12::i;:::-;:33;;;12871:72;12863:81;;;;;;12955:26;12984:21;12955:50;;13016:32;13029:18;13016:12;:32::i;:::-;12852:204;12821:235::o;7305:138::-;7371:7;7398:37;7418:7;:16;7426:7;7418:16;;;;;;;;;;;;;;;;7398:19;:37::i;:::-;7391:44;;7305:138;;;:::o;1732:148::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1839:1:::1;1802:40;;1823:6;::::0;::::1;;;;;;;;1802:40;;;;;;;;;;;;1870:1;1853:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1732:148::o:0;5804:45::-;;;;:::o;5351:43::-;;;;;;;;;;;;;;;;;:::o;1516:79::-;1554:7;1581:6;;;;;;;;;;;1574:13;;1516:79;:::o;12466:101::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12547:12:::1;12533:11;;:26;;;;;;;;;;;;;;;;;;12466:101:::0;:::o;5857:47::-;;;;:::o;7013:87::-;7052:13;7085:7;;;;;;;;;;;;;;;;;7078:14;;7013:87;:::o;17498:139::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17611:18:::1;17589:19;:40;;;;17498:139:::0;:::o;16752:693::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16911:1:::1;16894:13;:18;;:40;;;;;16933:1;16916:13;:18;;16894:40;16886:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17010:1;16995:11;:16;;:37;;;;;17030:2;17015:11;:17;;16995:37;16987:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17108:1;17090:14;:19;;:42;;;;;17131:1;17113:14;:19;;17090:42;17082:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17210:1;17194:12;:17;;:39;;;;;17231:2;17215:12;:18;;17194:39;17186:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17303:13;17286:14;:30;;;;17345:14;17327:15;:32;;;;17385:11;17370:12;:26;;;;17423:12;17407:13;:28;;;;16752:693:::0;;;;:::o;7452:199::-;7557:4;7579:42;7589:12;:10;:12::i;:::-;7603:9;7614:6;7579:9;:42::i;:::-;7639:4;7632:11;;7452:199;;;;:::o;17831:216::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17952:11:::1;17937:12;:26;;;;17987:6;17977:7;;:16;;;;;;;;;;;;;;;;;;18020:9;18007:10;;:22;;;;;;;;;;;;;;;;;;17831:216:::0;;;:::o;5313:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12576:236::-;12642:19;;;;;;;;;;;12626:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12681:17;;;;;;;;;;;12665:33;;:12;:10;:12::i;:::-;:33;;;12626:72;12618:81;;;;;;12710:23;12736:24;12754:4;12736:9;:24::i;:::-;12710:50;;12771:33;12788:15;12771:16;:33::i;:::-;12607:205;12576:236::o;18287:234::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18404:9:::1;18400:114;18423:8;;:15;;18419:1;:19;18400:114;;;18494:8;18460:18;:31;18479:8;;18488:1;18479:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18460:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18440:3;;;;;;;18400:114;;;;18287:234:::0;;;:::o;7660:184::-;7777:7;7809:11;:18;7821:5;7809:18;;;;;;;;;;;;;;;:27;7828:7;7809:27;;;;;;;;;;;;;;;;7802:34;;7660:184;;;;:::o;1889:244::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1998:1:::1;1978:22;;:8;:22;;::::0;1970:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2088:8;2059:38;;2080:6;::::0;::::1;;;;;;;;2059:38;;;;;;;;;;;;2117:8;2108:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1889:244:::0;:::o;18056:222::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18185:13:::1;18168:14;:30;;;;18222:9;18209:10;;:22;;;;;;;;;;;;;;;;;;18258:12;18242:13;;:28;;;;;;;;;;;;;;;;;;18056:222:::0;;;:::o;265:98::-;318:7;345:10;338:17;;265:98;:::o;9197:361::-;9341:1;9324:19;;:5;:19;;;9316:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:1;9398:21;;:7;:21;;;9390:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9496:6;9466:11;:18;9478:5;9466:18;;;;;;;;;;;;;;;:27;9485:7;9466:27;;;;;;;;;;;;;;;:36;;;;9534:7;9518:32;;9527:5;9518:32;;;9543:6;9518:32;;;;;;:::i;:::-;;;;;;;;9197:361;;;:::o;9567:2290::-;9705:1;9689:18;;:4;:18;;;9681:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9776:1;9762:16;;:2;:16;;;9754:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9840:1;9831:6;:10;9823:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9899:7;:5;:7::i;:::-;9891:15;;:4;:15;;;;:32;;;;;9916:7;:5;:7::i;:::-;9910:13;;:2;:13;;;;9891:32;9887:1238;;;9981:11;;;;;;;;;;;9976:127;;10029:7;:5;:7::i;:::-;10021:15;;:4;:15;;;10013:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9976:127;10138:12;;10128:6;:22;;10120:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10209:4;:10;10214:4;10209:10;;;;;;;;;;;;;;;;;;;;;;;;;10208:11;:24;;;;;10224:4;:8;10229:2;10224:8;;;;;;;;;;;;;;;;;;;;;;;;;10223:9;10208:24;10200:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10296:13;;;;;;;;;;;10290:19;;:2;:19;;;10287:137;;10363:14;;10354:6;10338:13;10348:2;10338:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10330:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10287:137;10441:28;10472:24;10490:4;10472:9;:24::i;:::-;10441:55;;10511:12;10550:19;;10526:20;:43;;10511:58;;10614:12;;10590:20;:36;10587:124;;10683:12;;10660:35;;10587:124;10732:7;:18;;;;;10744:6;;;;;;;;;;10743:7;10732:18;:43;;;;;10762:13;;;;;;;;;;;10754:21;;:4;:21;;;;10732:43;:58;;;;;10779:11;;;;;;;;;;;10732:58;:87;;;;;10795:18;:24;10814:4;10795:24;;;;;;;;;;;;;;;;;;;;;;;;;10794:25;10732:87;:114;;;;;10824:18;:22;10843:2;10824:22;;;;;;;;;;;;;;;;;;;;;;;;;10823:23;10732:114;10728:386;;;10867:38;10884:20;10867:16;:38::i;:::-;10924:26;10953:21;10924:50;;11018:1;10997:18;:22;10993:106;;;11044:35;11057:21;11044:12;:35::i;:::-;10993:106;10848:266;10728:386;9925:1200;;9887:1238;11138:12;11153:4;11138:19;;11203:18;:24;11222:4;11203:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11231:18;:22;11250:2;11231:22;;;;;;;;;;;;;;;;;;;;;;;;;11203:50;11202:102;;;;11267:13;;;;;;;;;;;11259:21;;:4;:21;;;;:44;;;;;11290:13;;;;;;;;;;;11284:19;;:2;:19;;;;11259:44;11202:102;11198:597;;;11331:5;11321:15;;11198:597;;;11415:13;;;;;;;;;;;11407:21;;:4;:21;;;:55;;;;;11446:15;;;;;;;;;;;11432:30;;:2;:30;;;;11407:55;11404:162;;;11495:14;;11483:9;:26;;;;11538:12;;11528:7;:22;;;;11404:162;11626:13;;;;;;;;;;;11620:19;;:2;:19;;;:55;;;;;11659:15;;;;;;;;;;;11643:32;;:4;:32;;;;11620:55;11616:165;;;11708:15;;11696:9;:27;;;;11752:13;;11742:7;:23;;;;11616:165;11198:597;11808:41;11823:4;11829:2;11833:6;11841:7;11808:14;:41::i;:::-;9670:2187;9567:2290;;;:::o;2501:224::-;2621:7;2654:1;2649;:6;;2657:12;2641:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2681:9;2697:1;2693;:5;;;;:::i;:::-;2681:17;;2716:1;2709:8;;;2501:224;;;;;:::o;12358:99::-;12415:17;;;;;;;;;;;:26;;:34;12442:6;12415:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12358:99;:::o;8507:325::-;8602:7;8660;;8649;:18;;8627:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;8750:19;8772:10;:8;:10::i;:::-;8750:32;;8800:24;8812:11;8800:7;:11;;:24;;;;:::i;:::-;8793:31;;;8507:325;;;:::o;11866:483::-;6218:4;6209:6;;:13;;;;;;;;;;;;;;;;;;11944:21:::1;11982:1;11968:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11944:40;;12013:4;11995;12000:1;11995:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12039:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12029:4;12034:1;12029:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12072:62;12089:4;12104:15;;;;;;;;;;;12122:11;12072:8;:62::i;:::-;12145:15;;;;;;;;;;;:66;;;12226:11;12252:1;12268:4;12295;12315:15;12145:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11933:416;6254:5:::0;6245:6;;:14;;;;;;;;;;;;;;;;;;11866:483;:::o;13344:282::-;13500:7;13495:28;;13509:14;:12;:14::i;:::-;13495:28;13534:44;13552:6;13560:9;13571:6;13534:17;:44::i;:::-;13594:7;13589:29;;13603:15;:13;:15::i;:::-;13589:29;13344:282;;;;:::o;16313:164::-;16355:7;16376:15;16393;16412:19;:17;:19::i;:::-;16375:56;;;;16449:20;16461:7;16449;:11;;:20;;;;:::i;:::-;16442:27;;;;16313:164;:::o;2989:132::-;3047:7;3074:39;3078:1;3081;3074:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3067:46;;2989:132;;;;:::o;8841:221::-;8901:1;8888:9;;:14;:30;;;;;8917:1;8906:7;;:12;8888:30;8920:7;8884:43;8960:9;;8940:17;:29;;;;8998:7;;8980:15;:25;;;;9031:1;9019:9;:13;;;;9053:1;9043:7;:11;;;;8841:221;:::o;13635:610::-;13782:15;13812:23;13850:12;13877:23;13915:12;13942:13;13969:19;13980:7;13969:10;:19::i;:::-;13767:221;;;;;;;;;;;;14017:28;14037:7;14017;:15;14025:6;14017:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13999:7;:15;14007:6;13999:15;;;;;;;;;;;;;;;:46;;;;14077:39;14100:15;14077:7;:18;14085:9;14077:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14056:7;:18;14064:9;14056:18;;;;;;;;;;;;;;;:60;;;;14127:16;14137:5;14127:9;:16::i;:::-;14154:23;14166:4;14172;14154:11;:23::i;:::-;14210:9;14193:44;;14202:6;14193:44;;;14221:15;14193:44;;;;;;:::i;:::-;;;;;;;;13756:489;;;;;;13635:610;;;:::o;9071:117::-;9127:17;;9115:9;:29;;;;9165:15;;9155:7;:25;;;;9071:117::o;16486:257::-;16537:7;16546;16566:15;16584:7;;16566:25;;16602:15;4807:17;16602:25;;16652:20;4807:17;16652:7;;:11;;:20;;;;:::i;:::-;16642:7;:30;16638:61;;;16682:7;;4807:17;16674:25;;;;;;;;16638:61;16718:7;16727;16710:25;;;;;;16486:257;;;:::o;3130:223::-;3250:7;3282:1;3278;:5;3285:12;3270:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3309:9;3325:1;3321;:5;;;;:::i;:::-;3309:17;;3344:1;3337:8;;;3130:223;;;;;:::o;14668:615::-;14768:7;14790;14812;14834;14856;14878;14914:23;14939:12;14953:13;14983:40;14995:7;15004:9;;15015:7;;14983:11;:40::i;:::-;14913:110;;;;;;15034:19;15056:10;:8;:10::i;:::-;15034:32;;15078:15;15095:23;15120:12;15149:46;15161:7;15170:4;15176:5;15183:11;15149;:46::i;:::-;15077:118;;;;;;15214:7;15223:15;15240:4;15246:15;15263:4;15269:5;15206:69;;;;;;;;;;;;;;;;;;;14668:615;;;;;;;:::o;2356:136::-;2414:7;2441:43;2445:1;2448;2441:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2434:50;;2356:136;;;;:::o;2168:179::-;2226:7;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2287:1;2282;:6;;2274:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2338:1;2331:8;;;2168:179;;;;:::o;14254:211::-;14307:19;14329:10;:8;:10::i;:::-;14307:32;;14350:13;14366:22;14376:11;14366:5;:9;;:22;;;;:::i;:::-;14350:38;;14424:33;14451:5;14424:7;:22;14440:4;14424:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14399:7;:22;14415:4;14399:22;;;;;;;;;;;;;;;:58;;;;14296:169;;14254:211;:::o;14474:147::-;14552:17;14564:4;14552:7;;:11;;:17;;;;:::i;:::-;14542:7;:27;;;;14593:20;14608:4;14593:10;;:14;;:20;;;;:::i;:::-;14580:10;:33;;;;14474:147;;:::o;15292:469::-;15461:7;15483;15505;15540:12;15555:30;15581:3;15555:21;15567:8;15555:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15540:45;;15596:13;15612:28;15636:3;15612:19;15624:6;15612:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15596:44;;15651:23;15677:28;15699:5;15677:17;15689:4;15677:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15651:54;;15724:15;15741:4;15747:5;15716:37;;;;;;;;;15292:469;;;;;;;:::o;15770:534::-;15964:7;15986;16008;16043:15;16061:24;16073:11;16061:7;:11;;:24;;;;:::i;:::-;16043:42;;16096:12;16111:21;16120:11;16111:4;:8;;:21;;;;:::i;:::-;16096:36;;16143:13;16159:22;16169:11;16159:5;:9;;:22;;;;:::i;:::-;16143:38;;16192:23;16218:28;16240:5;16218:17;16230:4;16218:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16192:54;;16265:7;16274:15;16291:4;16257:39;;;;;;;;;;15770:534;;;;;;;;:::o;2734:246::-;2792:7;2821:1;2816;:6;2812:47;;2846:1;2839:8;;;;2812:47;2869:9;2885:1;2881;:5;;;;:::i;:::-;2869:17;;2914:1;2909;2905;:5;;;;:::i;:::-;:10;2897:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2971:1;2964:8;;;2734: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:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:607::-;11122:6;11130;11138;11187:2;11175:9;11166:7;11162:23;11158:32;11155:119;;;11193:79;;:::i;:::-;11155:119;11313:1;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11284:117;11440:2;11466:50;11508:7;11499:6;11488:9;11484:22;11466:50;:::i;:::-;11456:60;;11411:115;11565:2;11591:50;11633:7;11624:6;11613:9;11609:22;11591:50;:::i;:::-;11581:60;;11536:115;11051:607;;;;;:::o;11664:117::-;11773:1;11770;11763:12;11804:568;11877:8;11887:6;11937:3;11930:4;11922:6;11918:17;11914:27;11904:122;;11945:79;;:::i;:::-;11904:122;12058:6;12045:20;12035:30;;12088:18;12080:6;12077:30;12074:117;;;12110:79;;:::i;:::-;12074:117;12224:4;12216:6;12212:17;12200:29;;12278:3;12270:4;12262:6;12258:17;12248:8;12244:32;12241:41;12238:128;;;12285:79;;:::i;:::-;12238:128;11804:568;;;;;:::o;12378:698::-;12470:6;12478;12486;12535:2;12523:9;12514:7;12510:23;12506:32;12503:119;;;12541:79;;:::i;:::-;12503:119;12689:1;12678:9;12674:17;12661:31;12719:18;12711:6;12708:30;12705:117;;;12741:79;;:::i;:::-;12705:117;12854:80;12926:7;12917:6;12906:9;12902:22;12854:80;:::i;:::-;12836:98;;;;12632:312;12983:2;13009:50;13051:7;13042:6;13031:9;13027:22;13009:50;:::i;:::-;12999:60;;12954:115;12378:698;;;;;:::o;13082:474::-;13150:6;13158;13207:2;13195:9;13186:7;13182:23;13178:32;13175:119;;;13213:79;;:::i;:::-;13175:119;13333:1;13358:53;13403:7;13394:6;13383:9;13379:22;13358:53;:::i;:::-;13348:63;;13304:117;13460:2;13486:53;13531:7;13522:6;13511:9;13507:22;13486:53;:::i;:::-;13476:63;;13431:118;13082:474;;;;;:::o;13562:182::-;13702:34;13698:1;13690:6;13686:14;13679:58;13562:182;:::o;13750:366::-;13892:3;13913:67;13977:2;13972:3;13913:67;:::i;:::-;13906:74;;13989:93;14078:3;13989:93;:::i;:::-;14107:2;14102:3;14098:12;14091:19;;13750:366;;;:::o;14122:419::-;14288:4;14326:2;14315:9;14311:18;14303:26;;14375:9;14369:4;14365:20;14361:1;14350:9;14346:17;14339:47;14403:131;14529:4;14403:131;:::i;:::-;14395:139;;14122:419;;;:::o;14547:180::-;14595:77;14592:1;14585:88;14692:4;14689:1;14682:15;14716:4;14713:1;14706:15;14733:224;14873:34;14869:1;14861:6;14857:14;14850:58;14942:7;14937:2;14929:6;14925:15;14918:32;14733:224;:::o;14963:366::-;15105:3;15126:67;15190:2;15185:3;15126:67;:::i;:::-;15119:74;;15202:93;15291:3;15202:93;:::i;:::-;15320:2;15315:3;15311:12;15304:19;;14963:366;;;:::o;15335:419::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15588:9;15582:4;15578:20;15574:1;15563:9;15559:17;15552:47;15616:131;15742:4;15616:131;:::i;:::-;15608:139;;15335:419;;;:::o;15760:221::-;15900:34;15896:1;15888:6;15884:14;15877:58;15969:4;15964:2;15956:6;15952:15;15945:29;15760:221;:::o;15987:366::-;16129:3;16150:67;16214:2;16209:3;16150:67;:::i;:::-;16143:74;;16226:93;16315:3;16226:93;:::i;:::-;16344:2;16339:3;16335:12;16328:19;;15987:366;;;:::o;16359:419::-;16525:4;16563:2;16552:9;16548:18;16540:26;;16612:9;16606:4;16602:20;16598:1;16587:9;16583:17;16576:47;16640:131;16766:4;16640:131;:::i;:::-;16632:139;;16359:419;;;:::o;16784:225::-;16924:34;16920:1;16912:6;16908:14;16901:58;16993:8;16988:2;16980:6;16976:15;16969:33;16784:225;:::o;17015:366::-;17157:3;17178:67;17242:2;17237:3;17178:67;:::i;:::-;17171:74;;17254:93;17343:3;17254:93;:::i;:::-;17372:2;17367:3;17363:12;17356:19;;17015:366;;;:::o;17387:419::-;17553:4;17591:2;17580:9;17576:18;17568:26;;17640:9;17634:4;17630:20;17626:1;17615:9;17611:17;17604:47;17668:131;17794:4;17668:131;:::i;:::-;17660:139;;17387:419;;;:::o;17812:222::-;17952:34;17948:1;17940:6;17936:14;17929:58;18021:5;18016:2;18008:6;18004:15;17997:30;17812:222;:::o;18040:366::-;18182:3;18203:67;18267:2;18262:3;18203:67;:::i;:::-;18196:74;;18279:93;18368:3;18279:93;:::i;:::-;18397:2;18392:3;18388:12;18381:19;;18040:366;;;:::o;18412:419::-;18578:4;18616:2;18605:9;18601:18;18593:26;;18665:9;18659:4;18655:20;18651:1;18640:9;18636:17;18629:47;18693:131;18819:4;18693:131;:::i;:::-;18685:139;;18412:419;;;:::o;18837:225::-;18977:34;18973:1;18965:6;18961:14;18954:58;19046:8;19041:2;19033:6;19029:15;19022:33;18837:225;:::o;19068:366::-;19210:3;19231:67;19295:2;19290:3;19231:67;:::i;:::-;19224:74;;19307:93;19396:3;19307:93;:::i;:::-;19425:2;19420:3;19416:12;19409:19;;19068:366;;;:::o;19440:419::-;19606:4;19644:2;19633:9;19629:18;19621:26;;19693:9;19687:4;19683:20;19679:1;19668:9;19664:17;19657:47;19721:131;19847:4;19721:131;:::i;:::-;19713:139;;19440:419;;;:::o;19865:181::-;20005:33;20001:1;19993:6;19989:14;19982:57;19865:181;:::o;20052:366::-;20194:3;20215:67;20279:2;20274:3;20215:67;:::i;:::-;20208:74;;20291:93;20380:3;20291:93;:::i;:::-;20409:2;20404:3;20400:12;20393:19;;20052:366;;;:::o;20424:419::-;20590:4;20628:2;20617:9;20613:18;20605:26;;20677:9;20671:4;20667:20;20663:1;20652:9;20648:17;20641:47;20705:131;20831:4;20705:131;:::i;:::-;20697:139;;20424:419;;;:::o;20849:179::-;20989:31;20985:1;20977:6;20973:14;20966:55;20849:179;:::o;21034:366::-;21176:3;21197:67;21261:2;21256:3;21197:67;:::i;:::-;21190:74;;21273:93;21362:3;21273:93;:::i;:::-;21391:2;21386:3;21382:12;21375:19;;21034:366;;;:::o;21406:419::-;21572:4;21610:2;21599:9;21595:18;21587:26;;21659:9;21653:4;21649:20;21645:1;21634:9;21630:17;21623:47;21687:131;21813:4;21687:131;:::i;:::-;21679:139;;21406:419;;;:::o;21831:181::-;21971:33;21967:1;21959:6;21955:14;21948:57;21831:181;:::o;22018:366::-;22160:3;22181:67;22245:2;22240:3;22181:67;:::i;:::-;22174:74;;22257:93;22346:3;22257:93;:::i;:::-;22375:2;22370:3;22366:12;22359:19;;22018:366;;;:::o;22390:419::-;22556:4;22594:2;22583:9;22579:18;22571:26;;22643:9;22637:4;22633:20;22629:1;22618:9;22614:17;22607:47;22671:131;22797:4;22671:131;:::i;:::-;22663:139;;22390:419;;;:::o;22815:179::-;22955:31;22951:1;22943:6;22939:14;22932:55;22815:179;:::o;23000:366::-;23142:3;23163:67;23227:2;23222:3;23163:67;:::i;:::-;23156:74;;23239:93;23328:3;23239:93;:::i;:::-;23357:2;23352:3;23348:12;23341:19;;23000:366;;;:::o;23372:419::-;23538:4;23576:2;23565:9;23561:18;23553:26;;23625:9;23619:4;23615:20;23611:1;23600:9;23596:17;23589:47;23653:131;23779:4;23653:131;:::i;:::-;23645:139;;23372:419;;;:::o;23797:177::-;23937:29;23933:1;23925:6;23921:14;23914:53;23797:177;:::o;23980:366::-;24122:3;24143:67;24207:2;24202:3;24143:67;:::i;:::-;24136:74;;24219:93;24308:3;24219:93;:::i;:::-;24337:2;24332:3;24328:12;24321:19;;23980:366;;;:::o;24352:419::-;24518:4;24556:2;24545:9;24541:18;24533:26;;24605:9;24599:4;24595:20;24591:1;24580:9;24576:17;24569:47;24633:131;24759:4;24633:131;:::i;:::-;24625:139;;24352:419;;;:::o;24777:233::-;24917:34;24913:1;24905:6;24901:14;24894:58;24986:16;24981:2;24973:6;24969:15;24962:41;24777:233;:::o;25016:366::-;25158:3;25179:67;25243:2;25238:3;25179:67;:::i;:::-;25172:74;;25255:93;25344:3;25255:93;:::i;:::-;25373:2;25368:3;25364:12;25357:19;;25016:366;;;:::o;25388:419::-;25554:4;25592:2;25581:9;25577:18;25569:26;;25641:9;25635:4;25631:20;25627:1;25616:9;25612:17;25605:47;25669:131;25795:4;25669:131;:::i;:::-;25661:139;;25388:419;;;:::o;25813:180::-;25953:32;25949:1;25941:6;25937:14;25930:56;25813:180;:::o;25999:366::-;26141:3;26162:67;26226:2;26221:3;26162:67;:::i;:::-;26155:74;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;25999:366;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:182::-;26936:34;26932:1;26924:6;26920:14;26913:58;26796:182;:::o;26984:366::-;27126:3;27147:67;27211:2;27206:3;27147:67;:::i;:::-;27140:74;;27223:93;27312:3;27223:93;:::i;:::-;27341:2;27336:3;27332:12;27325:19;;26984:366;;;:::o;27356:419::-;27522:4;27560:2;27549:9;27545:18;27537:26;;27609:9;27603:4;27599:20;27595:1;27584:9;27580:17;27573:47;27637:131;27763:4;27637:131;:::i;:::-;27629:139;;27356:419;;;:::o;27781:180::-;27829:77;27826:1;27819:88;27926:4;27923:1;27916:15;27950:4;27947:1;27940:15;27967:191;28007:3;28026:20;28044:1;28026:20;:::i;:::-;28021:25;;28060:20;28078:1;28060:20;:::i;:::-;28055:25;;28103:1;28100;28096:9;28089:16;;28124:3;28121:1;28118:10;28115:36;;;28131:18;;:::i;:::-;28115:36;27967:191;;;;:::o;28164:176::-;28304:28;28300:1;28292:6;28288:14;28281:52;28164:176;:::o;28346:366::-;28488:3;28509:67;28573:2;28568:3;28509:67;:::i;:::-;28502:74;;28585:93;28674:3;28585:93;:::i;:::-;28703:2;28698:3;28694:12;28687:19;;28346:366;;;:::o;28718:419::-;28884:4;28922:2;28911:9;28907:18;28899:26;;28971:9;28965:4;28961:20;28957:1;28946:9;28942:17;28935:47;28999:131;29125:4;28999:131;:::i;:::-;28991:139;;28718:419;;;:::o;29143:194::-;29183:4;29203:20;29221:1;29203:20;:::i;:::-;29198:25;;29237:20;29255:1;29237:20;:::i;:::-;29232:25;;29281:1;29278;29274:9;29266:17;;29305:1;29299:4;29296:11;29293:37;;;29310:18;;:::i;:::-;29293:37;29143:194;;;;:::o;29343:231::-;29483:34;29479:1;29471:6;29467:14;29460:58;29552:14;29547:2;29539:6;29535:15;29528:39;29343:231;:::o;29580:366::-;29722:3;29743:67;29807:2;29802:3;29743:67;:::i;:::-;29736:74;;29819:93;29908:3;29819:93;:::i;:::-;29937:2;29932:3;29928:12;29921:19;;29580:366;;;:::o;29952:419::-;30118:4;30156:2;30145:9;30141:18;30133:26;;30205:9;30199:4;30195:20;30191:1;30180:9;30176:17;30169:47;30233:131;30359:4;30233:131;:::i;:::-;30225:139;;29952:419;;;:::o;30377:143::-;30434:5;30465:6;30459:13;30450:22;;30481:33;30508:5;30481:33;:::i;:::-;30377:143;;;;:::o;30526:351::-;30596:6;30645:2;30633:9;30624:7;30620:23;30616:32;30613:119;;;30651:79;;:::i;:::-;30613:119;30771:1;30796:64;30852:7;30843:6;30832:9;30828:22;30796:64;:::i;:::-;30786:74;;30742:128;30526:351;;;;:::o;30883:85::-;30928:7;30957:5;30946:16;;30883:85;;;:::o;30974:158::-;31032:9;31065:61;31083:42;31092:32;31118:5;31092:32;:::i;:::-;31083:42;:::i;:::-;31065:61;:::i;:::-;31052:74;;30974:158;;;:::o;31138:147::-;31233:45;31272:5;31233:45;:::i;:::-;31228:3;31221:58;31138:147;;:::o;31291:114::-;31358:6;31392:5;31386:12;31376:22;;31291:114;;;:::o;31411:184::-;31510:11;31544:6;31539:3;31532:19;31584:4;31579:3;31575:14;31560:29;;31411:184;;;;:::o;31601:132::-;31668:4;31691:3;31683:11;;31721:4;31716:3;31712:14;31704:22;;31601:132;;;:::o;31739:108::-;31816:24;31834:5;31816:24;:::i;:::-;31811:3;31804:37;31739:108;;:::o;31853:179::-;31922:10;31943:46;31985:3;31977:6;31943:46;:::i;:::-;32021:4;32016:3;32012:14;31998:28;;31853:179;;;;:::o;32038:113::-;32108:4;32140;32135:3;32131:14;32123:22;;32038:113;;;:::o;32187:732::-;32306:3;32335:54;32383:5;32335:54;:::i;:::-;32405:86;32484:6;32479:3;32405:86;:::i;:::-;32398:93;;32515:56;32565:5;32515:56;:::i;:::-;32594:7;32625:1;32610:284;32635:6;32632:1;32629:13;32610:284;;;32711:6;32705:13;32738:63;32797:3;32782:13;32738:63;:::i;:::-;32731:70;;32824:60;32877:6;32824:60;:::i;:::-;32814:70;;32670:224;32657:1;32654;32650:9;32645:14;;32610:284;;;32614:14;32910:3;32903:10;;32311:608;;;32187:732;;;;:::o;32925:831::-;33188:4;33226:3;33215:9;33211:19;33203:27;;33240:71;33308:1;33297:9;33293:17;33284:6;33240:71;:::i;:::-;33321:80;33397:2;33386:9;33382:18;33373:6;33321:80;:::i;:::-;33448:9;33442:4;33438:20;33433:2;33422:9;33418:18;33411:48;33476:108;33579:4;33570:6;33476:108;:::i;:::-;33468:116;;33594:72;33662:2;33651:9;33647:18;33638:6;33594:72;:::i;:::-;33676:73;33744:3;33733:9;33729:19;33720:6;33676:73;:::i;:::-;32925:831;;;;;;;;:::o;33762:180::-;33810:77;33807:1;33800:88;33907:4;33904:1;33897:15;33931:4;33928:1;33921:15;33948:185;33988:1;34005:20;34023:1;34005:20;:::i;:::-;34000:25;;34039:20;34057:1;34039:20;:::i;:::-;34034:25;;34078:1;34068:35;;34083:18;;:::i;:::-;34068:35;34125:1;34122;34118:9;34113:14;;33948:185;;;;:::o;34139:177::-;34279:29;34275:1;34267:6;34263:14;34256:53;34139:177;:::o;34322:366::-;34464:3;34485:67;34549:2;34544:3;34485:67;:::i;:::-;34478:74;;34561:93;34650:3;34561:93;:::i;:::-;34679:2;34674:3;34670:12;34663:19;;34322:366;;;:::o;34694:419::-;34860:4;34898:2;34887:9;34883:18;34875:26;;34947:9;34941:4;34937:20;34933:1;34922:9;34918:17;34911:47;34975:131;35101:4;34975:131;:::i;:::-;34967:139;;34694:419;;;:::o;35119:410::-;35159:7;35182:20;35200:1;35182:20;:::i;:::-;35177:25;;35216:20;35234:1;35216:20;:::i;:::-;35211:25;;35271:1;35268;35264:9;35293:30;35311:11;35293:30;:::i;:::-;35282:41;;35472:1;35463:7;35459:15;35456:1;35453:22;35433:1;35426:9;35406:83;35383:139;;35502:18;;:::i;:::-;35383:139;35167:362;35119:410;;;;:::o;35535:220::-;35675:34;35671:1;35663:6;35659:14;35652:58;35744:3;35739:2;35731:6;35727:15;35720:28;35535:220;:::o;35761:366::-;35903:3;35924:67;35988:2;35983:3;35924:67;:::i;:::-;35917:74;;36000:93;36089:3;36000:93;:::i;:::-;36118:2;36113:3;36109:12;36102:19;;35761:366;;;:::o;36133:419::-;36299:4;36337:2;36326:9;36322:18;36314:26;;36386:9;36380:4;36376:20;36372:1;36361:9;36357:17;36350:47;36414:131;36540:4;36414:131;:::i;:::-;36406:139;;36133:419;;;:::o
Swarm Source
ipfs://f1e3b842ad0590c3ac340cde98d6533717aaf6bd6e27c75c24ddf9231d22aa11
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.