ERC-20
Artificial Intelligence
Overview
Max Total Supply
1,000,000 Buddy
Holders
760 (0.00%)
Market
Price
$0.04 @ 0.000012 ETH
Onchain Market Cap
$41,661.84
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
181.140527522 BuddyValue
$7.55 ( ~0.00208499140174813 Eth) [0.0181%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BuddyAI
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-27 */ /* Introducing Buddy AI: An Evolving AI-driven Multilingual Telegram bot designed to moderate communities, foster active engagement, provide real-time blockchain analytics and more. Equipped with the capability to provide essential insights into market sentiments, vital information regarding tokens, wallets, and beyond, Buddy AI stands as your ultimate companion for all things blockchain-related. Buddy AI is your go-to friend for every information you seek on the Blockchain. Telegram : https://t.me/BuddyAIERC Telegram Bot : t.me/BuddyAIERCBOT Medium : https://medium.com/@buddyaieth/buddy-ai-82fb9db36c3d Twitter : https://x.com/BuddyAIERC Website : https://buddyai.pro **/ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract BuddyAI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "BuddyAI"; string private constant _symbol = "Buddy"; 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 = 1000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _MFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _MFeeOnSell = 0; uint256 private _taxFeeOnSell = 20; //Original Fee uint256 private _MFee = _MFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousMFee = _MFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x69340EA37bE90680564d6E445B1ef41672Ff120E); address payable private _marketingAddress = payable(0x69340EA37bE90680564d6E445B1ef41672Ff120E); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = _tTotal; uint256 public _maxWalletSize = _tTotal * 2 / 100; uint256 public _swapTokensAtAmount = _tTotal / 1000; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_MFee == 0 && _taxFee == 0) return; _previousMFee = _MFee; _previoustaxFee = _taxFee; _MFee = 0; _taxFee = 0; } function restoreAllFee() private { _MFee = _previousMFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _swapTokensAtAmount*8) { contractTokenBalance = _swapTokensAtAmount*8; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 80000000000000000) { 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)) { _MFee = _MFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _MFee = _MFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _MFee, _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 MFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(MFee).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 MFeeOnBuy, uint256 MFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _MFeeOnBuy = MFeeOnBuy; _MFeeOnSell = MFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; uint256 totalFee = _MFeeOnBuy+_MFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell; require (totalFee <= 25,"Total Fees cannot be more than 25%"); } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = _tTotal*maxTxAmount/100; require (_maxTxAmount>= _tTotal/100); } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = _tTotal*maxWalletSize/100; require (_maxWalletSize>= _tTotal/100); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } function updateMarketingAddress(address _newmarketingAddress) public onlyOwner { _marketingAddress = payable(_newmarketingAddress); } }
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":"MFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newmarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405266038d7ea4c680005f196200001a919062000727565b5f196200002891906200078b565b6006555f60085560146009555f600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f557369340ea37be90680564d6e445b1ef41672ff120e60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507369340ea37be90680564d6e445b1ef41672ff120e60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066038d7ea4c680006016556064600266038d7ea4c680006200016f9190620007c5565b6200017b91906200080f565b6017556103e866038d7ea4c680006200019591906200080f565b601855348015620001a4575f80fd5b505f620001b6620006c360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000268620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000347573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036d9190620008ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003f99190620008ab565b6040518363ffffffff1660e01b815260040162000418929190620008ec565b6020604051808303815f875af115801562000435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045b9190620008ab565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004af620006ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200064f620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006b4919062000928565b60405180910390a35062000943565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200073382620006f1565b91506200074083620006f1565b925082620007535762000752620006fa565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200079782620006f1565b9150620007a483620006f1565b9250828203905081811115620007bf57620007be6200075e565b5b92915050565b5f620007d182620006f1565b9150620007de83620006f1565b9250828202620007ee81620006f1565b915082820484148315176200080857620008076200075e565b5b5092915050565b5f6200081b82620006f1565b91506200082883620006f1565b9250826200083b576200083a620006fa565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000875826200084a565b9050919050565b620008878162000869565b811462000892575f80fd5b50565b5f81519050620008a5816200087c565b92915050565b5f60208284031215620008c357620008c262000846565b5b5f620008d28482850162000895565b91505092915050565b620008e68162000869565b82525050565b5f604082019050620009015f830185620008db565b620009106020830184620008db565b9392505050565b6200092281620006f1565b82525050565b5f6020820190506200093d5f83018462000917565b92915050565b613cc980620009515f395ff3fe6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cd6565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d97565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612dea565b610850565b60405161025f9190612e42565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612eb6565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ede565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612ef7565b6108a0565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f22565b610977565b6040516103179190612e42565b60405180910390f35b34801561032b575f80fd5b50610334610a4b565b6040516103419190612ede565b60405180910390f35b348015610355575f80fd5b5061035e610a51565b60405161036b9190612f8d565b60405180910390f35b34801561037f575f80fd5b50610388610a59565b6040516103959190612fb5565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612ef7565b610a7e565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190612ff8565b610b69565b005b3480156103f9575f80fd5b50610402610c1a565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612ef7565b610c2a565b6040516104379190612ede565b60405180910390f35b34801561044b575f80fd5b50610454610c78565b005b348015610461575f80fd5b5061047c60048036038101906104779190613023565b610dc6565b005b348015610489575f80fd5b50610492610ea3565b60405161049f9190612ede565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612ef7565b610ea9565b6040516104db9190612ede565b60405180910390f35b3480156104ef575f80fd5b506104f8610ebe565b6040516105059190612fb5565b60405180910390f35b348015610519575f80fd5b50610522610ee5565b60405161052f9190612ede565b60405180910390f35b348015610543575f80fd5b5061054c610eeb565b6040516105599190612d97565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190613023565b610f28565b005b348015610595575f80fd5b506105b060048036038101906105ab919061304e565b610fc6565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612dea565b6110ee565b6040516105e59190612e42565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ef7565b61110b565b6040516106219190612e42565b60405180910390f35b348015610635575f80fd5b5061063e611128565b005b34801561064b575f80fd5b506106666004803603810190610661919061310b565b6111fd565b005b348015610673575f80fd5b5061068e60048036038101906106899190613168565b61132c565b60405161069b9190612ede565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613023565b6113ae565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ef7565b61148b565b005b6106fc611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f0565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61320e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f4275646479414900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c611648565b848461164f565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b6108a8611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906131f0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610983848484611812565b610a408461098f611648565b610a3b85604051806060016040528060288152602001613c6c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f2611648565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120929092919063ffffffff16565b61164f565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a86611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906131f0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b71611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906131f0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c27816120f4565b50565b5f610c7160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215c565b9050919050565b610c80611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906131f0565b60405180910390fd5b60648166038d7ea4c68000610e6f9190613268565b610e7991906132d6565b601681905550606466038d7ea4c68000610e9391906132d6565b6016541015610ea0575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4275646479000000000000000000000000000000000000000000000000000000815250905090565b610f30611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906131f0565b60405180910390fd5b8060188190555050565b610fce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906131f0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a5460085461108d9190613306565b6110979190613306565b6110a19190613306565b905060198111156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906133a9565b60405180910390fd5b5050505050565b5f6111016110fa611648565b8484611812565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611168611648565b73ffffffffffffffffffffffffffffffffffffffff1614806111dd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c5611648565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e5575f80fd5b5f6111ef30610c2a565b90506111fa816121c8565b50565b611205611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906131f0565b60405180910390fd5b5f5b83839050811015611326578160055f8686858181106112b5576112b461320e565b5b90506020020160208101906112ca9190612ef7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611293565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b6611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906131f0565b60405180910390fd5b60648166038d7ea4c680006114579190613268565b61146191906132d6565b601781905550606466038d7ea4c6800061147b91906132d6565b6017541015611488575f80fd5b50565b611493611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611516906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613437565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906134c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290613553565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612ede565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906135e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e59061366f565b60405180910390fd5b5f8111611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136fd565b60405180910390fd5b611938610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a65750611976610ebe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d9f57601560149054906101000a900460ff16611a35576119c7610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b9061378b565b60405180910390fd5b5b601654811115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906137f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b18575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613881565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c035760175481611bb884610c2a565b611bc29190613306565b10611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf99061390f565b60405180910390fd5b5b5f611c0d30610c2a565b90505f60185482101590506008601854611c279190613268565b8210611c3f576008601854611c3c9190613268565b91505b808015611c57575060158054906101000a900460ff16155b8015611cb0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc85750601560169054906101000a900460ff165b8015611d1b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d6e575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9c57611d7c826121c8565b5f47905067011c37937e080000811115611d9a57611d99476120f4565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e3f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eef575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efd575f9050612080565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612067575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207f57600a54600c81905550600b54600d819055505b5b61208c84848484612431565b50505050565b5f8383111582906120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612d97565b60405180910390fd5b505f83856120e7919061392d565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612158573d5f803e3d5ffd5b5050565b5f6006548211156121a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612199906139d0565b60405180910390fd5b5f6121ab61245e565b90506121c0818461248790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612b40565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190613a02565b8160018151811061231f5761231e61320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613b1d565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061243f5761243e6124d0565b5b61244a848484612509565b80612458576124576126c9565b5b50505050565b5f805f6124696126dd565b91509150612480818361248790919063ffffffff16565b9250505090565b5f6124c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612736565b905092915050565b5f600c541480156124e257505f600d54145b61250757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251887612797565b9550955095509550955095506125748660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126058560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061264f8161289d565b6126598483612954565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b69190612ede565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061270c66038d7ea4c6800060065461248790919063ffffffff16565b8210156127295760065466038d7ea4c68000935093505050612732565b81819350935050505b9091565b5f808311829061277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612d97565b60405180910390fd5b505f838561278a91906132d6565b9050809150509392505050565b5f805f805f805f805f6127af8a600c54600d5461298e565b9250925092505f6127be61245e565b90505f805f6127cf8e878787612a20565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612092565b905092915050565b5f80828461284e9190613306565b905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90613bbf565b60405180910390fd5b8091505092915050565b5f6128a661245e565b90505f6128bc8284612aa490919063ffffffff16565b905061290e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612969826006546127f790919063ffffffff16565b6006819055506129848160075461284090919063ffffffff16565b6007819055505050565b5f805f806129b860646129aa888a612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f6129e160646129d3888b612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f612a09826129fb858c6127f790919063ffffffff16565b6127f790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a378589612aa490919063ffffffff16565b90505f612a4d8689612aa490919063ffffffff16565b90505f612a638789612aa490919063ffffffff16565b90505f612a8b82612a7d85876127f790919063ffffffff16565b6127f790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612ab4575f9050612b15565b5f8284612ac19190613268565b9050828482612ad091906132d6565b14612b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0790613c4d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7682612b30565b810181811067ffffffffffffffff82111715612b9557612b94612b40565b5b80604052505050565b5f612ba7612b1b565b9050612bb38282612b6d565b919050565b5f67ffffffffffffffff821115612bd257612bd1612b40565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1082612be7565b9050919050565b612c2081612c06565b8114612c2a575f80fd5b50565b5f81359050612c3b81612c17565b92915050565b5f612c53612c4e84612bb8565b612b9e565b90508083825260208201905060208402830185811115612c7657612c75612be3565b5b835b81811015612c9f5780612c8b8882612c2d565b845260208401935050602081019050612c78565b5050509392505050565b5f82601f830112612cbd57612cbc612b2c565b5b8135612ccd848260208601612c41565b91505092915050565b5f60208284031215612ceb57612cea612b24565b5b5f82013567ffffffffffffffff811115612d0857612d07612b28565b5b612d1484828501612ca9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d54578082015181840152602081019050612d39565b5f8484015250505050565b5f612d6982612d1d565b612d738185612d27565b9350612d83818560208601612d37565b612d8c81612b30565b840191505092915050565b5f6020820190508181035f830152612daf8184612d5f565b905092915050565b5f819050919050565b612dc981612db7565b8114612dd3575f80fd5b50565b5f81359050612de481612dc0565b92915050565b5f8060408385031215612e0057612dff612b24565b5b5f612e0d85828601612c2d565b9250506020612e1e85828601612dd6565b9150509250929050565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f819050919050565b5f612e7e612e79612e7484612be7565b612e5b565b612be7565b9050919050565b5f612e8f82612e64565b9050919050565b5f612ea082612e85565b9050919050565b612eb081612e96565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b612ed881612db7565b82525050565b5f602082019050612ef15f830184612ecf565b92915050565b5f60208284031215612f0c57612f0b612b24565b5b5f612f1984828501612c2d565b91505092915050565b5f805f60608486031215612f3957612f38612b24565b5b5f612f4686828701612c2d565b9350506020612f5786828701612c2d565b9250506040612f6886828701612dd6565b9150509250925092565b5f60ff82169050919050565b612f8781612f72565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b612faf81612c06565b82525050565b5f602082019050612fc85f830184612fa6565b92915050565b612fd781612e28565b8114612fe1575f80fd5b50565b5f81359050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612b24565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612b24565b5b5f61304584828501612dd6565b91505092915050565b5f805f806080858703121561306657613065612b24565b5b5f61307387828801612dd6565b945050602061308487828801612dd6565b935050604061309587828801612dd6565b92505060606130a687828801612dd6565b91505092959194509250565b5f80fd5b5f8083601f8401126130cb576130ca612b2c565b5b8235905067ffffffffffffffff8111156130e8576130e76130b2565b5b60208301915083602082028301111561310457613103612be3565b5b9250929050565b5f805f6040848603121561312257613121612b24565b5b5f84013567ffffffffffffffff81111561313f5761313e612b28565b5b61314b868287016130b6565b9350935050602061315e86828701612fe4565b9150509250925092565b5f806040838503121561317e5761317d612b24565b5b5f61318b85828601612c2d565b925050602061319c85828601612c2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131da602083612d27565b91506131e5826131a6565b602082019050919050565b5f6020820190508181035f830152613207816131ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327282612db7565b915061327d83612db7565b925082820261328b81612db7565b915082820484148315176132a2576132a161323b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e082612db7565b91506132eb83612db7565b9250826132fb576132fa6132a9565b5b828204905092915050565b5f61331082612db7565b915061331b83612db7565b92508282019050808211156133335761333261323b565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613393602283612d27565b915061339e82613339565b604082019050919050565b5f6020820190508181035f8301526133c081613387565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613421602683612d27565b915061342c826133c7565b604082019050919050565b5f6020820190508181035f83015261344e81613415565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602483612d27565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602283612d27565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135cb602583612d27565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613659602383612d27565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136e7602983612d27565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613775603f83612d27565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137dd601c83612d27565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61386b602383612d27565b915061387682613811565b604082019050919050565b5f6020820190508181035f8301526138988161385f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f9602383612d27565b91506139048261389f565b604082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b5f61393782612db7565b915061394283612db7565b925082820390508181111561395a5761395961323b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139ba602a83612d27565b91506139c582613960565b604082019050919050565b5f6020820190508181035f8301526139e7816139ae565b9050919050565b5f815190506139fc81612c17565b92915050565b5f60208284031215613a1757613a16612b24565b5b5f613a24848285016139ee565b91505092915050565b5f819050919050565b5f613a50613a4b613a4684613a2d565b612e5b565b612db7565b9050919050565b613a6081613a36565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9881612c06565b82525050565b5f613aa98383613a8f565b60208301905092915050565b5f602082019050919050565b5f613acb82613a66565b613ad58185613a70565b9350613ae083613a80565b805f5b83811015613b10578151613af78882613a9e565b9750613b0283613ab5565b925050600181019050613ae3565b5085935050505092915050565b5f60a082019050613b305f830188612ecf565b613b3d6020830187613a57565b8181036040830152613b4f8186613ac1565b9050613b5e6060830185612fa6565b613b6b6080830184612ecf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ba9601b83612d27565b9150613bb482613b75565b602082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c37602183612d27565b9150613c4282613bdd565b604082019050919050565b5f6020820190508181035f830152613c6481613c2b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa64736f6c63430008160033
Deployed Bytecode
0x6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cd6565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d97565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612dea565b610850565b60405161025f9190612e42565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612eb6565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ede565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612ef7565b6108a0565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f22565b610977565b6040516103179190612e42565b60405180910390f35b34801561032b575f80fd5b50610334610a4b565b6040516103419190612ede565b60405180910390f35b348015610355575f80fd5b5061035e610a51565b60405161036b9190612f8d565b60405180910390f35b34801561037f575f80fd5b50610388610a59565b6040516103959190612fb5565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612ef7565b610a7e565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190612ff8565b610b69565b005b3480156103f9575f80fd5b50610402610c1a565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612ef7565b610c2a565b6040516104379190612ede565b60405180910390f35b34801561044b575f80fd5b50610454610c78565b005b348015610461575f80fd5b5061047c60048036038101906104779190613023565b610dc6565b005b348015610489575f80fd5b50610492610ea3565b60405161049f9190612ede565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612ef7565b610ea9565b6040516104db9190612ede565b60405180910390f35b3480156104ef575f80fd5b506104f8610ebe565b6040516105059190612fb5565b60405180910390f35b348015610519575f80fd5b50610522610ee5565b60405161052f9190612ede565b60405180910390f35b348015610543575f80fd5b5061054c610eeb565b6040516105599190612d97565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190613023565b610f28565b005b348015610595575f80fd5b506105b060048036038101906105ab919061304e565b610fc6565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612dea565b6110ee565b6040516105e59190612e42565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ef7565b61110b565b6040516106219190612e42565b60405180910390f35b348015610635575f80fd5b5061063e611128565b005b34801561064b575f80fd5b506106666004803603810190610661919061310b565b6111fd565b005b348015610673575f80fd5b5061068e60048036038101906106899190613168565b61132c565b60405161069b9190612ede565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613023565b6113ae565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ef7565b61148b565b005b6106fc611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f0565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61320e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f4275646479414900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c611648565b848461164f565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b6108a8611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906131f0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610983848484611812565b610a408461098f611648565b610a3b85604051806060016040528060288152602001613c6c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f2611648565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120929092919063ffffffff16565b61164f565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a86611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906131f0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b71611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906131f0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c27816120f4565b50565b5f610c7160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215c565b9050919050565b610c80611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906131f0565b60405180910390fd5b60648166038d7ea4c68000610e6f9190613268565b610e7991906132d6565b601681905550606466038d7ea4c68000610e9391906132d6565b6016541015610ea0575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4275646479000000000000000000000000000000000000000000000000000000815250905090565b610f30611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906131f0565b60405180910390fd5b8060188190555050565b610fce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906131f0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a5460085461108d9190613306565b6110979190613306565b6110a19190613306565b905060198111156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906133a9565b60405180910390fd5b5050505050565b5f6111016110fa611648565b8484611812565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611168611648565b73ffffffffffffffffffffffffffffffffffffffff1614806111dd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c5611648565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e5575f80fd5b5f6111ef30610c2a565b90506111fa816121c8565b50565b611205611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906131f0565b60405180910390fd5b5f5b83839050811015611326578160055f8686858181106112b5576112b461320e565b5b90506020020160208101906112ca9190612ef7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611293565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b6611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906131f0565b60405180910390fd5b60648166038d7ea4c680006114579190613268565b61146191906132d6565b601781905550606466038d7ea4c6800061147b91906132d6565b6017541015611488575f80fd5b50565b611493611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611516906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613437565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906134c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290613553565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612ede565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906135e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e59061366f565b60405180910390fd5b5f8111611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136fd565b60405180910390fd5b611938610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a65750611976610ebe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d9f57601560149054906101000a900460ff16611a35576119c7610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b9061378b565b60405180910390fd5b5b601654811115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906137f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b18575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613881565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c035760175481611bb884610c2a565b611bc29190613306565b10611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf99061390f565b60405180910390fd5b5b5f611c0d30610c2a565b90505f60185482101590506008601854611c279190613268565b8210611c3f576008601854611c3c9190613268565b91505b808015611c57575060158054906101000a900460ff16155b8015611cb0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc85750601560169054906101000a900460ff165b8015611d1b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d6e575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9c57611d7c826121c8565b5f47905067011c37937e080000811115611d9a57611d99476120f4565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e3f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eef575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efd575f9050612080565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612067575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207f57600a54600c81905550600b54600d819055505b5b61208c84848484612431565b50505050565b5f8383111582906120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612d97565b60405180910390fd5b505f83856120e7919061392d565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612158573d5f803e3d5ffd5b5050565b5f6006548211156121a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612199906139d0565b60405180910390fd5b5f6121ab61245e565b90506121c0818461248790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612b40565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190613a02565b8160018151811061231f5761231e61320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613b1d565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061243f5761243e6124d0565b5b61244a848484612509565b80612458576124576126c9565b5b50505050565b5f805f6124696126dd565b91509150612480818361248790919063ffffffff16565b9250505090565b5f6124c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612736565b905092915050565b5f600c541480156124e257505f600d54145b61250757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251887612797565b9550955095509550955095506125748660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126058560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061264f8161289d565b6126598483612954565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b69190612ede565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061270c66038d7ea4c6800060065461248790919063ffffffff16565b8210156127295760065466038d7ea4c68000935093505050612732565b81819350935050505b9091565b5f808311829061277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612d97565b60405180910390fd5b505f838561278a91906132d6565b9050809150509392505050565b5f805f805f805f805f6127af8a600c54600d5461298e565b9250925092505f6127be61245e565b90505f805f6127cf8e878787612a20565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612092565b905092915050565b5f80828461284e9190613306565b905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90613bbf565b60405180910390fd5b8091505092915050565b5f6128a661245e565b90505f6128bc8284612aa490919063ffffffff16565b905061290e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612969826006546127f790919063ffffffff16565b6006819055506129848160075461284090919063ffffffff16565b6007819055505050565b5f805f806129b860646129aa888a612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f6129e160646129d3888b612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f612a09826129fb858c6127f790919063ffffffff16565b6127f790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a378589612aa490919063ffffffff16565b90505f612a4d8689612aa490919063ffffffff16565b90505f612a638789612aa490919063ffffffff16565b90505f612a8b82612a7d85876127f790919063ffffffff16565b6127f790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612ab4575f9050612b15565b5f8284612ac19190613268565b9050828482612ad091906132d6565b14612b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0790613c4d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7682612b30565b810181811067ffffffffffffffff82111715612b9557612b94612b40565b5b80604052505050565b5f612ba7612b1b565b9050612bb38282612b6d565b919050565b5f67ffffffffffffffff821115612bd257612bd1612b40565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1082612be7565b9050919050565b612c2081612c06565b8114612c2a575f80fd5b50565b5f81359050612c3b81612c17565b92915050565b5f612c53612c4e84612bb8565b612b9e565b90508083825260208201905060208402830185811115612c7657612c75612be3565b5b835b81811015612c9f5780612c8b8882612c2d565b845260208401935050602081019050612c78565b5050509392505050565b5f82601f830112612cbd57612cbc612b2c565b5b8135612ccd848260208601612c41565b91505092915050565b5f60208284031215612ceb57612cea612b24565b5b5f82013567ffffffffffffffff811115612d0857612d07612b28565b5b612d1484828501612ca9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d54578082015181840152602081019050612d39565b5f8484015250505050565b5f612d6982612d1d565b612d738185612d27565b9350612d83818560208601612d37565b612d8c81612b30565b840191505092915050565b5f6020820190508181035f830152612daf8184612d5f565b905092915050565b5f819050919050565b612dc981612db7565b8114612dd3575f80fd5b50565b5f81359050612de481612dc0565b92915050565b5f8060408385031215612e0057612dff612b24565b5b5f612e0d85828601612c2d565b9250506020612e1e85828601612dd6565b9150509250929050565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f819050919050565b5f612e7e612e79612e7484612be7565b612e5b565b612be7565b9050919050565b5f612e8f82612e64565b9050919050565b5f612ea082612e85565b9050919050565b612eb081612e96565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b612ed881612db7565b82525050565b5f602082019050612ef15f830184612ecf565b92915050565b5f60208284031215612f0c57612f0b612b24565b5b5f612f1984828501612c2d565b91505092915050565b5f805f60608486031215612f3957612f38612b24565b5b5f612f4686828701612c2d565b9350506020612f5786828701612c2d565b9250506040612f6886828701612dd6565b9150509250925092565b5f60ff82169050919050565b612f8781612f72565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b612faf81612c06565b82525050565b5f602082019050612fc85f830184612fa6565b92915050565b612fd781612e28565b8114612fe1575f80fd5b50565b5f81359050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612b24565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612b24565b5b5f61304584828501612dd6565b91505092915050565b5f805f806080858703121561306657613065612b24565b5b5f61307387828801612dd6565b945050602061308487828801612dd6565b935050604061309587828801612dd6565b92505060606130a687828801612dd6565b91505092959194509250565b5f80fd5b5f8083601f8401126130cb576130ca612b2c565b5b8235905067ffffffffffffffff8111156130e8576130e76130b2565b5b60208301915083602082028301111561310457613103612be3565b5b9250929050565b5f805f6040848603121561312257613121612b24565b5b5f84013567ffffffffffffffff81111561313f5761313e612b28565b5b61314b868287016130b6565b9350935050602061315e86828701612fe4565b9150509250925092565b5f806040838503121561317e5761317d612b24565b5b5f61318b85828601612c2d565b925050602061319c85828601612c2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131da602083612d27565b91506131e5826131a6565b602082019050919050565b5f6020820190508181035f830152613207816131ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327282612db7565b915061327d83612db7565b925082820261328b81612db7565b915082820484148315176132a2576132a161323b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e082612db7565b91506132eb83612db7565b9250826132fb576132fa6132a9565b5b828204905092915050565b5f61331082612db7565b915061331b83612db7565b92508282019050808211156133335761333261323b565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613393602283612d27565b915061339e82613339565b604082019050919050565b5f6020820190508181035f8301526133c081613387565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613421602683612d27565b915061342c826133c7565b604082019050919050565b5f6020820190508181035f83015261344e81613415565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602483612d27565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602283612d27565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135cb602583612d27565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613659602383612d27565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136e7602983612d27565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613775603f83612d27565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137dd601c83612d27565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61386b602383612d27565b915061387682613811565b604082019050919050565b5f6020820190508181035f8301526138988161385f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f9602383612d27565b91506139048261389f565b604082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b5f61393782612db7565b915061394283612db7565b925082820390508181111561395a5761395961323b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139ba602a83612d27565b91506139c582613960565b604082019050919050565b5f6020820190508181035f8301526139e7816139ae565b9050919050565b5f815190506139fc81612c17565b92915050565b5f60208284031215613a1757613a16612b24565b5b5f613a24848285016139ee565b91505092915050565b5f819050919050565b5f613a50613a4b613a4684613a2d565b612e5b565b612db7565b9050919050565b613a6081613a36565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9881612c06565b82525050565b5f613aa98383613a8f565b60208301905092915050565b5f602082019050919050565b5f613acb82613a66565b613ad58185613a70565b9350613ae083613a80565b805f5b83811015613b10578151613af78882613a9e565b9750613b0283613ab5565b925050600181019050613ae3565b5085935050505092915050565b5f60a082019050613b305f830188612ecf565b613b3d6020830187613a57565b8181036040830152613b4f8186613ac1565b9050613b5e6060830185612fa6565b613b6b6080830184612ecf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ba9601b83612d27565b9150613bb482613b75565b602082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c37602183612d27565b9150613c4282613bdd565b604082019050919050565b5f6020820190508181035f830152613c6481613c2b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa64736f6c63430008160033
Deployed Bytecode Sourcemap
4781:13650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13211:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7246:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8171:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7523:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18277:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8372:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6144:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17535:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13060:143;;;;;;;;;;;;;:::i;:::-;;7626:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2268:148;;;;;;;;;;;;;:::i;:::-;;17675:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6293:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5838:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2054:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17344:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16874:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7772:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5800:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12816:236;;;;;;;;;;;;;:::i;:::-;;18034:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7979:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17850:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2424:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13211:169;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13287:9:::1;13282:91;13306:5;:12;13302:1;:16;13282:91;;;13357:4;13340;:14;13345:5;13351:1;13345:8;;;;;;;;:::i;:::-;;;;;;;;13340:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13320:3;;;;;;;13282:91;;;;13211:169:::0;:::o;7246:83::-;7283:13;7316:5;;;;;;;;;;;;;;;;;7309:12;;7246:83;:::o;8171:193::-;8273:4;8295:39;8304:12;:10;:12::i;:::-;8318:7;8327:6;8295:8;:39::i;:::-;8352:4;8345:11;;8171:193;;;;:::o;6096:41::-;;;;;;;;;;;;;:::o;7523:95::-;7576:7;5327:15;7596:14;;7523:95;:::o;18277:147::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18395:20:::1;18367:17;;:49;;;;;;;;;;;;;;;;;;18277:147:::0;:::o;8372:446::-;8504:4;8521:36;8531:6;8539:9;8550:6;8521:9;:36::i;:::-;8568:220;8591:6;8612:12;:10;:12::i;:::-;8639:138;8695:6;8639:138;;;;;;;;;;;;;;;;;:11;:19;8651:6;8639:19;;;;;;;;;;;;;;;:33;8659:12;:10;:12::i;:::-;8639:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8568:8;:220::i;:::-;8806:4;8799:11;;8372:446;;;;;:::o;6393:51::-;;;;:::o;7432:83::-;7473:5;5001:1;7491:16;;7432:83;:::o;6144:28::-;;;;;;;;;;;;;:::o;13388:92::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13467:5:::1;13452:4;:12;13457:6;13452:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13388:92:::0;:::o;17535:101::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17616:12:::1;17602:11;;:26;;;;;;;;;;;;;;;;;;17535:101:::0;:::o;13060:143::-;13102:26;13131:21;13102:50;;13163:32;13176:18;13163:12;:32::i;:::-;13091:112;13060:143::o;7626:138::-;7692:7;7719:37;7739:7;:16;7747:7;7739:16;;;;;;;;;;;;;;;;7719:19;:37::i;:::-;7712:44;;7626:138;;;:::o;2268:148::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2375:1:::1;2338:40;;2359:6;::::0;::::1;;;;;;;;2338:40;;;;;;;;;;;;2406:1;2389:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2268:148::o:0;17675:167::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17784:3:::1;17772:11;5327:15;17764:19;;;;:::i;:::-;:23;;;;:::i;:::-;17749:12;:38;;;;17830:3;5327:15;17822:11;;;;:::i;:::-;17807:12;;:26;;17798:36;;;::::0;::::1;;17675:167:::0;:::o;6293:37::-;;;;:::o;5838:43::-;;;;;;;;;;;;;;;;;:::o;2054:79::-;2092:7;2119:6;;;;;;;;;;;2112:13;;2054:79;:::o;6337:49::-;;;;:::o;7337:87::-;7376:13;7409:7;;;;;;;;;;;;;;;;;7402:14;;7337:87;:::o;17344:139::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:18:::1;17435:19;:40;;;;17344:139:::0;:::o;16874:418::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17013:9:::1;17000:10;:22;;;;17047:10;17033:11;:24;;;;17083:11;17068:12;:26;;;;17121:12;17105:13;:28;;;;17144:16;17199:13;;17186:12;;17174:11;;17163:10;;:22;;;;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;17144:68;;17244:2;17232:8;:14;;17223:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:303;16874:418:::0;;;;:::o;7772:199::-;7877:4;7899:42;7909:12;:10;:12::i;:::-;7923:9;7934:6;7899:9;:42::i;:::-;7959:4;7952:11;;7772:199;;;;:::o;5800:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12816:236::-;12882:19;;;;;;;;;;;12866:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12921:17;;;;;;;;;;;12905:33;;:12;:10;:12::i;:::-;:33;;;12866:72;12858:81;;;;;;12950:23;12976:24;12994:4;12976:9;:24::i;:::-;12950:50;;13011:33;13028:15;13011:16;:33::i;:::-;12847:205;12816:236::o;18034:234::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18151:9:::1;18147:114;18170:8;;:15;;18166:1;:19;18147:114;;;18241:8;18207:18;:31;18226:8;;18235:1;18226:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18207:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18187:3;;;;;;;18147:114;;;;18034:234:::0;;;:::o;7979:184::-;8096:7;8128:11;:18;8140:5;8128:18;;;;;;;;;;;;;;;:27;8147:7;8128:27;;;;;;;;;;;;;;;;8121:34;;7979:184;;;;:::o;17850:176::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17966:3:::1;17952:13;5327:15;17944:21;;;;:::i;:::-;:25;;;;:::i;:::-;17927:14;:42;;;;18014:3;5327:15;18006:11;;;;:::i;:::-;17989:14;;:28;;17980:38;;;::::0;::::1;;17850:176:::0;:::o;2424:244::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2533:1:::1;2513:22;;:8;:22;;::::0;2505:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2623:8;2594:38;;2615:6;::::0;::::1;;;;;;;;2594:38;;;;;;;;;;;;2652:8;2643:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2424:244:::0;:::o;813:98::-;866:7;893:10;886:17;;813:98;:::o;9485:369::-;9629:1;9612:19;;:5;:19;;;9604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9710:1;9691:21;;:7;:21;;;9683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9792:6;9762:11;:18;9774:5;9762:18;;;;;;;;;;;;;;;:27;9781:7;9762:27;;;;;;;;;;;;;;;:36;;;;9830:7;9814:32;;9823:5;9814:32;;;9839:6;9814:32;;;;;;:::i;:::-;;;;;;;;9485:369;;;:::o;9862:2348::-;10000:1;9984:18;;:4;:18;;;9976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:1;10063:16;;:2;:16;;;10055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10147:1;10138:6;:10;10130:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10219:7;:5;:7::i;:::-;10211:15;;:4;:15;;;;:32;;;;;10236:7;:5;:7::i;:::-;10230:13;;:2;:13;;;;10211:32;10207:1293;;;10300:11;;;;;;;;;;;10295:144;;10348:7;:5;:7::i;:::-;10340:15;;:4;:15;;;10332:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10295:144;10473:12;;10463:6;:22;;10455:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10542:4;:10;10547:4;10542:10;;;;;;;;;;;;;;;;;;;;;;;;;10541:11;:24;;;;;10557:4;:8;10562:2;10557:8;;;;;;;;;;;;;;;;;;;;;;;;;10556:9;10541:24;10533:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10631:13;;;;;;;;;;;10625:19;;:2;:19;;;10622:146;;10698:14;;10689:6;10673:13;10683:2;10673:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10665:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10622:146;10784:28;10815:24;10833:4;10815:9;:24::i;:::-;10784:55;;10854:12;10893:19;;10869:20;:43;;10854:58;;10976:1;10956:19;;:21;;;;:::i;:::-;10932:20;:45;10929:142;;11054:1;11034:19;;:21;;;;:::i;:::-;11011:44;;10929:142;11091:7;:18;;;;;11103:6;;;;;;;;;;11102:7;11091:18;:43;;;;;11121:13;;;;;;;;;;;11113:21;;:4;:21;;;;11091:43;:58;;;;;11138:11;;;;;;;;;;;11091:58;:87;;;;;11154:18;:24;11173:4;11154:24;;;;;;;;;;;;;;;;;;;;;;;;;11153:25;11091:87;:114;;;;;11183:18;:22;11202:2;11183:22;;;;;;;;;;;;;;;;;;;;;;;;;11182:23;11091:114;11087:402;;;11226:38;11243:20;11226:16;:38::i;:::-;11283:26;11312:21;11283:50;;11377:17;11356:18;:38;11352:122;;;11419:35;11432:21;11419:12;:35::i;:::-;11352:122;11207:282;11087:402;10245:1255;;10207:1293;11512:12;11527:4;11512:19;;11576:18;:24;11595:4;11576:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11604:18;:22;11623:2;11604:22;;;;;;;;;;;;;;;;;;;;;;;;;11576:50;11575:102;;;;11640:13;;;;;;;;;;;11632:21;;:4;:21;;;;:44;;;;;11663:13;;;;;;;;;;;11657:19;;:2;:19;;;;11632:44;11575:102;11571:578;;;11704:5;11694:15;;11571:578;;;11787:13;;;;;;;;;;;11779:21;;:4;:21;;;:55;;;;;11818:15;;;;;;;;;;;11804:30;;:2;:30;;;;11779:55;11776:154;;;11863:10;;11855:5;:18;;;;11902:12;;11892:7;:22;;;;11776:154;11989:13;;;;;;;;;;;11983:19;;:2;:19;;;:55;;;;;12022:15;;;;;;;;;;;12006:32;;:4;:32;;;;11983:55;11979:157;;;12067:11;;12059:5;:19;;;;12107:13;;12097:7;:23;;;;11979:157;11571:578;12161:41;12176:4;12182:2;12186:6;12194:7;12161:14;:41::i;:::-;9965:2245;9862:2348;;;:::o;3032:224::-;3152:7;3185:1;3180;:6;;3188:12;3172:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3212:9;3228:1;3224;:5;;;;:::i;:::-;3212:17;;3247:1;3240:8;;;3032:224;;;;;:::o;12709:99::-;12766:17;;;;;;;;;;;:26;;:34;12793:6;12766:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12709:99;:::o;8826:323::-;8921:7;8979;;8968;:18;;8946:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9067:19;9089:10;:8;:10::i;:::-;9067:32;;9117:24;9129:11;9117:7;:11;;:24;;;;:::i;:::-;9110:31;;;8826:323;;;:::o;12218:483::-;6547:4;6538:6;;:13;;;;;;;;;;;;;;;;;;12296:21:::1;12334:1;12320:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12296:40;;12365:4;12347;12352:1;12347:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12391:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12381:4;12386:1;12381:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12424:62;12441:4;12456:15;;;;;;;;;;;12474:11;12424:8;:62::i;:::-;12497:15;;;;;;;;;;;:66;;;12578:11;12604:1;12620:4;12647;12667:15;12497:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12285:416;6583:5:::0;6574:6;;:14;;;;;;;;;;;;;;;;;;12218:483;:::o;13488:282::-;13644:7;13639:28;;13653:14;:12;:14::i;:::-;13639:28;13678:44;13696:6;13704:9;13715:6;13678:17;:44::i;:::-;13738:7;13733:29;;13747:15;:13;:15::i;:::-;13733:29;13488:282;;;;:::o;16437:164::-;16479:7;16500:15;16517;16536:19;:17;:19::i;:::-;16499:56;;;;16573:20;16585:7;16573;:11;;:20;;;;:::i;:::-;16566:27;;;;16437:164;:::o;3518:132::-;3576:7;3603:39;3607:1;3610;3603:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3596:46;;3518:132;;;;:::o;9157:203::-;9213:1;9204:5;;:10;:26;;;;;9229:1;9218:7;;:12;9204:26;9232:7;9200:39;9267:5;;9251:13;:21;;;;9301:7;;9283:15;:25;;;;9329:1;9321:5;:9;;;;9351:1;9341:7;:11;;;;9157:203;:::o;13778:610::-;13925:15;13955:23;13993:12;14020:23;14058:12;14085:13;14112:19;14123:7;14112:10;:19::i;:::-;13910:221;;;;;;;;;;;;14160:28;14180:7;14160;:15;14168:6;14160:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14142:7;:15;14150:6;14142:15;;;;;;;;;;;;;;;:46;;;;14220:39;14243:15;14220:7;:18;14228:9;14220:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14199:7;:18;14207:9;14199:18;;;;;;;;;;;;;;;:60;;;;14270:16;14280:5;14270:9;:16::i;:::-;14297:23;14309:4;14315;14297:11;:23::i;:::-;14353:9;14336:44;;14345:6;14336:44;;;14364:15;14336:44;;;;;;:::i;:::-;;;;;;;;13899:489;;;;;;13778:610;;;:::o;9368:109::-;9420:13;;9412:5;:21;;;;9454:15;;9444:7;:25;;;;9368:109::o;16609:257::-;16660:7;16669;16689:15;16707:7;;16689:25;;16725:15;5327;16725:25;;16775:20;5327:15;16775:7;;:11;;:20;;;;:::i;:::-;16765:7;:30;16761:61;;;16805:7;;5327:15;16797:25;;;;;;;;16761:61;16841:7;16850;16833:25;;;;;;16609:257;;;:::o;3658:223::-;3778:7;3810:1;3806;:5;3813:12;3798:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3837:9;3853:1;3849;:5;;;;:::i;:::-;3837:17;;3872:1;3865:8;;;3658:223;;;;;:::o;14807:611::-;14907:7;14929;14951;14973;14995;15017;15053:23;15078:12;15092:13;15122:36;15134:7;15143:5;;15150:7;;15122:11;:36::i;:::-;15052:106;;;;;;15169:19;15191:10;:8;:10::i;:::-;15169:32;;15213:15;15230:23;15255:12;15284:46;15296:7;15305:4;15311:5;15318:11;15284;:46::i;:::-;15212:118;;;;;;15349:7;15358:15;15375:4;15381:15;15398:4;15404:5;15341:69;;;;;;;;;;;;;;;;;;;14807:611;;;;;;;:::o;2888:136::-;2946:7;2973:43;2977:1;2980;2973:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2966:50;;2888:136;;;;:::o;2701:179::-;2759:7;2779:9;2795:1;2791;:5;;;;:::i;:::-;2779:17;;2820:1;2815;:6;;2807:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2871:1;2864:8;;;2701:179;;;;:::o;14396:211::-;14449:19;14471:10;:8;:10::i;:::-;14449:32;;14492:13;14508:22;14518:11;14508:5;:9;;:22;;;;:::i;:::-;14492:38;;14566:33;14593:5;14566:7;:22;14582:4;14566:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14541:7;:22;14557:4;14541:22;;;;;;;;;;;;;;;:58;;;;14438:169;;14396:211;:::o;14615:147::-;14693:17;14705:4;14693:7;;:11;;:17;;;;:::i;:::-;14683:7;:27;;;;14734:20;14749:4;14734:10;;:14;;:20;;;;:::i;:::-;14721:10;:33;;;;14615:147;;:::o;15426:461::-;15591:7;15613;15635;15670:12;15685:26;15707:3;15685:17;15697:4;15685:7;:11;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;15670:41;;15722:13;15738:28;15762:3;15738:19;15750:6;15738:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15722:44;;15777:23;15803:28;15825:5;15803:17;15815:4;15803:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15777:54;;15850:15;15867:4;15873:5;15842:37;;;;;;;;;15426:461;;;;;;;:::o;15895:534::-;16089:7;16111;16133;16168:15;16186:24;16198:11;16186:7;:11;;:24;;;;:::i;:::-;16168:42;;16221:12;16236:21;16245:11;16236:4;:8;;:21;;;;:::i;:::-;16221:36;;16268:13;16284:22;16294:11;16284:5;:9;;:22;;;;:::i;:::-;16268:38;;16317:23;16343:28;16365:5;16343:17;16355:4;16343:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16317:54;;16390:7;16399:15;16416:4;16382:39;;;;;;;;;;15895:534;;;;;;;;:::o;3264:246::-;3322:7;3351:1;3346;:6;3342:47;;3376:1;3369:8;;;;3342:47;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3444:1;3439;3435;:5;;;;:::i;:::-;:10;3427:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3501:1;3494:8;;;3264: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:329::-;7672:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:119;;;7727:79;;:::i;:::-;7689:119;7847:1;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7818:117;7613:329;;;;:::o;7948:619::-;8025:6;8033;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;8471:2;8497:53;8542:7;8533:6;8522:9;8518:22;8497:53;:::i;:::-;8487:63;;8442:118;7948:619;;;;;:::o;8573:86::-;8608:7;8648:4;8641:5;8637:16;8626:27;;8573:86;;;:::o;8665:112::-;8748:22;8764:5;8748:22;:::i;:::-;8743:3;8736:35;8665:112;;:::o;8783:214::-;8872:4;8910:2;8899:9;8895:18;8887:26;;8923:67;8987:1;8976:9;8972:17;8963:6;8923:67;:::i;:::-;8783:214;;;;:::o;9003:118::-;9090:24;9108:5;9090:24;:::i;:::-;9085:3;9078:37;9003:118;;:::o;9127:222::-;9220:4;9258:2;9247:9;9243:18;9235:26;;9271:71;9339:1;9328:9;9324:17;9315:6;9271:71;:::i;:::-;9127:222;;;;:::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:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:410;14346:7;14369:20;14387:1;14369:20;:::i;:::-;14364:25;;14403:20;14421:1;14403:20;:::i;:::-;14398:25;;14458:1;14455;14451:9;14480:30;14498:11;14480:30;:::i;:::-;14469:41;;14659:1;14650:7;14646:15;14643:1;14640:22;14620:1;14613:9;14593:83;14570:139;;14689:18;;:::i;:::-;14570:139;14354:362;14306:410;;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:185;14948:1;14965:20;14983:1;14965:20;:::i;:::-;14960:25;;14999:20;15017:1;14999:20;:::i;:::-;14994:25;;15038:1;15028:35;;15043:18;;:::i;:::-;15028:35;15085:1;15082;15078:9;15073:14;;14908:185;;;;:::o;15099:191::-;15139:3;15158:20;15176:1;15158:20;:::i;:::-;15153:25;;15192:20;15210:1;15192:20;:::i;:::-;15187:25;;15235:1;15232;15228:9;15221:16;;15256:3;15253:1;15250:10;15247:36;;;15263:18;;:::i;:::-;15247:36;15099:191;;;;:::o;15296:221::-;15436:34;15432:1;15424:6;15420:14;15413:58;15505:4;15500:2;15492:6;15488:15;15481:29;15296:221;:::o;15523:366::-;15665:3;15686:67;15750:2;15745:3;15686:67;:::i;:::-;15679:74;;15762:93;15851:3;15762:93;:::i;:::-;15880:2;15875:3;15871:12;15864:19;;15523:366;;;:::o;15895:419::-;16061:4;16099:2;16088:9;16084:18;16076:26;;16148:9;16142:4;16138:20;16134:1;16123:9;16119:17;16112:47;16176:131;16302:4;16176:131;:::i;:::-;16168:139;;15895:419;;;:::o;16320:225::-;16460:34;16456:1;16448:6;16444:14;16437:58;16529:8;16524:2;16516:6;16512:15;16505:33;16320:225;:::o;16551:366::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:419::-;17089:4;17127:2;17116:9;17112:18;17104:26;;17176:9;17170:4;17166:20;17162:1;17151:9;17147:17;17140:47;17204:131;17330:4;17204:131;:::i;:::-;17196:139;;16923:419;;;:::o;17348:223::-;17488:34;17484:1;17476:6;17472:14;17465:58;17557:6;17552:2;17544:6;17540:15;17533:31;17348:223;:::o;17577:366::-;17719:3;17740:67;17804:2;17799:3;17740:67;:::i;:::-;17733:74;;17816:93;17905:3;17816:93;:::i;:::-;17934:2;17929:3;17925:12;17918:19;;17577:366;;;:::o;17949:419::-;18115:4;18153:2;18142:9;18138:18;18130:26;;18202:9;18196:4;18192:20;18188:1;18177:9;18173:17;18166:47;18230:131;18356:4;18230:131;:::i;:::-;18222:139;;17949:419;;;:::o;18374:221::-;18514:34;18510:1;18502:6;18498:14;18491:58;18583:4;18578:2;18570:6;18566:15;18559:29;18374:221;:::o;18601:366::-;18743:3;18764:67;18828:2;18823:3;18764:67;:::i;:::-;18757:74;;18840:93;18929:3;18840:93;:::i;:::-;18958:2;18953:3;18949:12;18942:19;;18601:366;;;:::o;18973:419::-;19139:4;19177:2;19166:9;19162:18;19154:26;;19226:9;19220:4;19216:20;19212:1;19201:9;19197:17;19190:47;19254:131;19380:4;19254:131;:::i;:::-;19246:139;;18973:419;;;:::o;19398:224::-;19538:34;19534:1;19526:6;19522:14;19515:58;19607:7;19602:2;19594:6;19590:15;19583:32;19398:224;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:222::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:5;20629:2;20621:6;20617:15;20610:30;20425:222;:::o;20653:366::-;20795:3;20816:67;20880:2;20875:3;20816:67;:::i;:::-;20809:74;;20892:93;20981:3;20892:93;:::i;:::-;21010:2;21005:3;21001:12;20994:19;;20653:366;;;:::o;21025:419::-;21191:4;21229:2;21218:9;21214:18;21206:26;;21278:9;21272:4;21268:20;21264:1;21253:9;21249:17;21242:47;21306:131;21432:4;21306:131;:::i;:::-;21298:139;;21025:419;;;:::o;21450:228::-;21590:34;21586:1;21578:6;21574:14;21567:58;21659:11;21654:2;21646:6;21642:15;21635:36;21450:228;:::o;21684:366::-;21826:3;21847:67;21911:2;21906:3;21847:67;:::i;:::-;21840:74;;21923:93;22012:3;21923:93;:::i;:::-;22041:2;22036:3;22032:12;22025:19;;21684:366;;;:::o;22056:419::-;22222:4;22260:2;22249:9;22245:18;22237:26;;22309:9;22303:4;22299:20;22295:1;22284:9;22280:17;22273:47;22337:131;22463:4;22337:131;:::i;:::-;22329:139;;22056:419;;;:::o;22481:250::-;22621:34;22617:1;22609:6;22605:14;22598:58;22690:33;22685:2;22677:6;22673:15;22666:58;22481:250;:::o;22737:366::-;22879:3;22900:67;22964:2;22959:3;22900:67;:::i;:::-;22893:74;;22976:93;23065:3;22976:93;:::i;:::-;23094:2;23089:3;23085:12;23078:19;;22737:366;;;:::o;23109:419::-;23275:4;23313:2;23302:9;23298:18;23290:26;;23362:9;23356:4;23352:20;23348:1;23337:9;23333:17;23326:47;23390:131;23516:4;23390:131;:::i;:::-;23382:139;;23109:419;;;:::o;23534:178::-;23674:30;23670:1;23662:6;23658:14;23651:54;23534:178;:::o;23718:366::-;23860:3;23881:67;23945:2;23940:3;23881:67;:::i;:::-;23874:74;;23957:93;24046:3;23957:93;:::i;:::-;24075:2;24070:3;24066:12;24059:19;;23718:366;;;:::o;24090:419::-;24256:4;24294:2;24283:9;24279:18;24271:26;;24343:9;24337:4;24333:20;24329:1;24318:9;24314:17;24307:47;24371:131;24497:4;24371:131;:::i;:::-;24363:139;;24090:419;;;:::o;24515:222::-;24655:34;24651:1;24643:6;24639:14;24632:58;24724:5;24719:2;24711:6;24707:15;24700:30;24515:222;:::o;24743:366::-;24885:3;24906:67;24970:2;24965:3;24906:67;:::i;:::-;24899:74;;24982:93;25071:3;24982:93;:::i;:::-;25100:2;25095:3;25091:12;25084:19;;24743:366;;;:::o;25115:419::-;25281:4;25319:2;25308:9;25304:18;25296:26;;25368:9;25362:4;25358:20;25354:1;25343:9;25339:17;25332:47;25396:131;25522:4;25396:131;:::i;:::-;25388:139;;25115:419;;;:::o;25540:222::-;25680:34;25676:1;25668:6;25664:14;25657:58;25749:5;25744:2;25736:6;25732:15;25725:30;25540:222;:::o;25768:366::-;25910:3;25931:67;25995:2;25990:3;25931:67;:::i;:::-;25924:74;;26007:93;26096:3;26007:93;:::i;:::-;26125:2;26120:3;26116:12;26109:19;;25768:366;;;:::o;26140:419::-;26306:4;26344:2;26333:9;26329:18;26321:26;;26393:9;26387:4;26383:20;26379:1;26368:9;26364:17;26357:47;26421:131;26547:4;26421:131;:::i;:::-;26413:139;;26140:419;;;:::o;26565:194::-;26605:4;26625:20;26643:1;26625:20;:::i;:::-;26620:25;;26659:20;26677:1;26659:20;:::i;:::-;26654:25;;26703:1;26700;26696:9;26688:17;;26727:1;26721:4;26718:11;26715:37;;;26732:18;;:::i;:::-;26715:37;26565:194;;;;:::o;26765:229::-;26905:34;26901:1;26893:6;26889:14;26882:58;26974:12;26969:2;26961:6;26957:15;26950:37;26765:229;:::o;27000:366::-;27142:3;27163:67;27227:2;27222:3;27163:67;:::i;:::-;27156:74;;27239:93;27328:3;27239:93;:::i;:::-;27357:2;27352:3;27348:12;27341:19;;27000:366;;;:::o;27372:419::-;27538:4;27576:2;27565:9;27561:18;27553:26;;27625:9;27619:4;27615:20;27611:1;27600:9;27596:17;27589:47;27653:131;27779:4;27653:131;:::i;:::-;27645:139;;27372:419;;;:::o;27797:143::-;27854:5;27885:6;27879:13;27870:22;;27901:33;27928:5;27901:33;:::i;:::-;27797:143;;;;:::o;27946:351::-;28016:6;28065:2;28053:9;28044:7;28040:23;28036:32;28033:119;;;28071:79;;:::i;:::-;28033:119;28191:1;28216:64;28272:7;28263:6;28252:9;28248:22;28216:64;:::i;:::-;28206:74;;28162:128;27946:351;;;;:::o;28303:85::-;28348:7;28377:5;28366:16;;28303:85;;;:::o;28394:158::-;28452:9;28485:61;28503:42;28512:32;28538:5;28512:32;:::i;:::-;28503:42;:::i;:::-;28485:61;:::i;:::-;28472:74;;28394:158;;;:::o;28558:147::-;28653:45;28692:5;28653:45;:::i;:::-;28648:3;28641:58;28558:147;;:::o;28711:114::-;28778:6;28812:5;28806:12;28796:22;;28711:114;;;:::o;28831:184::-;28930:11;28964:6;28959:3;28952:19;29004:4;28999:3;28995:14;28980:29;;28831:184;;;;:::o;29021:132::-;29088:4;29111:3;29103:11;;29141:4;29136:3;29132:14;29124:22;;29021:132;;;:::o;29159:108::-;29236:24;29254:5;29236:24;:::i;:::-;29231:3;29224:37;29159:108;;:::o;29273:179::-;29342:10;29363:46;29405:3;29397:6;29363:46;:::i;:::-;29441:4;29436:3;29432:14;29418:28;;29273:179;;;;:::o;29458:113::-;29528:4;29560;29555:3;29551:14;29543:22;;29458:113;;;:::o;29607:732::-;29726:3;29755:54;29803:5;29755:54;:::i;:::-;29825:86;29904:6;29899:3;29825:86;:::i;:::-;29818:93;;29935:56;29985:5;29935:56;:::i;:::-;30014:7;30045:1;30030:284;30055:6;30052:1;30049:13;30030:284;;;30131:6;30125:13;30158:63;30217:3;30202:13;30158:63;:::i;:::-;30151:70;;30244:60;30297:6;30244:60;:::i;:::-;30234:70;;30090:224;30077:1;30074;30070:9;30065:14;;30030:284;;;30034:14;30330:3;30323:10;;29731:608;;;29607:732;;;;:::o;30345:831::-;30608:4;30646:3;30635:9;30631:19;30623:27;;30660:71;30728:1;30717:9;30713:17;30704:6;30660:71;:::i;:::-;30741:80;30817:2;30806:9;30802:18;30793:6;30741:80;:::i;:::-;30868:9;30862:4;30858:20;30853:2;30842:9;30838:18;30831:48;30896:108;30999:4;30990:6;30896:108;:::i;:::-;30888:116;;31014:72;31082:2;31071:9;31067:18;31058:6;31014:72;:::i;:::-;31096:73;31164:3;31153:9;31149:19;31140:6;31096:73;:::i;:::-;30345:831;;;;;;;;:::o;31182:177::-;31322:29;31318:1;31310:6;31306:14;31299:53;31182:177;:::o;31365:366::-;31507:3;31528:67;31592:2;31587:3;31528:67;:::i;:::-;31521:74;;31604:93;31693:3;31604:93;:::i;:::-;31722:2;31717:3;31713:12;31706:19;;31365:366;;;:::o;31737:419::-;31903:4;31941:2;31930:9;31926:18;31918:26;;31990:9;31984:4;31980:20;31976:1;31965:9;31961:17;31954:47;32018:131;32144:4;32018:131;:::i;:::-;32010:139;;31737:419;;;:::o;32162:220::-;32302:34;32298:1;32290:6;32286:14;32279:58;32371:3;32366:2;32358:6;32354:15;32347:28;32162:220;:::o;32388:366::-;32530:3;32551:67;32615:2;32610:3;32551:67;:::i;:::-;32544:74;;32627:93;32716:3;32627:93;:::i;:::-;32745:2;32740:3;32736:12;32729:19;;32388:366;;;:::o;32760:419::-;32926:4;32964:2;32953:9;32949:18;32941:26;;33013:9;33007:4;33003:20;32999:1;32988:9;32984:17;32977:47;33041:131;33167:4;33041:131;:::i;:::-;33033:139;;32760:419;;;:::o
Swarm Source
ipfs://4a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa
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.