ERC-20
MEME
Overview
Max Total Supply
1,000,000,000,000,000 WSD
Holders
72 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
100.345203864 WSDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
WallstreetDon
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-28 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.24; 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 ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } abstract contract Ownable is Context { address internal _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); } interface IUniswapV2Router02 is IUniswapV2Router01 { } contract WallstreetDon is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _isExcludedFromMaxWallet; mapping(address => bool) private _isExcludedFromMaxTnxLimit; address[] private _excluded; address constant private _burnAddress = 0x000000000000000000000000000000000000dEaD; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint256 private _decimals; uint256 private _totalFees; uint256 public maxTnxAmount; uint256 public maxWalletBalance; uint256 private _buyRefFee = 0; uint256 private _sellRefFee = 1; uint256 public refFee = _buyRefFee; uint256 private _previousRefFee = refFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; constructor() { _name = "WallstreetDon"; _symbol = "WSD"; _decimals = 9; _tTotal = 1000000000000000 * 10**_decimals; _rTotal = (MAX - (MAX % _tTotal)); maxTnxAmount = 1000000000000 * 10**_decimals; maxWalletBalance = 10000000000000 * 10**_decimals; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _isExcluded[_burnAddress] = true; _isExcluded[uniswapV2Pair] = true; _isExcludedFromMaxTnxLimit[owner()] = true; _isExcludedFromMaxTnxLimit[address(this)] = true; _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _owner = _msgSender(); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint256) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount, , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner { maxTnxAmount = maxTxPercent * 10**_decimals; } function setMaxWalletPercent(uint256 maxWalletPercent) external onlyOwner { maxWalletBalance = maxWalletPercent * 10 **_decimals; } function includeAndExcludedFromMaxWallet(address account, bool value) public onlyOwner { _isExcludedFromMaxWallet[account] = value; } function includeAndExcludedFromMaxTnxLimit(address account, bool value) public onlyOwner { _isExcludedFromMaxTnxLimit[account] = value; } function isExcludedFromMaxWallet(address account) public view returns(bool){ return _isExcludedFromMaxWallet[account]; } function isExcludedFromMaxTnxLimit(address account) public view returns(bool) { return _isExcludedFromMaxTnxLimit[account]; } function setSellFeePercent( uint256 sFee ) external onlyOwner { uint256 fees = sFee; require(fees <= 20, "ERC20: Maximum Sell fees allowed is 20%"); _sellRefFee = sFee; refFee = _sellRefFee; } function setBuyFeePercent( uint256 bFee ) external onlyOwner { uint256 fees = bFee; require(fees <= 20, "ERC20: Maximum buy fees allowed is 20%"); _buyRefFee = bFee; refFee = _buyRefFee; } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee); return (tTransferAmount, tFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); 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; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply ) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(refFee).div(10**2); } function removeAllFee() private { _previousRefFee = refFee; refFee = 0; } function restoreAllFee() private { refFee = _previousRefFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } 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()) require( _isExcludedFromMaxTnxLimit[from] || _isExcludedFromMaxTnxLimit[to] || amount <= maxTnxAmount, "ERC20: Transfer amount exceeds the maxTxAmount." ); if ( from != owner() && to != address(this) && to != _burnAddress && to != uniswapV2Pair ) { uint256 currentBalance = balanceOf(to); require(_isExcludedFromMaxWallet[to] || (currentBalance + amount <= maxWalletBalance), "ERC20: Reached max wallet holding"); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } else { if (from == uniswapV2Pair) { refFee = _buyRefFee; } else if (to == uniswapV2Pair) { refFee = _sellRefFee; } else { refFee = 0; } } _tokenTransfer(from, to, amount, takeFee); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _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 ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxTnxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTnxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTnxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f601355600160145560135460155560155460165534801562000025575f80fd5b50620000366200083360201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36040518060400160405280600d81526020017f57616c6c737472656574446f6e00000000000000000000000000000000000000815250600d908162000133919062000ac5565b506040518060400160405280600381526020017f5753440000000000000000000000000000000000000000000000000000000000815250600e90816200017a919062000ac5565b506009600f81905550600f54600a62000194919062000d26565b66038d7ea4c68000620001a8919062000d76565b600a81905550600a545f19620001bf919062000ded565b5f19620001cd919062000e24565b600b81905550600f54600a620001e4919062000d26565b64e8d4a51000620001f6919062000d76565b601181905550600f54600a6200020d919062000d26565b6509184e72a00062000220919062000d76565b601281905550600b5460025f6200023c6200083360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000301919062000ec3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038d919062000ec3565b6040518363ffffffff1660e01b8152600401620003ac92919062000f04565b6020604051808303815f875af1158015620003c9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ef919062000ec3565b60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004836200083360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f620006096200083a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f620006c26200083a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007766200083360201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620007c46200083360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000824919062000f40565b60405180910390a35062000f5b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008dd57607f821691505b602082108103620008f357620008f262000898565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091a565b6200096386836200091a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009ad620009a7620009a1846200097b565b62000984565b6200097b565b9050919050565b5f819050919050565b620009c8836200098d565b620009e0620009d782620009b4565b84845462000926565b825550505050565b5f90565b620009f6620009e8565b62000a03818484620009bd565b505050565b5b8181101562000a2a5762000a1e5f82620009ec565b60018101905062000a09565b5050565b601f82111562000a795762000a4381620008f9565b62000a4e846200090b565b8101602085101562000a5e578190505b62000a7662000a6d856200090b565b83018262000a08565b50505b505050565b5f82821c905092915050565b5f62000a9b5f198460080262000a7e565b1980831691505092915050565b5f62000ab5838362000a8a565b9150826002028217905092915050565b62000ad08262000861565b67ffffffffffffffff81111562000aec5762000aeb6200086b565b5b62000af88254620008c5565b62000b0582828562000a2e565b5f60209050601f83116001811462000b3b575f841562000b26578287015190505b62000b32858262000aa8565b86555062000ba1565b601f19841662000b4b86620008f9565b5f5b8281101562000b745784890151825560018201915060208501945060208101905062000b4d565b8683101562000b94578489015162000b90601f89168262000a8a565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c335780860481111562000c0b5762000c0a62000ba9565b5b600185161562000c1b5780820291505b808102905062000c2b8562000bd6565b945062000beb565b94509492505050565b5f8262000c4d576001905062000d1f565b8162000c5c575f905062000d1f565b816001811462000c75576002811462000c805762000cb6565b600191505062000d1f565b60ff84111562000c955762000c9462000ba9565b5b8360020a91508482111562000caf5762000cae62000ba9565b5b5062000d1f565b5060208310610133831016604e8410600b841016171562000cf05782820a90508381111562000cea5762000ce962000ba9565b5b62000d1f565b62000cff848484600162000be2565b9250905081840481111562000d195762000d1862000ba9565b5b81810290505b9392505050565b5f62000d32826200097b565b915062000d3f836200097b565b925062000d6e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c3c565b905092915050565b5f62000d82826200097b565b915062000d8f836200097b565b925082820262000d9f816200097b565b9150828204841483151762000db95762000db862000ba9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000df9826200097b565b915062000e06836200097b565b92508262000e195762000e1862000dc0565b5b828206905092915050565b5f62000e30826200097b565b915062000e3d836200097b565b925082820390508181111562000e585762000e5762000ba9565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e8d8262000e62565b9050919050565b62000e9f8162000e81565b811462000eaa575f80fd5b50565b5f8151905062000ebd8162000e94565b92915050565b5f6020828403121562000edb5762000eda62000e5e565b5b5f62000eea8482850162000ead565b91505092915050565b62000efe8162000e81565b82525050565b5f60408201905062000f195f83018562000ef3565b62000f28602083018462000ef3565b9392505050565b62000f3a816200097b565b82525050565b5f60208201905062000f555f83018462000f2f565b92915050565b61497f8062000f695f395ff3fe60806040526004361061021d575f3560e01c806355874a79116101225780639904a1c3116100aa578063d543dbeb1161006e578063d543dbeb1461081a578063dd62ed3e14610842578063ea2f0b371461087e578063ec2e0ab3146108a6578063f2fde38b146108d057610224565b80639904a1c314610728578063a2b8a94714610750578063a457c2d714610778578063a9059cbb146107b4578063bbde77c1146107f057610224565b806382bf293c116100f157806382bf293c1461064857806388f82020146106705780638da5cb5b146106ac578063950eb5d5146106d657806395d89b41146106fe57610224565b806355874a791461057e5780636dd3d39f146105ba57806370a08231146105f6578063715018a61461063257610224565b80633685d419116101a55780634549b039116101745780634549b0391461048c57806348eb61b6146104c857806349bd5a5e146104f057806352390c021461051a5780635342acb41461054257610224565b80633685d419146103d857806339509351146104005780633bd5d1731461043c578063437823ec1461046457610224565b80631694505e116101ec5780631694505e146102e257806318160ddd1461030c57806323b872dd146103365780632d83811914610372578063313ce567146103ae57610224565b806306fdde0314610228578063095ea7b314610252578063130d6ce01461028e57806313114a9d146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108f8565b60405161024991906139e3565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190613a94565b610988565b6040516102859190613aec565b60405180910390f35b348015610299575f80fd5b506102a26109a5565b6040516102af9190613b14565b60405180910390f35b3480156102c3575f80fd5b506102cc6109ab565b6040516102d99190613b14565b60405180910390f35b3480156102ed575f80fd5b506102f66109b4565b6040516103039190613b88565b60405180910390f35b348015610317575f80fd5b506103206109d9565b60405161032d9190613b14565b60405180910390f35b348015610341575f80fd5b5061035c60048036038101906103579190613ba1565b6109e2565b6040516103699190613aec565b60405180910390f35b34801561037d575f80fd5b5061039860048036038101906103939190613bf1565b610ab6565b6040516103a59190613b14565b60405180910390f35b3480156103b9575f80fd5b506103c2610b22565b6040516103cf9190613b14565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190613c1c565b610b2b565b005b34801561040b575f80fd5b5061042660048036038101906104219190613a94565b610e43565b6040516104339190613aec565b60405180910390f35b348015610447575f80fd5b50610462600480360381019061045d9190613bf1565b610ef1565b005b34801561046f575f80fd5b5061048a60048036038101906104859190613c1c565b611062565b005b348015610497575f80fd5b506104b260048036038101906104ad9190613c71565b611136565b6040516104bf9190613b14565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190613caf565b6111b5565b005b3480156104fb575f80fd5b50610504611289565b6040516105119190613cfc565b60405180910390f35b348015610525575f80fd5b50610540600480360381019061053b9190613c1c565b6112ae565b005b34801561054d575f80fd5b5061056860048036038101906105639190613c1c565b611539565b6040516105759190613aec565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190613c1c565b61158b565b6040516105b19190613aec565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db9190613c1c565b6115dd565b6040516105ed9190613aec565b60405180910390f35b348015610601575f80fd5b5061061c60048036038101906106179190613c1c565b61162f565b6040516106299190613b14565b60405180910390f35b34801561063d575f80fd5b50610646611712565b005b348015610653575f80fd5b5061066e60048036038101906106699190613bf1565b611848565b005b34801561067b575f80fd5b5061069660048036038101906106919190613c1c565b6118e7565b6040516106a39190613aec565b60405180910390f35b3480156106b7575f80fd5b506106c0611939565b6040516106cd9190613cfc565b60405180910390f35b3480156106e1575f80fd5b506106fc60048036038101906106f79190613bf1565b611960565b005b348015610709575f80fd5b50610712611a38565b60405161071f91906139e3565b60405180910390f35b348015610733575f80fd5b5061074e60048036038101906107499190613caf565b611ac8565b005b34801561075b575f80fd5b5061077660048036038101906107719190613bf1565b611b9c565b005b348015610783575f80fd5b5061079e60048036038101906107999190613a94565b611c74565b6040516107ab9190613aec565b60405180910390f35b3480156107bf575f80fd5b506107da60048036038101906107d59190613a94565b611d3c565b6040516107e79190613aec565b60405180910390f35b3480156107fb575f80fd5b50610804611d59565b6040516108119190613b14565b60405180910390f35b348015610825575f80fd5b50610840600480360381019061083b9190613bf1565b611d5f565b005b34801561084d575f80fd5b5061086860048036038101906108639190613d15565b611dfe565b6040516108759190613b14565b60405180910390f35b348015610889575f80fd5b506108a4600480360381019061089f9190613c1c565b611e80565b005b3480156108b1575f80fd5b506108ba611f53565b6040516108c79190613b14565b60405180910390f35b3480156108db575f80fd5b506108f660048036038101906108f19190613c1c565b611f59565b005b6060600d805461090790613d80565b80601f016020809104026020016040519081016040528092919081815260200182805461093390613d80565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b5050505050905090565b5f61099b6109946120fe565b8484612105565b6001905092915050565b60115481565b5f600c54905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600a54905090565b5f6109ee8484846122c8565b610aab846109fa6120fe565b610aa6856040518060600160405280602881526020016148fd6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a5d6120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288c9092919063ffffffff16565b612105565b600190509392505050565b5f600b54821115610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af390613e20565b60405180910390fd5b5f610b056128e0565b9050610b1a818461290990919063ffffffff16565b915050919050565b5f600f54905090565b610b336120fe565b73ffffffffffffffffffffffffffffffffffffffff16610b51611939565b73ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613e88565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790613ef0565b60405180910390fd5b5f5b600980549050811015610e3f578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610c6a57610c69613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e325760096001600980549050610cc19190613f68565b81548110610cd257610cd1613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110610d0e57610d0d613f0e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506009805480610dfb57610dfa613f9b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e3f565b8080600101915050610c32565b5050565b5f610ee7610e4f6120fe565b84610ee28560045f610e5f6120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b612105565b6001905092915050565b5f610efa6120fe565b905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90614038565b60405180910390fd5b5f610f9083612933565b505050509050610fe68160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061103c81600b5461297f90919063ffffffff16565b600b8190555061105783600c5461291e90919063ffffffff16565b600c81905550505050565b61106a6120fe565b73ffffffffffffffffffffffffffffffffffffffff16611088611939565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613e88565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600a5483111561117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906140a0565b60405180910390fd5b8161119a575f61118b84612933565b505050509050809150506111af565b5f6111a484612933565b505050915050809150505b92915050565b6111bd6120fe565b73ffffffffffffffffffffffffffffffffffffffff166111db611939565b73ffffffffffffffffffffffffffffffffffffffff1614611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890613e88565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b66120fe565b73ffffffffffffffffffffffffffffffffffffffff166112d4611939565b73ffffffffffffffffffffffffffffffffffffffff161461132a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132190613e88565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90614108565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114815761143f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ab6565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600981908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156116c45760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061170d565b61170a60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ab6565b90505b919050565b61171a6120fe565b73ffffffffffffffffffffffffffffffffffffffff16611738611939565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613e88565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118506120fe565b73ffffffffffffffffffffffffffffffffffffffff1661186e611939565b73ffffffffffffffffffffffffffffffffffffffff16146118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613e88565b60405180910390fd5b600f54600a6118d39190614255565b816118de919061429f565b60128190555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119686120fe565b73ffffffffffffffffffffffffffffffffffffffff16611986611939565b73ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613e88565b60405180910390fd5b5f8190506014811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614350565b60405180910390fd5b816013819055506013546015819055505050565b6060600e8054611a4790613d80565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390613d80565b8015611abe5780601f10611a9557610100808354040283529160200191611abe565b820191905f5260205f20905b815481529060010190602001808311611aa157829003601f168201915b5050505050905090565b611ad06120fe565b73ffffffffffffffffffffffffffffffffffffffff16611aee611939565b73ffffffffffffffffffffffffffffffffffffffff1614611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613e88565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611ba46120fe565b73ffffffffffffffffffffffffffffffffffffffff16611bc2611939565b73ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90613e88565b60405180910390fd5b5f8190506014811115611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c57906143de565b60405180910390fd5b816014819055506014546015819055505050565b5f611d32611c806120fe565b84611d2d856040518060600160405280602581526020016149256025913960045f611ca96120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288c9092919063ffffffff16565b612105565b6001905092915050565b5f611d4f611d486120fe565b84846122c8565b6001905092915050565b60125481565b611d676120fe565b73ffffffffffffffffffffffffffffffffffffffff16611d85611939565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613e88565b60405180910390fd5b600f54600a611dea9190614255565b81611df5919061429f565b60118190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611e886120fe565b73ffffffffffffffffffffffffffffffffffffffff16611ea6611939565b73ffffffffffffffffffffffffffffffffffffffff1614611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613e88565b60405180910390fd5b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60155481565b611f616120fe565b73ffffffffffffffffffffffffffffffffffffffff16611f7f611939565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc90613e88565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a9061446c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a906144fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890614588565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122bb9190613b14565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90614616565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239b906146a4565b60405180910390fd5b5f81116123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90614732565b60405180910390fd5b6123ee611939565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561245c575061242c611939565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125495760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124fc575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061250957506011548111155b612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f906147c0565b60405180910390fd5b5b612551611939565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125b857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561264b575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126ff575f61265a8361162f565b905060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126be575060125482826126bb91906147de565b11155b6126fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f490614881565b60405180910390fd5b505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061279f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156127ac575f905061287a565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361280e57601354601581905550612879565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601454601581905550612878565b5f6015819055505b5b5b61288684848484612994565b50505050565b5f8383111582906128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca91906139e3565b60405180910390fd5b5082840390509392505050565b5f805f6128eb612c8d565b91509150612902818361290990919063ffffffff16565b9250505090565b5f818361291691906148cc565b905092915050565b5f818361292b91906147de565b905092915050565b5f805f805f805f61294388612f22565b915091505f805f61295c8b856129576128e0565b612f53565b925092509250828282878799509950995099509950505050505091939590929450565b5f818361298c9190613f68565b905092915050565b806129a2576129a1612fad565b5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a3f575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a5457612a4f848484612fbf565b612c79565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612af1575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b0657612b01848484613203565b612c78565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612ba4575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612bb957612bb4848484613447565b612c77565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c55575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c6a57612c658484846135fa565b612c76565b612c75848484613447565b5b5b5b5b80612c8757612c866138cf565b5b50505050565b5f805f600b5490505f600a5490505f5b600980549050811015612ee5578260025f60098481548110612cc257612cc1613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180612da757508160035f60098481548110612d4357612d42613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612dbe57600b54600a5494509450505050612f1e565b612e4960025f60098481548110612dd857612dd7613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548461297f90919063ffffffff16565b9250612ed660035f60098481548110612e6557612e64613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548361297f90919063ffffffff16565b91508080600101915050612c9d565b50612efd600a54600b5461290990919063ffffffff16565b821015612f1557600b54600a54935093505050612f1e565b81819350935050505b9091565b5f805f612f2e846138da565b90505f612f44828661297f90919063ffffffff16565b90508082935093505050915091565b5f805f80612f6a858861390a90919063ffffffff16565b90505f612f80868861390a90919063ffffffff16565b90505f612f96828461297f90919063ffffffff16565b905082818395509550955050505093509350939050565b6015546016819055505f601581905550565b5f805f805f612fcd86612933565b945094509450945094506130278660035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506130b88560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506131498460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613194838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131f19190613b14565b60405180910390a35050505050505050565b5f805f805f61321186612933565b9450945094509450945061326b8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132fc8260035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061338d8460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506133d8838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134359190613b14565b60405180910390a35050505050505050565b5f805f805f61345586612933565b945094509450945094506134af8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506135408460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061358b838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135e89190613b14565b60405180910390a35050505050505050565b5f805f805f61360886612933565b945094509450945094506136628660035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506136f38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137848260035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138158460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613860838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138bd9190613b14565b60405180910390a35050505050505050565b601654601581905550565b5f61390360646138f56015548561390a90919063ffffffff16565b61290990919063ffffffff16565b9050919050565b5f8183613917919061429f565b905092915050565b61393482600b5461297f90919063ffffffff16565b600b8190555061394f81600c5461291e90919063ffffffff16565b600c819055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613990578082015181840152602081019050613975565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6139b582613959565b6139bf8185613963565b93506139cf818560208601613973565b6139d88161399b565b840191505092915050565b5f6020820190508181035f8301526139fb81846139ab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3082613a07565b9050919050565b613a4081613a26565b8114613a4a575f80fd5b50565b5f81359050613a5b81613a37565b92915050565b5f819050919050565b613a7381613a61565b8114613a7d575f80fd5b50565b5f81359050613a8e81613a6a565b92915050565b5f8060408385031215613aaa57613aa9613a03565b5b5f613ab785828601613a4d565b9250506020613ac885828601613a80565b9150509250929050565b5f8115159050919050565b613ae681613ad2565b82525050565b5f602082019050613aff5f830184613add565b92915050565b613b0e81613a61565b82525050565b5f602082019050613b275f830184613b05565b92915050565b5f819050919050565b5f613b50613b4b613b4684613a07565b613b2d565b613a07565b9050919050565b5f613b6182613b36565b9050919050565b5f613b7282613b57565b9050919050565b613b8281613b68565b82525050565b5f602082019050613b9b5f830184613b79565b92915050565b5f805f60608486031215613bb857613bb7613a03565b5b5f613bc586828701613a4d565b9350506020613bd686828701613a4d565b9250506040613be786828701613a80565b9150509250925092565b5f60208284031215613c0657613c05613a03565b5b5f613c1384828501613a80565b91505092915050565b5f60208284031215613c3157613c30613a03565b5b5f613c3e84828501613a4d565b91505092915050565b613c5081613ad2565b8114613c5a575f80fd5b50565b5f81359050613c6b81613c47565b92915050565b5f8060408385031215613c8757613c86613a03565b5b5f613c9485828601613a80565b9250506020613ca585828601613c5d565b9150509250929050565b5f8060408385031215613cc557613cc4613a03565b5b5f613cd285828601613a4d565b9250506020613ce385828601613c5d565b9150509250929050565b613cf681613a26565b82525050565b5f602082019050613d0f5f830184613ced565b92915050565b5f8060408385031215613d2b57613d2a613a03565b5b5f613d3885828601613a4d565b9250506020613d4985828601613a4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d9757607f821691505b602082108103613daa57613da9613d53565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613e0a602a83613963565b9150613e1582613db0565b604082019050919050565b5f6020820190508181035f830152613e3781613dfe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613e72602083613963565b9150613e7d82613e3e565b602082019050919050565b5f6020820190508181035f830152613e9f81613e66565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f613eda601b83613963565b9150613ee582613ea6565b602082019050919050565b5f6020820190508181035f830152613f0781613ece565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f7282613a61565b9150613f7d83613a61565b9250828203905081811115613f9557613f94613f3b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c20745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f614022602c83613963565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f61408a601f83613963565b915061409582614056565b602082019050919050565b5f6020820190508181035f8301526140b78161407e565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f6140f2601b83613963565b91506140fd826140be565b602082019050919050565b5f6020820190508181035f83015261411f816140e6565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561417b5780860481111561415757614156613f3b565b5b60018516156141665780820291505b808102905061417485614126565b945061413b565b94509492505050565b5f82614193576001905061424e565b816141a0575f905061424e565b81600181146141b657600281146141c0576141ef565b600191505061424e565b60ff8411156141d2576141d1613f3b565b5b8360020a9150848211156141e9576141e8613f3b565b5b5061424e565b5060208310610133831016604e8410600b84101617156142245782820a90508381111561421f5761421e613f3b565b5b61424e565b6142318484846001614132565b9250905081840481111561424857614247613f3b565b5b81810290505b9392505050565b5f61425f82613a61565b915061426a83613a61565b92506142977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614184565b905092915050565b5f6142a982613a61565b91506142b483613a61565b92508282026142c281613a61565b915082820484148315176142d9576142d8613f3b565b5b5092915050565b7f45524332303a204d6178696d756d20627579206665657320616c6c6f776564205f8201527f6973203230250000000000000000000000000000000000000000000000000000602082015250565b5f61433a602683613963565b9150614345826142e0565b604082019050919050565b5f6020820190508181035f8301526143678161432e565b9050919050565b7f45524332303a204d6178696d756d2053656c6c206665657320616c6c6f7765645f8201527f2069732032302500000000000000000000000000000000000000000000000000602082015250565b5f6143c8602783613963565b91506143d38261436e565b604082019050919050565b5f6020820190508181035f8301526143f5816143bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614456602683613963565b9150614461826143fc565b604082019050919050565b5f6020820190508181035f8301526144838161444a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6144e4602483613963565b91506144ef8261448a565b604082019050919050565b5f6020820190508181035f830152614511816144d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614572602283613963565b915061457d82614518565b604082019050919050565b5f6020820190508181035f83015261459f81614566565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614600602583613963565b915061460b826145a6565b604082019050919050565b5f6020820190508181035f83015261462d816145f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61468e602383613963565b915061469982614634565b604082019050919050565b5f6020820190508181035f8301526146bb81614682565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61471c602983613963565b9150614727826146c2565b604082019050919050565b5f6020820190508181035f83015261474981614710565b9050919050565b7f45524332303a205472616e7366657220616d6f756e74206578636565647320745f8201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b5f6147aa602f83613963565b91506147b582614750565b604082019050919050565b5f6020820190508181035f8301526147d78161479e565b9050919050565b5f6147e882613a61565b91506147f383613a61565b925082820190508082111561480b5761480a613f3b565b5b92915050565b7f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e5f8201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61486b602183613963565b915061487682614811565b604082019050919050565b5f6020820190508181035f8301526148988161485f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148d682613a61565b91506148e183613a61565b9250826148f1576148f061489f565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220952ff075a4592348f956884f368f461aef3e4f504bf6c60c172425e21a9b686264736f6c63430008180033
Deployed Bytecode
0x60806040526004361061021d575f3560e01c806355874a79116101225780639904a1c3116100aa578063d543dbeb1161006e578063d543dbeb1461081a578063dd62ed3e14610842578063ea2f0b371461087e578063ec2e0ab3146108a6578063f2fde38b146108d057610224565b80639904a1c314610728578063a2b8a94714610750578063a457c2d714610778578063a9059cbb146107b4578063bbde77c1146107f057610224565b806382bf293c116100f157806382bf293c1461064857806388f82020146106705780638da5cb5b146106ac578063950eb5d5146106d657806395d89b41146106fe57610224565b806355874a791461057e5780636dd3d39f146105ba57806370a08231146105f6578063715018a61461063257610224565b80633685d419116101a55780634549b039116101745780634549b0391461048c57806348eb61b6146104c857806349bd5a5e146104f057806352390c021461051a5780635342acb41461054257610224565b80633685d419146103d857806339509351146104005780633bd5d1731461043c578063437823ec1461046457610224565b80631694505e116101ec5780631694505e146102e257806318160ddd1461030c57806323b872dd146103365780632d83811914610372578063313ce567146103ae57610224565b806306fdde0314610228578063095ea7b314610252578063130d6ce01461028e57806313114a9d146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108f8565b60405161024991906139e3565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190613a94565b610988565b6040516102859190613aec565b60405180910390f35b348015610299575f80fd5b506102a26109a5565b6040516102af9190613b14565b60405180910390f35b3480156102c3575f80fd5b506102cc6109ab565b6040516102d99190613b14565b60405180910390f35b3480156102ed575f80fd5b506102f66109b4565b6040516103039190613b88565b60405180910390f35b348015610317575f80fd5b506103206109d9565b60405161032d9190613b14565b60405180910390f35b348015610341575f80fd5b5061035c60048036038101906103579190613ba1565b6109e2565b6040516103699190613aec565b60405180910390f35b34801561037d575f80fd5b5061039860048036038101906103939190613bf1565b610ab6565b6040516103a59190613b14565b60405180910390f35b3480156103b9575f80fd5b506103c2610b22565b6040516103cf9190613b14565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190613c1c565b610b2b565b005b34801561040b575f80fd5b5061042660048036038101906104219190613a94565b610e43565b6040516104339190613aec565b60405180910390f35b348015610447575f80fd5b50610462600480360381019061045d9190613bf1565b610ef1565b005b34801561046f575f80fd5b5061048a60048036038101906104859190613c1c565b611062565b005b348015610497575f80fd5b506104b260048036038101906104ad9190613c71565b611136565b6040516104bf9190613b14565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190613caf565b6111b5565b005b3480156104fb575f80fd5b50610504611289565b6040516105119190613cfc565b60405180910390f35b348015610525575f80fd5b50610540600480360381019061053b9190613c1c565b6112ae565b005b34801561054d575f80fd5b5061056860048036038101906105639190613c1c565b611539565b6040516105759190613aec565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190613c1c565b61158b565b6040516105b19190613aec565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db9190613c1c565b6115dd565b6040516105ed9190613aec565b60405180910390f35b348015610601575f80fd5b5061061c60048036038101906106179190613c1c565b61162f565b6040516106299190613b14565b60405180910390f35b34801561063d575f80fd5b50610646611712565b005b348015610653575f80fd5b5061066e60048036038101906106699190613bf1565b611848565b005b34801561067b575f80fd5b5061069660048036038101906106919190613c1c565b6118e7565b6040516106a39190613aec565b60405180910390f35b3480156106b7575f80fd5b506106c0611939565b6040516106cd9190613cfc565b60405180910390f35b3480156106e1575f80fd5b506106fc60048036038101906106f79190613bf1565b611960565b005b348015610709575f80fd5b50610712611a38565b60405161071f91906139e3565b60405180910390f35b348015610733575f80fd5b5061074e60048036038101906107499190613caf565b611ac8565b005b34801561075b575f80fd5b5061077660048036038101906107719190613bf1565b611b9c565b005b348015610783575f80fd5b5061079e60048036038101906107999190613a94565b611c74565b6040516107ab9190613aec565b60405180910390f35b3480156107bf575f80fd5b506107da60048036038101906107d59190613a94565b611d3c565b6040516107e79190613aec565b60405180910390f35b3480156107fb575f80fd5b50610804611d59565b6040516108119190613b14565b60405180910390f35b348015610825575f80fd5b50610840600480360381019061083b9190613bf1565b611d5f565b005b34801561084d575f80fd5b5061086860048036038101906108639190613d15565b611dfe565b6040516108759190613b14565b60405180910390f35b348015610889575f80fd5b506108a4600480360381019061089f9190613c1c565b611e80565b005b3480156108b1575f80fd5b506108ba611f53565b6040516108c79190613b14565b60405180910390f35b3480156108db575f80fd5b506108f660048036038101906108f19190613c1c565b611f59565b005b6060600d805461090790613d80565b80601f016020809104026020016040519081016040528092919081815260200182805461093390613d80565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b5050505050905090565b5f61099b6109946120fe565b8484612105565b6001905092915050565b60115481565b5f600c54905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600a54905090565b5f6109ee8484846122c8565b610aab846109fa6120fe565b610aa6856040518060600160405280602881526020016148fd6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a5d6120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288c9092919063ffffffff16565b612105565b600190509392505050565b5f600b54821115610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af390613e20565b60405180910390fd5b5f610b056128e0565b9050610b1a818461290990919063ffffffff16565b915050919050565b5f600f54905090565b610b336120fe565b73ffffffffffffffffffffffffffffffffffffffff16610b51611939565b73ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613e88565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790613ef0565b60405180910390fd5b5f5b600980549050811015610e3f578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610c6a57610c69613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e325760096001600980549050610cc19190613f68565b81548110610cd257610cd1613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110610d0e57610d0d613f0e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506009805480610dfb57610dfa613f9b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e3f565b8080600101915050610c32565b5050565b5f610ee7610e4f6120fe565b84610ee28560045f610e5f6120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b612105565b6001905092915050565b5f610efa6120fe565b905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90614038565b60405180910390fd5b5f610f9083612933565b505050509050610fe68160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061103c81600b5461297f90919063ffffffff16565b600b8190555061105783600c5461291e90919063ffffffff16565b600c81905550505050565b61106a6120fe565b73ffffffffffffffffffffffffffffffffffffffff16611088611939565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613e88565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600a5483111561117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906140a0565b60405180910390fd5b8161119a575f61118b84612933565b505050509050809150506111af565b5f6111a484612933565b505050915050809150505b92915050565b6111bd6120fe565b73ffffffffffffffffffffffffffffffffffffffff166111db611939565b73ffffffffffffffffffffffffffffffffffffffff1614611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890613e88565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b66120fe565b73ffffffffffffffffffffffffffffffffffffffff166112d4611939565b73ffffffffffffffffffffffffffffffffffffffff161461132a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132190613e88565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90614108565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114815761143f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ab6565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600981908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156116c45760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061170d565b61170a60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ab6565b90505b919050565b61171a6120fe565b73ffffffffffffffffffffffffffffffffffffffff16611738611939565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613e88565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118506120fe565b73ffffffffffffffffffffffffffffffffffffffff1661186e611939565b73ffffffffffffffffffffffffffffffffffffffff16146118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613e88565b60405180910390fd5b600f54600a6118d39190614255565b816118de919061429f565b60128190555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119686120fe565b73ffffffffffffffffffffffffffffffffffffffff16611986611939565b73ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613e88565b60405180910390fd5b5f8190506014811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614350565b60405180910390fd5b816013819055506013546015819055505050565b6060600e8054611a4790613d80565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390613d80565b8015611abe5780601f10611a9557610100808354040283529160200191611abe565b820191905f5260205f20905b815481529060010190602001808311611aa157829003601f168201915b5050505050905090565b611ad06120fe565b73ffffffffffffffffffffffffffffffffffffffff16611aee611939565b73ffffffffffffffffffffffffffffffffffffffff1614611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613e88565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611ba46120fe565b73ffffffffffffffffffffffffffffffffffffffff16611bc2611939565b73ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90613e88565b60405180910390fd5b5f8190506014811115611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c57906143de565b60405180910390fd5b816014819055506014546015819055505050565b5f611d32611c806120fe565b84611d2d856040518060600160405280602581526020016149256025913960045f611ca96120fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288c9092919063ffffffff16565b612105565b6001905092915050565b5f611d4f611d486120fe565b84846122c8565b6001905092915050565b60125481565b611d676120fe565b73ffffffffffffffffffffffffffffffffffffffff16611d85611939565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613e88565b60405180910390fd5b600f54600a611dea9190614255565b81611df5919061429f565b60118190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611e886120fe565b73ffffffffffffffffffffffffffffffffffffffff16611ea6611939565b73ffffffffffffffffffffffffffffffffffffffff1614611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613e88565b60405180910390fd5b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60155481565b611f616120fe565b73ffffffffffffffffffffffffffffffffffffffff16611f7f611939565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc90613e88565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a9061446c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a906144fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890614588565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122bb9190613b14565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90614616565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239b906146a4565b60405180910390fd5b5f81116123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90614732565b60405180910390fd5b6123ee611939565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561245c575061242c611939565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125495760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124fc575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061250957506011548111155b612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f906147c0565b60405180910390fd5b5b612551611939565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125b857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561264b575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126ff575f61265a8361162f565b905060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126be575060125482826126bb91906147de565b11155b6126fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f490614881565b60405180910390fd5b505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061279f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156127ac575f905061287a565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361280e57601354601581905550612879565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601454601581905550612878565b5f6015819055505b5b5b61288684848484612994565b50505050565b5f8383111582906128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca91906139e3565b60405180910390fd5b5082840390509392505050565b5f805f6128eb612c8d565b91509150612902818361290990919063ffffffff16565b9250505090565b5f818361291691906148cc565b905092915050565b5f818361292b91906147de565b905092915050565b5f805f805f805f61294388612f22565b915091505f805f61295c8b856129576128e0565b612f53565b925092509250828282878799509950995099509950505050505091939590929450565b5f818361298c9190613f68565b905092915050565b806129a2576129a1612fad565b5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a3f575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a5457612a4f848484612fbf565b612c79565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612af1575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b0657612b01848484613203565b612c78565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612ba4575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612bb957612bb4848484613447565b612c77565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c55575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c6a57612c658484846135fa565b612c76565b612c75848484613447565b5b5b5b5b80612c8757612c866138cf565b5b50505050565b5f805f600b5490505f600a5490505f5b600980549050811015612ee5578260025f60098481548110612cc257612cc1613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180612da757508160035f60098481548110612d4357612d42613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612dbe57600b54600a5494509450505050612f1e565b612e4960025f60098481548110612dd857612dd7613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548461297f90919063ffffffff16565b9250612ed660035f60098481548110612e6557612e64613f0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548361297f90919063ffffffff16565b91508080600101915050612c9d565b50612efd600a54600b5461290990919063ffffffff16565b821015612f1557600b54600a54935093505050612f1e565b81819350935050505b9091565b5f805f612f2e846138da565b90505f612f44828661297f90919063ffffffff16565b90508082935093505050915091565b5f805f80612f6a858861390a90919063ffffffff16565b90505f612f80868861390a90919063ffffffff16565b90505f612f96828461297f90919063ffffffff16565b905082818395509550955050505093509350939050565b6015546016819055505f601581905550565b5f805f805f612fcd86612933565b945094509450945094506130278660035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506130b88560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506131498460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613194838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131f19190613b14565b60405180910390a35050505050505050565b5f805f805f61321186612933565b9450945094509450945061326b8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132fc8260035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061338d8460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506133d8838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134359190613b14565b60405180910390a35050505050505050565b5f805f805f61345586612933565b945094509450945094506134af8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506135408460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061358b838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135e89190613b14565b60405180910390a35050505050505050565b5f805f805f61360886612933565b945094509450945094506136628660035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506136f38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137848260035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138158460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613860838261391f565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138bd9190613b14565b60405180910390a35050505050505050565b601654601581905550565b5f61390360646138f56015548561390a90919063ffffffff16565b61290990919063ffffffff16565b9050919050565b5f8183613917919061429f565b905092915050565b61393482600b5461297f90919063ffffffff16565b600b8190555061394f81600c5461291e90919063ffffffff16565b600c819055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613990578082015181840152602081019050613975565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6139b582613959565b6139bf8185613963565b93506139cf818560208601613973565b6139d88161399b565b840191505092915050565b5f6020820190508181035f8301526139fb81846139ab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3082613a07565b9050919050565b613a4081613a26565b8114613a4a575f80fd5b50565b5f81359050613a5b81613a37565b92915050565b5f819050919050565b613a7381613a61565b8114613a7d575f80fd5b50565b5f81359050613a8e81613a6a565b92915050565b5f8060408385031215613aaa57613aa9613a03565b5b5f613ab785828601613a4d565b9250506020613ac885828601613a80565b9150509250929050565b5f8115159050919050565b613ae681613ad2565b82525050565b5f602082019050613aff5f830184613add565b92915050565b613b0e81613a61565b82525050565b5f602082019050613b275f830184613b05565b92915050565b5f819050919050565b5f613b50613b4b613b4684613a07565b613b2d565b613a07565b9050919050565b5f613b6182613b36565b9050919050565b5f613b7282613b57565b9050919050565b613b8281613b68565b82525050565b5f602082019050613b9b5f830184613b79565b92915050565b5f805f60608486031215613bb857613bb7613a03565b5b5f613bc586828701613a4d565b9350506020613bd686828701613a4d565b9250506040613be786828701613a80565b9150509250925092565b5f60208284031215613c0657613c05613a03565b5b5f613c1384828501613a80565b91505092915050565b5f60208284031215613c3157613c30613a03565b5b5f613c3e84828501613a4d565b91505092915050565b613c5081613ad2565b8114613c5a575f80fd5b50565b5f81359050613c6b81613c47565b92915050565b5f8060408385031215613c8757613c86613a03565b5b5f613c9485828601613a80565b9250506020613ca585828601613c5d565b9150509250929050565b5f8060408385031215613cc557613cc4613a03565b5b5f613cd285828601613a4d565b9250506020613ce385828601613c5d565b9150509250929050565b613cf681613a26565b82525050565b5f602082019050613d0f5f830184613ced565b92915050565b5f8060408385031215613d2b57613d2a613a03565b5b5f613d3885828601613a4d565b9250506020613d4985828601613a4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d9757607f821691505b602082108103613daa57613da9613d53565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613e0a602a83613963565b9150613e1582613db0565b604082019050919050565b5f6020820190508181035f830152613e3781613dfe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613e72602083613963565b9150613e7d82613e3e565b602082019050919050565b5f6020820190508181035f830152613e9f81613e66565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f613eda601b83613963565b9150613ee582613ea6565b602082019050919050565b5f6020820190508181035f830152613f0781613ece565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f7282613a61565b9150613f7d83613a61565b9250828203905081811115613f9557613f94613f3b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c20745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f614022602c83613963565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f61408a601f83613963565b915061409582614056565b602082019050919050565b5f6020820190508181035f8301526140b78161407e565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f6140f2601b83613963565b91506140fd826140be565b602082019050919050565b5f6020820190508181035f83015261411f816140e6565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561417b5780860481111561415757614156613f3b565b5b60018516156141665780820291505b808102905061417485614126565b945061413b565b94509492505050565b5f82614193576001905061424e565b816141a0575f905061424e565b81600181146141b657600281146141c0576141ef565b600191505061424e565b60ff8411156141d2576141d1613f3b565b5b8360020a9150848211156141e9576141e8613f3b565b5b5061424e565b5060208310610133831016604e8410600b84101617156142245782820a90508381111561421f5761421e613f3b565b5b61424e565b6142318484846001614132565b9250905081840481111561424857614247613f3b565b5b81810290505b9392505050565b5f61425f82613a61565b915061426a83613a61565b92506142977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614184565b905092915050565b5f6142a982613a61565b91506142b483613a61565b92508282026142c281613a61565b915082820484148315176142d9576142d8613f3b565b5b5092915050565b7f45524332303a204d6178696d756d20627579206665657320616c6c6f776564205f8201527f6973203230250000000000000000000000000000000000000000000000000000602082015250565b5f61433a602683613963565b9150614345826142e0565b604082019050919050565b5f6020820190508181035f8301526143678161432e565b9050919050565b7f45524332303a204d6178696d756d2053656c6c206665657320616c6c6f7765645f8201527f2069732032302500000000000000000000000000000000000000000000000000602082015250565b5f6143c8602783613963565b91506143d38261436e565b604082019050919050565b5f6020820190508181035f8301526143f5816143bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614456602683613963565b9150614461826143fc565b604082019050919050565b5f6020820190508181035f8301526144838161444a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6144e4602483613963565b91506144ef8261448a565b604082019050919050565b5f6020820190508181035f830152614511816144d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614572602283613963565b915061457d82614518565b604082019050919050565b5f6020820190508181035f83015261459f81614566565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614600602583613963565b915061460b826145a6565b604082019050919050565b5f6020820190508181035f83015261462d816145f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61468e602383613963565b915061469982614634565b604082019050919050565b5f6020820190508181035f8301526146bb81614682565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61471c602983613963565b9150614727826146c2565b604082019050919050565b5f6020820190508181035f83015261474981614710565b9050919050565b7f45524332303a205472616e7366657220616d6f756e74206578636565647320745f8201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b5f6147aa602f83613963565b91506147b582614750565b604082019050919050565b5f6020820190508181035f8301526147d78161479e565b9050919050565b5f6147e882613a61565b91506147f383613a61565b925082820190508082111561480b5761480a613f3b565b5b92915050565b7f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e5f8201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61486b602183613963565b915061487682614811565b604082019050919050565b5f6020820190508181035f8301526148988161485f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148d682613a61565b91506148e183613a61565b9250826148f1576148f061489f565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220952ff075a4592348f956884f368f461aef3e4f504bf6c60c172425e21a9b686264736f6c63430008180033
Deployed Bytecode Sourcemap
3387:16805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5839:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6826:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4285:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8325:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4529:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6118:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7027:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9329:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6025:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9999:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7481:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8420:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11179:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8845:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11705:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4577:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9659:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15540:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12169:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12023:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6221:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2502:148;;;;;;;;;;;;;:::i;:::-;;11552:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8197:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2279:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5930:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11864:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12317:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7789:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6427:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4319:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11416:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11298:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4439:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2658:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5839:83;5876:13;5909:5;5902:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5839:83;:::o;6826:193::-;6928:4;6950:39;6959:12;:10;:12::i;:::-;6973:7;6982:6;6950:8;:39::i;:::-;7007:4;7000:11;;6826:193;;;;:::o;4285:27::-;;;;:::o;8325:87::-;8367:7;8394:10;;8387:17;;8325:87;:::o;4529:41::-;;;;;;;;;;;;;:::o;6118:95::-;6171:7;6198;;6191:14;;6118:95;:::o;7027:446::-;7159:4;7176:36;7186:6;7194:9;7205:6;7176:9;:36::i;:::-;7223:220;7246:6;7267:12;:10;:12::i;:::-;7294:138;7350:6;7294:138;;;;;;;;;;;;;;;;;:11;:19;7306:6;7294:19;;;;;;;;;;;;;;;:33;7314:12;:10;:12::i;:::-;7294:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7223:8;:220::i;:::-;7461:4;7454:11;;7027:446;;;;;:::o;9329:322::-;9423:7;9481;;9470;:18;;9448:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9569:19;9591:10;:8;:10::i;:::-;9569:32;;9619:24;9631:11;9619:7;:11;;:24;;;;:::i;:::-;9612:31;;;9329:322;;;:::o;6025:85::-;6066:7;6093:9;;6086:16;;6025:85;:::o;9999:477::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:11:::1;:20;10091:7;10079:20;;;;;;;;;;;;;;;;;;;;;;;;;10071:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10147:9;10142:327;10166:9;:16;;;;10162:1;:20;10142:327;;;10224:7;10208:23;;:9;10218:1;10208:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;10204:254:::1;;10267:9;10296:1;10277:9;:16;;;;:20;;;;:::i;:::-;10267:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10252:9;10262:1;10252:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10336:1;10317:7;:16;10325:7;10317:16;;;;;;;;;;;;;;;:20;;;;10379:5;10356:11;:20;10368:7;10356:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10403:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10437:5;;10204:254;10184:3;;;;;;;10142:327;;;;9999:477:::0;:::o;7481:300::-;7596:4;7618:133;7641:12;:10;:12::i;:::-;7668:7;7690:50;7729:10;7690:11;:25;7702:12;:10;:12::i;:::-;7690:25;;;;;;;;;;;;;;;:34;7716:7;7690:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7618:8;:133::i;:::-;7769:4;7762:11;;7481:300;;;;:::o;8420:417::-;8472:14;8489:12;:10;:12::i;:::-;8472:29;;8535:11;:19;8547:6;8535:19;;;;;;;;;;;;;;;;;;;;;;;;;8534:20;8512:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8638:15;8665:19;8676:7;8665:10;:19::i;:::-;8637:47;;;;;;8713:28;8733:7;8713;:15;8721:6;8713:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;8695:7;:15;8703:6;8695:15;;;;;;;;;;;;;;;:46;;;;8762:20;8774:7;8762;;:11;;:20;;;;:::i;:::-;8752:7;:30;;;;8806:23;8821:7;8806:10;;:14;;:23;;;;:::i;:::-;8793:10;:36;;;;8461:376;;8420:417;:::o;11179:111::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11278:4:::1;11248:18;:27;11267:7;11248:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11179:111:::0;:::o;8845:476::-;8963:7;9007;;8996;:18;;8988:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9066:17;9061:253;;9101:15;9128:19;9139:7;9128:10;:19::i;:::-;9100:47;;;;;;9169:7;9162:14;;;;;9061:253;9212:23;9246:19;9257:7;9246:10;:19::i;:::-;9209:56;;;;;;9287:15;9280:22;;;8845:476;;;;;:::o;11705:151::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:5:::1;11807:24;:33;11832:7;11807:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;11705:151:::0;;:::o;4577:28::-;;;;;;;;;;;;;:::o;9659:332::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9740:11:::1;:20;9752:7;9740:20;;;;;;;;;;;;;;;;;;;;;;;;;9739:21;9731:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9826:1;9807:7;:16;9815:7;9807:16;;;;;;;;;;;;;;;;:20;9803:109;;;9863:37;9883:7;:16;9891:7;9883:16;;;;;;;;;;;;;;;;9863:19;:37::i;:::-;9844:7;:16;9852:7;9844:16;;;;;;;;;;;;;;;:56;;;;9803:109;9945:4;9922:11;:20;9934:7;9922:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9960:9;9975:7;9960:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9659:332:::0;:::o;15540:124::-;15605:4;15629:18;:27;15648:7;15629:27;;;;;;;;;;;;;;;;;;;;;;;;;15622:34;;15540:124;;;:::o;12169:139::-;12241:4;12265:26;:35;12292:7;12265:35;;;;;;;;;;;;;;;;;;;;;;;;;12258:42;;12169:139;;;:::o;12023:138::-;12093:4;12120:24;:33;12145:7;12120:33;;;;;;;;;;;;;;;;;;;;;;;;;12113:40;;12023:138;;;:::o;6221:198::-;6287:7;6311:11;:20;6323:7;6311:20;;;;;;;;;;;;;;;;;;;;;;;;;6307:49;;;6340:7;:16;6348:7;6340:16;;;;;;;;;;;;;;;;6333:23;;;;6307:49;6374:37;6394:7;:16;6402:7;6394:16;;;;;;;;;;;;;;;;6374:19;:37::i;:::-;6367:44;;6221:198;;;;:::o;2502:148::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2609:1:::1;2572:40;;2593:6;::::0;::::1;;;;;;;;2572:40;;;;;;;;;;;;2640:1;2623:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2502:148::o:0;11552:145::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11680:9:::1;;11675:2;:14;;;;:::i;:::-;11656:16;:33;;;;:::i;:::-;11637:16;:52;;;;11552:145:::0;:::o;8197:120::-;8265:4;8289:11;:20;8301:7;8289:20;;;;;;;;;;;;;;;;;;;;;;;;;8282:27;;8197:120;;;:::o;2279:87::-;2325:7;2352:6;;;;;;;;;;;2345:13;;2279:87;:::o;12576:243::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12662:12:::1;12677:4;12662:19;;12708:2;12700:4;:10;;12692:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12777:4;12764:10;:17;;;;12801:10;;12792:6;:19;;;;12651:168;12576:243:::0;:::o;5930:87::-;5969:13;6002:7;5995:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5930:87;:::o;11864:151::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12002:5:::1;11964:26;:35;11991:7;11964:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;11864:151:::0;;:::o;12317:251::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12408:12:::1;12423:4;12408:19;;12454:2;12446:4;:10;;12438:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:4;12511:11;:18;;;;12549:11;;12540:6;:20;;;;12397:171;12317:251:::0;:::o;7789:400::-;7909:4;7931:228;7954:12;:10;:12::i;:::-;7981:7;8003:145;8060:15;8003:145;;;;;;;;;;;;;;;;;:11;:25;8015:12;:10;:12::i;:::-;8003:25;;;;;;;;;;;;;;;:34;8029:7;8003:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;7931:8;:228::i;:::-;8177:4;8170:11;;7789:400;;;;:::o;6427:199::-;6532:4;6554:42;6564:12;:10;:12::i;:::-;6578:9;6589:6;6554:9;:42::i;:::-;6614:4;6607:11;;6427:199;;;;:::o;4319:31::-;;;;:::o;11416:128::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11527:9:::1;;11523:2;:13;;;;:::i;:::-;11508:12;:28;;;;:::i;:::-;11493:12;:43;;;;11416:128:::0;:::o;6634:184::-;6751:7;6783:11;:18;6795:5;6783:18;;;;;;;;;;;;;;;:27;6802:7;6783:27;;;;;;;;;;;;;;;;6776:34;;6634:184;;;;:::o;11298:110::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11395:5:::1;11365:18;:27;11384:7;11365:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11298:110:::0;:::o;4439:34::-;;;;:::o;2658:281::-;2425:12;:10;:12::i;:::-;2414:23;;:7;:5;:7::i;:::-;:23;;;2406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2781:1:::1;2761:22;;:8;:22;;::::0;2739:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2894:8;2865:38;;2886:6;::::0;::::1;;;;;;;;2865:38;;;;;;;;;;;;2923:8;2914:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2658:281:::0;:::o;1826:98::-;1879:7;1906:10;1899:17;;1826:98;:::o;15672:371::-;15816:1;15799:19;;:5;:19;;;15791:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15897:1;15878:21;;:7;:21;;;15870:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15981:6;15951:11;:18;15963:5;15951:18;;;;;;;;;;;;;;;:27;15970:7;15951:27;;;;;;;;;;;;;;;:36;;;;16019:7;16003:32;;16012:5;16003:32;;;16028:6;16003:32;;;;;;:::i;:::-;;;;;;;;15672:371;;;:::o;16051:1463::-;16189:1;16173:18;;:4;:18;;;16165:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16266:1;16252:16;;:2;:16;;;16244:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16336:1;16327:6;:10;16319:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:7;:5;:7::i;:::-;16408:15;;:4;:15;;;;:32;;;;;16433:7;:5;:7::i;:::-;16427:13;;:2;:13;;;;16408:32;16404:253;;;16464:26;:32;16491:4;16464:32;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;16500:26;:30;16527:2;16500:30;;;;;;;;;;;;;;;;;;;;;;;;;16464:66;:110;;;;16562:12;;16552:6;:22;;16464:110;16455:202;;;;;;;;;;;;:::i;:::-;;;;;;;;;16404:253;16700:7;:5;:7::i;:::-;16692:15;;:4;:15;;;;:51;;;;;16738:4;16724:19;;:2;:19;;;;16692:51;:86;;;;;3969:42;16760:18;;:2;:18;;;;16692:86;:122;;;;;16801:13;;;;;;;;;;;16795:19;;:2;:19;;;;16692:122;16674:377;;;16842:22;16867:13;16877:2;16867:9;:13::i;:::-;16842:38;;16903:24;:28;16928:2;16903:28;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;16963:16;;16953:6;16936:14;:23;;;;:::i;:::-;:43;;16903:77;16895:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;16827:224;16674:377;17063:12;17078:4;17063:19;;17097:18;:24;17116:4;17097:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;17125:18;:22;17144:2;17125:22;;;;;;;;;;;;;;;;;;;;;;;;;17097:50;17093:360;;;17174:5;17164:15;;17093:360;;;17226:13;;;;;;;;;;;17218:21;;:4;:21;;;17214:218;;17269:10;;17260:6;:19;;;;17214:218;;;17311:13;;;;;;;;;;;17305:19;;:2;:19;;;17301:131;;17354:11;;17345:6;:20;;;;17301:131;;;17415:1;17406:6;:10;;;;17301:131;17214:218;17093:360;17465:41;17480:4;17486:2;17490:6;17498:7;17465:14;:41::i;:::-;16154:1360;16051:1463;;;:::o;1299:240::-;1419:7;1477:1;1472;:6;;1480:12;1464:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1519:1;1515;:5;1508:12;;1299:240;;;;;:::o;14430:164::-;14472:7;14493:15;14510;14529:19;:17;:19::i;:::-;14492:56;;;;14566:20;14578:7;14566;:11;;:20;;;;:::i;:::-;14559:27;;;;14430:164;:::o;1195:98::-;1253:7;1284:1;1280;:5;;;;:::i;:::-;1273:12;;1195:98;;;;:::o;883:::-;941:7;972:1;968;:5;;;;:::i;:::-;961:12;;883:98;;;;:::o;13019:637::-;13119:7;13141;13163;13185;13207;13257:23;13295:12;13321:20;13333:7;13321:11;:20::i;:::-;13242:99;;;;13353:15;13370:23;13395:12;13411:88;13437:7;13459:4;13478:10;:8;:10::i;:::-;13411:11;:88::i;:::-;13352:147;;;;;;13532:7;13554:15;13584:4;13603:15;13633:4;13510:138;;;;;;;;;;;;;;;13019:637;;;;;;;:::o;987:98::-;1045:7;1076:1;1072;:5;;;;:::i;:::-;1065:12;;987:98;;;;:::o;17528:838::-;17684:7;17679:28;;17693:14;:12;:14::i;:::-;17679:28;17724:11;:19;17736:6;17724:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;17748:11;:22;17760:9;17748:22;;;;;;;;;;;;;;;;;;;;;;;;;17747:23;17724:46;17720:597;;;17787:48;17809:6;17817:9;17828:6;17787:21;:48::i;:::-;17720:597;;;17858:11;:19;17870:6;17858:19;;;;;;;;;;;;;;;;;;;;;;;;;17857:20;:46;;;;;17881:11;:22;17893:9;17881:22;;;;;;;;;;;;;;;;;;;;;;;;;17857:46;17853:464;;;17920:46;17940:6;17948:9;17959:6;17920:19;:46::i;:::-;17853:464;;;17989:11;:19;18001:6;17989:19;;;;;;;;;;;;;;;;;;;;;;;;;17988:20;:47;;;;;18013:11;:22;18025:9;18013:22;;;;;;;;;;;;;;;;;;;;;;;;;18012:23;17988:47;17984:333;;;18052:44;18070:6;18078:9;18089:6;18052:17;:44::i;:::-;17984:333;;;18118:11;:19;18130:6;18118:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;18141:11;:22;18153:9;18141:22;;;;;;;;;;;;;;;;;;;;;;;;;18118:45;18114:203;;;18180:48;18202:6;18210:9;18221:6;18180:21;:48::i;:::-;18114:203;;;18261:44;18279:6;18287:9;18298:6;18261:17;:44::i;:::-;18114:203;17984:333;17853:464;17720:597;18334:7;18329:29;;18343:15;:13;:15::i;:::-;18329:29;17528:838;;;;:::o;14602:605::-;14653:7;14662;14682:15;14700:7;;14682:25;;14718:15;14736:7;;14718:25;;14759:9;14754:338;14778:9;:16;;;;14774:1;:20;14754:338;;;14862:7;14838;:21;14846:9;14856:1;14846:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14838:21;;;;;;;;;;;;;;;;:31;:83;;;;14914:7;14890;:21;14898:9;14908:1;14898:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14890:21;;;;;;;;;;;;;;;;:31;14838:83;14816:146;;;14945:7;;14954;;14937:25;;;;;;;;;14816:146;14987:34;14999:7;:21;15007:9;15017:1;15007:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14999:21;;;;;;;;;;;;;;;;14987:7;:11;;:34;;;;:::i;:::-;14977:44;;15046:34;15058:7;:21;15066:9;15076:1;15066:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15058:21;;;;;;;;;;;;;;;;15046:7;:11;;:34;;;;:::i;:::-;15036:44;;14796:3;;;;;;;14754:338;;;;15116:20;15128:7;;15116;;:11;;:20;;;;:::i;:::-;15106:7;:30;15102:61;;;15146:7;;15155;;15138:25;;;;;;;;15102:61;15182:7;15191;15174:25;;;;;;14602:605;;;:::o;13664:300::-;13765:7;13787;13822:12;13837:24;13853:7;13837:15;:24::i;:::-;13822:39;;13872:23;13898:17;13910:4;13898:7;:11;;:17;;;;:::i;:::-;13872:43;;13934:15;13951:4;13926:30;;;;;;13664:300;;;:::o;13972:450::-;14142:7;14164;14186;14221:15;14239:24;14251:11;14239:7;:11;;:24;;;;:::i;:::-;14221:42;;14274:12;14289:21;14298:11;14289:4;:8;;:21;;;;:::i;:::-;14274:36;;14321:23;14347:17;14359:4;14347:7;:11;;:17;;;;:::i;:::-;14321:43;;14383:7;14392:15;14409:4;14375:39;;;;;;;;;13972:450;;;;;;;:::o;15352:96::-;15413:6;;15395:15;:24;;;;15439:1;15430:6;:10;;;;15352:96::o;19573:616::-;19724:15;19754:23;19792:12;19819:23;19857:12;19883:19;19894:7;19883:10;:19::i;:::-;19709:193;;;;;;;;;;19931:28;19951:7;19931;:15;19939:6;19931:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19913:7;:15;19921:6;19913:15;;;;;;;;;;;;;;;:46;;;;19988:28;20008:7;19988;:15;19996:6;19988:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19970:7;:15;19978:6;19970:15;;;;;;;;;;;;;;;:46;;;;20048:39;20071:15;20048:7;:18;20056:9;20048:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20027:7;:18;20035:9;20027:18;;;;;;;;;;;;;;;:60;;;;20098:23;20110:4;20116;20098:11;:23::i;:::-;20154:9;20137:44;;20146:6;20137:44;;;20165:15;20137:44;;;;;;:::i;:::-;;;;;;;;19698:491;;;;;19573:616;;;:::o;18937:628::-;19086:15;19116:23;19154:12;19181:23;19219:12;19245:19;19256:7;19245:10;:19::i;:::-;19071:193;;;;;;;;;;19293:28;19313:7;19293;:15;19301:6;19293:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19275:7;:15;19283:6;19275:15;;;;;;;;;;;;;;;:46;;;;19353:39;19376:15;19353:7;:18;19361:9;19353:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19332:7;:18;19340:9;19332:18;;;;;;;;;;;;;;;:60;;;;19424:39;19447:15;19424:7;:18;19432:9;19424:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19403:7;:18;19411:9;19403:18;;;;;;;;;;;;;;;:60;;;;19474:23;19486:4;19492;19474:11;:23::i;:::-;19530:9;19513:44;;19522:6;19513:44;;;19541:15;19513:44;;;;;;:::i;:::-;;;;;;;;19060:505;;;;;18937:628;;;:::o;18374:555::-;18521:15;18551:23;18589:12;18616:23;18654:12;18680:19;18691:7;18680:10;:19::i;:::-;18506:193;;;;;;;;;;18728:28;18748:7;18728;:15;18736:6;18728:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18710:7;:15;18718:6;18710:15;;;;;;;;;;;;;;;:46;;;;18788:39;18811:15;18788:7;:18;18796:9;18788:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18767:7;:18;18775:9;18767:18;;;;;;;;;;;;;;;:60;;;;18838:23;18850:4;18856;18838:11;:23::i;:::-;18894:9;18877:44;;18886:6;18877:44;;;18905:15;18877:44;;;;;;:::i;:::-;;;;;;;;18495:434;;;;;18374:555;;;:::o;10484:687::-;10635:15;10665:23;10703:12;10730:23;10768:12;10794:19;10805:7;10794:10;:19::i;:::-;10620:193;;;;;;;;;;10842:28;10862:7;10842;:15;10850:6;10842:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10824:7;:15;10832:6;10824:15;;;;;;;;;;;;;;;:46;;;;10899:28;10919:7;10899;:15;10907:6;10899:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10881:7;:15;10889:6;10881:15;;;;;;;;;;;;;;;:46;;;;10959:39;10982:15;10959:7;:18;10967:9;10959:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10938:7;:18;10946:9;10938:18;;;;;;;;;;;;;;;:60;;;;11030:39;11053:15;11030:7;:18;11038:9;11030:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11009:7;:18;11017:9;11009:18;;;;;;;;;;;;;;;:60;;;;11080:23;11092:4;11098;11080:11;:23::i;:::-;11136:9;11119:44;;11128:6;11119:44;;;11147:15;11119:44;;;;;;:::i;:::-;;;;;;;;10609:562;;;;;10484:687;;;:::o;15456:76::-;15509:15;;15500:6;:24;;;;15456:76::o;15215:129::-;15279:7;15306:30;15330:5;15306:19;15318:6;;15306:7;:11;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;15299:37;;15215:129;;;:::o;1091:98::-;1149:7;1180:1;1176;:5;;;;:::i;:::-;1169:12;;1091:98;;;;:::o;12864:147::-;12942:17;12954:4;12942:7;;:11;;:17;;;;:::i;:::-;12932:7;:27;;;;12983:20;12998:4;12983:10;;:14;;:20;;;;:::i;:::-;12970:10;:33;;;;12864:147;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:116::-;6136:21;6151:5;6136:21;:::i;:::-;6129:5;6126:32;6116:60;;6172:1;6169;6162:12;6116:60;6066:116;:::o;6188:133::-;6231:5;6269:6;6256:20;6247:29;;6285:30;6309:5;6285:30;:::i;:::-;6188:133;;;;:::o;6327:468::-;6392:6;6400;6449:2;6437:9;6428:7;6424:23;6420:32;6417:119;;;6455:79;;:::i;:::-;6417:119;6575:1;6600:53;6645:7;6636:6;6625:9;6621:22;6600:53;:::i;:::-;6590:63;;6546:117;6702:2;6728:50;6770:7;6761:6;6750:9;6746:22;6728:50;:::i;:::-;6718:60;;6673:115;6327:468;;;;;:::o;6801:::-;6866:6;6874;6923:2;6911:9;6902:7;6898:23;6894:32;6891:119;;;6929:79;;:::i;:::-;6891:119;7049:1;7074:53;7119:7;7110:6;7099:9;7095:22;7074:53;:::i;:::-;7064:63;;7020:117;7176:2;7202:50;7244:7;7235:6;7224:9;7220:22;7202:50;:::i;:::-;7192:60;;7147:115;6801:468;;;;;:::o;7275:118::-;7362:24;7380:5;7362:24;:::i;:::-;7357:3;7350:37;7275:118;;:::o;7399:222::-;7492:4;7530:2;7519:9;7515:18;7507:26;;7543:71;7611:1;7600:9;7596:17;7587:6;7543:71;:::i;:::-;7399:222;;;;:::o;7627:474::-;7695:6;7703;7752:2;7740:9;7731:7;7727:23;7723:32;7720:119;;;7758:79;;:::i;:::-;7720:119;7878:1;7903:53;7948:7;7939:6;7928:9;7924:22;7903:53;:::i;:::-;7893:63;;7849:117;8005:2;8031:53;8076:7;8067:6;8056:9;8052:22;8031:53;:::i;:::-;8021:63;;7976:118;7627:474;;;;;:::o;8107:180::-;8155:77;8152:1;8145:88;8252:4;8249:1;8242:15;8276:4;8273:1;8266:15;8293:320;8337:6;8374:1;8368:4;8364:12;8354:22;;8421:1;8415:4;8411:12;8442:18;8432:81;;8498:4;8490:6;8486:17;8476:27;;8432:81;8560:2;8552:6;8549:14;8529:18;8526:38;8523:84;;8579:18;;:::i;:::-;8523:84;8344:269;8293:320;;;:::o;8619:229::-;8759:34;8755:1;8747:6;8743:14;8736:58;8828:12;8823:2;8815:6;8811:15;8804:37;8619:229;:::o;8854:366::-;8996:3;9017:67;9081:2;9076:3;9017:67;:::i;:::-;9010:74;;9093:93;9182:3;9093:93;:::i;:::-;9211:2;9206:3;9202:12;9195:19;;8854:366;;;:::o;9226:419::-;9392:4;9430:2;9419:9;9415:18;9407:26;;9479:9;9473:4;9469:20;9465:1;9454:9;9450:17;9443:47;9507:131;9633:4;9507:131;:::i;:::-;9499:139;;9226:419;;;:::o;9651:182::-;9791:34;9787:1;9779:6;9775:14;9768:58;9651:182;:::o;9839:366::-;9981:3;10002:67;10066:2;10061:3;10002:67;:::i;:::-;9995:74;;10078:93;10167:3;10078:93;:::i;:::-;10196:2;10191:3;10187:12;10180:19;;9839:366;;;:::o;10211:419::-;10377:4;10415:2;10404:9;10400:18;10392:26;;10464:9;10458:4;10454:20;10450:1;10439:9;10435:17;10428:47;10492:131;10618:4;10492:131;:::i;:::-;10484:139;;10211:419;;;:::o;10636:177::-;10776:29;10772:1;10764:6;10760:14;10753:53;10636:177;:::o;10819:366::-;10961:3;10982:67;11046:2;11041:3;10982:67;:::i;:::-;10975:74;;11058:93;11147:3;11058:93;:::i;:::-;11176:2;11171:3;11167:12;11160:19;;10819:366;;;:::o;11191:419::-;11357:4;11395:2;11384:9;11380:18;11372:26;;11444:9;11438:4;11434:20;11430:1;11419:9;11415:17;11408:47;11472:131;11598:4;11472:131;:::i;:::-;11464:139;;11191:419;;;:::o;11616:180::-;11664:77;11661:1;11654:88;11761:4;11758:1;11751:15;11785:4;11782:1;11775:15;11802:180;11850:77;11847:1;11840:88;11947:4;11944:1;11937:15;11971:4;11968:1;11961:15;11988:194;12028:4;12048:20;12066:1;12048:20;:::i;:::-;12043:25;;12082:20;12100:1;12082:20;:::i;:::-;12077:25;;12126:1;12123;12119:9;12111:17;;12150:1;12144:4;12141:11;12138:37;;;12155:18;;:::i;:::-;12138:37;11988:194;;;;:::o;12188:180::-;12236:77;12233:1;12226:88;12333:4;12330:1;12323:15;12357:4;12354:1;12347:15;12374:231;12514:34;12510:1;12502:6;12498:14;12491:58;12583:14;12578:2;12570:6;12566:15;12559:39;12374:231;:::o;12611:366::-;12753:3;12774:67;12838:2;12833:3;12774:67;:::i;:::-;12767:74;;12850:93;12939:3;12850:93;:::i;:::-;12968:2;12963:3;12959:12;12952:19;;12611:366;;;:::o;12983:419::-;13149:4;13187:2;13176:9;13172:18;13164:26;;13236:9;13230:4;13226:20;13222:1;13211:9;13207:17;13200:47;13264:131;13390:4;13264:131;:::i;:::-;13256:139;;12983:419;;;:::o;13408:181::-;13548:33;13544:1;13536:6;13532:14;13525:57;13408:181;:::o;13595:366::-;13737:3;13758:67;13822:2;13817:3;13758:67;:::i;:::-;13751:74;;13834:93;13923:3;13834:93;:::i;:::-;13952:2;13947:3;13943:12;13936:19;;13595:366;;;:::o;13967:419::-;14133:4;14171:2;14160:9;14156:18;14148:26;;14220:9;14214:4;14210:20;14206:1;14195:9;14191:17;14184:47;14248:131;14374:4;14248:131;:::i;:::-;14240:139;;13967:419;;;:::o;14392:177::-;14532:29;14528:1;14520:6;14516:14;14509:53;14392:177;:::o;14575:366::-;14717:3;14738:67;14802:2;14797:3;14738:67;:::i;:::-;14731:74;;14814:93;14903:3;14814:93;:::i;:::-;14932:2;14927:3;14923:12;14916:19;;14575:366;;;:::o;14947:419::-;15113:4;15151:2;15140:9;15136:18;15128:26;;15200:9;15194:4;15190:20;15186:1;15175:9;15171:17;15164:47;15228:131;15354:4;15228:131;:::i;:::-;15220:139;;14947:419;;;:::o;15372:102::-;15414:8;15461:5;15458:1;15454:13;15433:34;;15372:102;;;:::o;15480:848::-;15541:5;15548:4;15572:6;15563:15;;15596:5;15587:14;;15610:712;15631:1;15621:8;15618:15;15610:712;;;15726:4;15721:3;15717:14;15711:4;15708:24;15705:50;;;15735:18;;:::i;:::-;15705:50;15785:1;15775:8;15771:16;15768:451;;;16200:4;16193:5;16189:16;16180:25;;15768:451;16250:4;16244;16240:15;16232:23;;16280:32;16303:8;16280:32;:::i;:::-;16268:44;;15610:712;;;15480:848;;;;;;;:::o;16334:1073::-;16388:5;16579:8;16569:40;;16600:1;16591:10;;16602:5;;16569:40;16628:4;16618:36;;16645:1;16636:10;;16647:5;;16618:36;16714:4;16762:1;16757:27;;;;16798:1;16793:191;;;;16707:277;;16757:27;16775:1;16766:10;;16777:5;;;16793:191;16838:3;16828:8;16825:17;16822:43;;;16845:18;;:::i;:::-;16822:43;16894:8;16891:1;16887:16;16878:25;;16929:3;16922:5;16919:14;16916:40;;;16936:18;;:::i;:::-;16916:40;16969:5;;;16707:277;;17093:2;17083:8;17080:16;17074:3;17068:4;17065:13;17061:36;17043:2;17033:8;17030:16;17025:2;17019:4;17016:12;17012:35;16996:111;16993:246;;;17149:8;17143:4;17139:19;17130:28;;17184:3;17177:5;17174:14;17171:40;;;17191:18;;:::i;:::-;17171:40;17224:5;;16993:246;17264:42;17302:3;17292:8;17286:4;17283:1;17264:42;:::i;:::-;17249:57;;;;17338:4;17333:3;17329:14;17322:5;17319:25;17316:51;;;17347:18;;:::i;:::-;17316:51;17396:4;17389:5;17385:16;17376:25;;16334:1073;;;;;;:::o;17413:285::-;17473:5;17497:23;17515:4;17497:23;:::i;:::-;17489:31;;17541:27;17559:8;17541:27;:::i;:::-;17529:39;;17587:104;17624:66;17614:8;17608:4;17587:104;:::i;:::-;17578:113;;17413:285;;;;:::o;17704:410::-;17744:7;17767:20;17785:1;17767:20;:::i;:::-;17762:25;;17801:20;17819:1;17801:20;:::i;:::-;17796:25;;17856:1;17853;17849:9;17878:30;17896:11;17878:30;:::i;:::-;17867:41;;18057:1;18048:7;18044:15;18041:1;18038:22;18018:1;18011:9;17991:83;17968:139;;18087:18;;:::i;:::-;17968:139;17752:362;17704:410;;;;:::o;18120:225::-;18260:34;18256:1;18248:6;18244:14;18237:58;18329:8;18324:2;18316:6;18312:15;18305:33;18120:225;:::o;18351:366::-;18493:3;18514:67;18578:2;18573:3;18514:67;:::i;:::-;18507:74;;18590:93;18679:3;18590:93;:::i;:::-;18708:2;18703:3;18699:12;18692:19;;18351:366;;;:::o;18723:419::-;18889:4;18927:2;18916:9;18912:18;18904:26;;18976:9;18970:4;18966:20;18962:1;18951:9;18947:17;18940:47;19004:131;19130:4;19004:131;:::i;:::-;18996:139;;18723:419;;;:::o;19148:226::-;19288:34;19284:1;19276:6;19272:14;19265:58;19357:9;19352:2;19344:6;19340:15;19333:34;19148:226;:::o;19380:366::-;19522:3;19543:67;19607:2;19602:3;19543:67;:::i;:::-;19536:74;;19619:93;19708:3;19619:93;:::i;:::-;19737:2;19732:3;19728:12;19721:19;;19380:366;;;:::o;19752:419::-;19918:4;19956:2;19945:9;19941:18;19933:26;;20005:9;19999:4;19995:20;19991:1;19980:9;19976:17;19969:47;20033:131;20159:4;20033:131;:::i;:::-;20025:139;;19752:419;;;:::o;20177:225::-;20317:34;20313:1;20305:6;20301:14;20294:58;20386:8;20381:2;20373:6;20369:15;20362:33;20177:225;:::o;20408:366::-;20550:3;20571:67;20635:2;20630:3;20571:67;:::i;:::-;20564:74;;20647:93;20736:3;20647:93;:::i;:::-;20765:2;20760:3;20756:12;20749:19;;20408:366;;;:::o;20780:419::-;20946:4;20984:2;20973:9;20969:18;20961:26;;21033:9;21027:4;21023:20;21019:1;21008:9;21004:17;20997:47;21061:131;21187:4;21061:131;:::i;:::-;21053:139;;20780:419;;;:::o;21205:223::-;21345:34;21341:1;21333:6;21329:14;21322:58;21414:6;21409:2;21401:6;21397:15;21390:31;21205:223;:::o;21434:366::-;21576:3;21597:67;21661:2;21656:3;21597:67;:::i;:::-;21590:74;;21673:93;21762:3;21673:93;:::i;:::-;21791:2;21786:3;21782:12;21775:19;;21434:366;;;:::o;21806:419::-;21972:4;22010:2;21999:9;21995:18;21987:26;;22059:9;22053:4;22049:20;22045:1;22034:9;22030:17;22023:47;22087:131;22213:4;22087:131;:::i;:::-;22079:139;;21806:419;;;:::o;22231:221::-;22371:34;22367:1;22359:6;22355:14;22348:58;22440:4;22435:2;22427:6;22423:15;22416:29;22231:221;:::o;22458:366::-;22600:3;22621:67;22685:2;22680:3;22621:67;:::i;:::-;22614:74;;22697:93;22786:3;22697:93;:::i;:::-;22815:2;22810:3;22806:12;22799:19;;22458:366;;;:::o;22830:419::-;22996:4;23034:2;23023:9;23019:18;23011:26;;23083:9;23077:4;23073:20;23069:1;23058:9;23054:17;23047:47;23111:131;23237:4;23111:131;:::i;:::-;23103:139;;22830:419;;;:::o;23255:224::-;23395:34;23391:1;23383:6;23379:14;23372:58;23464:7;23459:2;23451:6;23447:15;23440:32;23255:224;:::o;23485:366::-;23627:3;23648:67;23712:2;23707:3;23648:67;:::i;:::-;23641:74;;23724:93;23813:3;23724:93;:::i;:::-;23842:2;23837:3;23833:12;23826:19;;23485:366;;;:::o;23857:419::-;24023:4;24061:2;24050:9;24046:18;24038:26;;24110:9;24104:4;24100:20;24096:1;24085:9;24081:17;24074:47;24138:131;24264:4;24138:131;:::i;:::-;24130:139;;23857:419;;;:::o;24282:222::-;24422:34;24418:1;24410:6;24406:14;24399:58;24491:5;24486:2;24478:6;24474:15;24467:30;24282:222;:::o;24510:366::-;24652:3;24673:67;24737:2;24732:3;24673:67;:::i;:::-;24666:74;;24749:93;24838:3;24749:93;:::i;:::-;24867:2;24862:3;24858:12;24851:19;;24510:366;;;:::o;24882:419::-;25048:4;25086:2;25075:9;25071:18;25063:26;;25135:9;25129:4;25125:20;25121:1;25110:9;25106:17;25099:47;25163:131;25289:4;25163:131;:::i;:::-;25155:139;;24882:419;;;:::o;25307:228::-;25447:34;25443:1;25435:6;25431:14;25424:58;25516:11;25511:2;25503:6;25499:15;25492:36;25307:228;:::o;25541:366::-;25683:3;25704:67;25768:2;25763:3;25704:67;:::i;:::-;25697:74;;25780:93;25869:3;25780:93;:::i;:::-;25898:2;25893:3;25889:12;25882:19;;25541:366;;;:::o;25913:419::-;26079:4;26117:2;26106:9;26102:18;26094:26;;26166:9;26160:4;26156:20;26152:1;26141:9;26137:17;26130:47;26194:131;26320:4;26194:131;:::i;:::-;26186:139;;25913:419;;;:::o;26338:234::-;26478:34;26474:1;26466:6;26462:14;26455:58;26547:17;26542:2;26534:6;26530:15;26523:42;26338:234;:::o;26578:366::-;26720:3;26741:67;26805:2;26800:3;26741:67;:::i;:::-;26734:74;;26817:93;26906:3;26817:93;:::i;:::-;26935:2;26930:3;26926:12;26919:19;;26578:366;;;:::o;26950:419::-;27116:4;27154:2;27143:9;27139:18;27131:26;;27203:9;27197:4;27193:20;27189:1;27178:9;27174:17;27167:47;27231:131;27357:4;27231:131;:::i;:::-;27223:139;;26950:419;;;:::o;27375:191::-;27415:3;27434:20;27452:1;27434:20;:::i;:::-;27429:25;;27468:20;27486:1;27468:20;:::i;:::-;27463:25;;27511:1;27508;27504:9;27497:16;;27532:3;27529:1;27526:10;27523:36;;;27539:18;;:::i;:::-;27523:36;27375:191;;;;:::o;27572:220::-;27712:34;27708:1;27700:6;27696:14;27689:58;27781:3;27776:2;27768:6;27764:15;27757:28;27572:220;:::o;27798:366::-;27940:3;27961:67;28025:2;28020:3;27961:67;:::i;:::-;27954:74;;28037:93;28126:3;28037:93;:::i;:::-;28155:2;28150:3;28146:12;28139:19;;27798:366;;;:::o;28170:419::-;28336:4;28374:2;28363:9;28359:18;28351:26;;28423:9;28417:4;28413:20;28409:1;28398:9;28394:17;28387:47;28451:131;28577:4;28451:131;:::i;:::-;28443:139;;28170:419;;;:::o;28595:180::-;28643:77;28640:1;28633:88;28740:4;28737:1;28730:15;28764:4;28761:1;28754:15;28781:185;28821:1;28838:20;28856:1;28838:20;:::i;:::-;28833:25;;28872:20;28890:1;28872:20;:::i;:::-;28867:25;;28911:1;28901:35;;28916:18;;:::i;:::-;28901:35;28958:1;28955;28951:9;28946:14;;28781:185;;;;:::o
Swarm Source
ipfs://952ff075a4592348f956884f368f461aef3e4f504bf6c60c172425e21a9b6862
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.