Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exclude From Rew... | 18861345 | 418 days ago | IN | 0 ETH | 0.00202695 | ||||
Exclude From Fee | 18861340 | 418 days ago | IN | 0 ETH | 0.00071351 | ||||
Transfer | 18798227 | 427 days ago | IN | 0 ETH | 0.00467365 | ||||
Approve | 18779657 | 429 days ago | IN | 0 ETH | 0.0027431 | ||||
Exclude From Rew... | 18779644 | 429 days ago | IN | 0 ETH | 0.00427794 | ||||
Exclude From Fee | 18779632 | 429 days ago | IN | 0 ETH | 0.00256439 | ||||
Exclude From Rew... | 18779520 | 429 days ago | IN | 0 ETH | 0.00567257 | ||||
Approve | 18779500 | 429 days ago | IN | 0 ETH | 0.00289604 | ||||
Exclude From Fee | 18779483 | 429 days ago | IN | 0 ETH | 0.00282171 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MMMem
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-12 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /* ::---======++++++++======----::.. .:-==+++==--:::..... ....::::--==++++==--:.. .:-=+==-:.. .::-=++++==-:. .-=+=-:. .:-=++++- .:==-:. .:=- .-==: .==: :=- :::::: :::::: .:::::. .:::::. .=- .@@###%@+ =@@#####. +#####@#: :#@###%@* :=. .@# . -%@+ =@@=...... ......:*@#: :#@*. . .@* :- .@# %#: -%@+ =@@= -------. -------. .*@#: :#@*. =@= .@* .= .@# %@@#: -%@*@@= .*+=========- :=========.%= .*@##@*. =@@@= .@* = .@# %@:*@#: -#= .*@#.:::::::::::.. .:----------.=@@= .**. =@@=+@= .@* = .@# %@ .*@#: :*@#: -------------:-------------. =@@= =@@= =@= .@* = .@# %@ .*@%@#: ======.-============.-=====: =@@@@= =@= .@* = .@# %@ .+: :::::- .::::::::. :--::-. == =@= .@* .- .@# %@ :----- :-----: :-----. =@= .@* -- .@# %@ =+===+. .-: -+===+: =@= .@* :- .@# %@ :::::: ::::::. =@= .@* .=: .@# %@ :::::: ::::::. =@= .@* :=: -: -- =+++++. -+++++: .-. -: :=-. :----- :-----. .-=-. :::::: .:::::. :-+=:. .-- .:=+=-:. .:-++++- .:-=++=-:.. .::-=++++==-:. .:-==++==--:::... ...:::--=+++++=--:.. ..::--====++++++++++++++++++====---::.. WEB : http://mmmem.io/ TG : https://t.me/multimillionmemtoken X : https://twitter.com/mavrodimmmem */ /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function Mavrodi() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(Mavrodi() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function powerToThePeople() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract MMMem is IERC20, Ownable { using SafeMath for uint256; uint256 public constant MAX_FEE = 10**4 / 4; mapping(address => uint256) private _rMavro; mapping(address => uint256) private _tMavro; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotalMavro; uint256 private _rTotalMavro; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; // yeld uint256 private _previousTaxFee; uint256 public _taxToTheCashier; // liquidity Fee uint256 private _previoustaxToTheCashier; uint256 public _supportForThePeople; // charity fee uint256 private _previousSupportForThePeople; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public _charityAddress; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 private numTokensSellToAddToLiquidity; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyAmountUpdated(uint256 amount); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( string memory name_, string memory symbol_, uint256 totalSupply_, address router_, address charityAddress_, uint16 taxFee_, uint16 taxToTheCashier_, uint16 supportForThePeople_ ) { if (charityAddress_ == address(0)) { require( supportForThePeople_ == 0, "Cant set both charity address to address 0 and charity percent more than 0" ); } require( taxFee_ + taxToTheCashier_ + supportForThePeople_ <= MAX_FEE, "Total fee is over 25%" ); _name = name_; _symbol = symbol_; _decimals = 18; _tTotalMavro = totalSupply_; _rTotalMavro = (MAX - (MAX % _tTotalMavro)); _taxFee = taxFee_; _previousTaxFee = _taxFee; _taxToTheCashier = taxToTheCashier_; _previoustaxToTheCashier = _taxToTheCashier; _charityAddress = charityAddress_; _supportForThePeople = supportForThePeople_; _previousSupportForThePeople = _supportForThePeople; numTokensSellToAddToLiquidity = totalSupply_.div(10**3); // 0.1% swapAndLiquifyEnabled = true; _rMavro[Mavrodi()] = _rTotalMavro; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // exclude owner and this contract from fee _isExcludedFromFee[Mavrodi()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), Mavrodi(), _tTotalMavro); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotalMavro; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tMavro[account]; return tokenFromReflection(_rMavro[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 tAmountMavro) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmountMavro, , , , , , ) = _getValues(tAmountMavro); _rMavro[sender] = _rMavro[sender].sub(rAmountMavro); _rTotalMavro = _rTotalMavro.sub(rAmountMavro); _tFeeTotal = _tFeeTotal.add(tAmountMavro); } function reflectionFromToken(uint256 tAmountMavro, bool deductTransferFee) public view returns (uint256) { require(tAmountMavro <= _tTotalMavro, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmountMavro, , , , , , ) = _getValues(tAmountMavro); return rAmountMavro; } else { (, uint256 rTransferAmount, , , , , ) = _getValues(tAmountMavro); return rTransferAmount; } } function tokenFromReflection(uint256 rAmountMavro) public view returns (uint256) { require( rAmountMavro <= _rTotalMavro, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmountMavro.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rMavro[account] > 0) { _tMavro[account] = tokenFromReflection(_rMavro[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tMavro[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmountMavro ) private { ( uint256 rAmountMavro, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity ) = _getValues(tAmountMavro); _tMavro[sender] = _tMavro[sender].sub(tAmountMavro); _rMavro[sender] = _rMavro[sender].sub(rAmountMavro); _tMavro[recipient] = _tMavro[recipient].add(tTransferAmount); _rMavro[recipient] = _rMavro[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharityFee(tCharity); _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 setTaxFeePercent(uint256 taxFee) external onlyOwner { _taxFee = taxFee; require( _taxFee + _taxToTheCashier + _supportForThePeople <= MAX_FEE, "Total fee is over 25%" ); } function setTaxToTheCashie(uint256 taxToTheCashier) external onlyOwner { _taxToTheCashier = taxToTheCashier; require( _taxFee + _taxToTheCashier + _supportForThePeople <= MAX_FEE, "Total fee is over 25%" ); } function setSupportForThePeoplePercent(uint256 supportForThePeople) external onlyOwner { _supportForThePeople = supportForThePeople; require( _taxFee + _taxToTheCashier + _supportForThePeople <= MAX_FEE, "Total fee is over 25%" ); } function setSwapBackSettings(uint256 _amount) external onlyOwner { require( _amount >= totalSupply().mul(5).div(10**4), "Swapback amount should be at least 0.05% of total supply" ); numTokensSellToAddToLiquidity = _amount; emit SwapAndLiquifyAmountUpdated(_amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotalMavro = _rTotalMavro.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmountMavro) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity ) = _getTValues(tAmountMavro); (uint256 rAmountMavro, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmountMavro, tFee, tLiquidity, tCharity, _getRate() ); return ( rAmountMavro, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tCharity ); } function _getTValues(uint256 tAmountMavro) private view returns ( uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmountMavro); uint256 tLiquidity = calculateLiquidityFee(tAmountMavro); uint256 tCharityFee = calculateCharityFee(tAmountMavro); uint256 tTransferAmount = tAmountMavro.sub(tFee).sub(tLiquidity).sub( tCharityFee ); return (tTransferAmount, tFee, tLiquidity, tCharityFee); } function _getRValues( uint256 tAmountMavro, uint256 tFee, uint256 tLiquidity, uint256 tCharity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmountMavro = tAmountMavro.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); uint256 rTransferAmount = rAmountMavro.sub(rFee).sub(rLiquidity).sub( rCharity ); return (rAmountMavro, 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 = _rTotalMavro; uint256 tSupply = _tTotalMavro; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rMavro[_excluded[i]] > rSupply || _tMavro[_excluded[i]] > tSupply ) return (_rTotalMavro, _tTotalMavro); rSupply = rSupply.sub(_rMavro[_excluded[i]]); tSupply = tSupply.sub(_tMavro[_excluded[i]]); } if (rSupply < _rTotalMavro.div(_tTotalMavro)) return (_rTotalMavro, _tTotalMavro); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rMavro[address(this)] = _rMavro[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tMavro[address(this)] = _tMavro[address(this)].add(tLiquidity); } function _takeCharityFee(uint256 tCharity) private { if (tCharity > 0) { uint256 currentRate = _getRate(); uint256 rCharity = tCharity.mul(currentRate); _rMavro[_charityAddress] = _rMavro[_charityAddress].add(rCharity); if (_isExcluded[_charityAddress]) _tMavro[_charityAddress] = _tMavro[_charityAddress].add( tCharity ); emit Transfer(_msgSender(), _charityAddress, tCharity); } } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxToTheCashier).div(10**4); } function calculateCharityFee(uint256 _amount) private view returns (uint256) { if (_charityAddress == address(0)) return 0; return _amount.mul(_supportForThePeople).div(10**4); } function removeAllFee() private { _previousTaxFee = _taxFee; _previoustaxToTheCashier = _taxToTheCashier; _previousSupportForThePeople = _supportForThePeople; _taxFee = 0; _taxToTheCashier = 0; _supportForThePeople = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _taxToTheCashier = _previoustaxToTheCashier; _supportForThePeople = _previousSupportForThePeople; } 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"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true 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 tAmountMavro ) private { ( uint256 rAmountMavro, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity ) = _getValues(tAmountMavro); _rMavro[sender] = _rMavro[sender].sub(rAmountMavro); _rMavro[recipient] = _rMavro[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharityFee(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmountMavro ) private { ( uint256 rAmountMavro, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity ) = _getValues(tAmountMavro); _rMavro[sender] = _rMavro[sender].sub(rAmountMavro); _tMavro[recipient] = _tMavro[recipient].add(tTransferAmount); _rMavro[recipient] = _rMavro[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharityFee(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmountMavro ) private { ( uint256 rAmountMavro, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity ) = _getValues(tAmountMavro); _tMavro[sender] = _tMavro[sender].sub(tAmountMavro); _rMavro[sender] = _rMavro[sender].sub(rAmountMavro); _rMavro[recipient] = _rMavro[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharityFee(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"charityAddress_","type":"address"},{"internalType":"uint16","name":"taxFee_","type":"uint16"},{"internalType":"uint16","name":"taxToTheCashier_","type":"uint16"},{"internalType":"uint16","name":"supportForThePeople_","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapAndLiquifyAmountUpdated","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":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Mavrodi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_supportForThePeople","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxToTheCashier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"tAmountMavro","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"}],"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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"powerToThePeople","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmountMavro","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supportForThePeople","type":"uint256"}],"name":"setSupportForThePeoplePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxToTheCashier","type":"uint256"}],"name":"setTaxToTheCashie","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmountMavro","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
60806040523480156200001157600080fd5b506040516200614438038062006144833981810160405281019062000037919062000965565b620000576200004b620005e660201b60201c565b620005ee60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603620000d75760008161ffff1614620000d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000cd9062000b19565b60405180910390fd5b5b6109c4818385620000e9919062000b6a565b620000f5919062000b6a565b61ffff1611156200013d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001349062000bf7565b60405180910390fd5b87600a90816200014e919062000e5a565b5086600b908162000160919062000e5a565b506012600c60006101000a81548160ff021916908360ff1602179055508560078190555060075460001962000196919062000f70565b600019620001a5919062000fa8565b6008819055508261ffff16600d81905550600d54600e819055508161ffff16600f81905550600f5460108190555083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508061ffff166011819055506011546012819055506200023f6103e887620006b260201b90919060201c565b60168190555060016015806101000a81548160ff0219169083151502179055506008546001600062000276620006ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008590508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000fe3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b9919062000fe3565b6040518363ffffffff1660e01b8152600401620003d892919062001026565b6020604051808303816000875af1158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e919062000fe3565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620004b5620006ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200056e620006ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005cf919062001064565b60405180910390a3505050505050505050620010b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183620006c2919062001081565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200075c8262000711565b810181811067ffffffffffffffff821117156200077e576200077d62000722565b5b80604052505050565b600062000793620006f3565b9050620007a1828262000751565b919050565b600067ffffffffffffffff821115620007c457620007c362000722565b5b620007cf8262000711565b9050602081019050919050565b60005b83811015620007fc578082015181840152602081019050620007df565b60008484015250505050565b60006200081f6200081984620007a6565b62000787565b9050828152602081018484840111156200083e576200083d6200070c565b5b6200084b848285620007dc565b509392505050565b600082601f8301126200086b576200086a62000707565b5b81516200087d84826020860162000808565b91505092915050565b6000819050919050565b6200089b8162000886565b8114620008a757600080fd5b50565b600081519050620008bb8162000890565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ee82620008c1565b9050919050565b6200090081620008e1565b81146200090c57600080fd5b50565b6000815190506200092081620008f5565b92915050565b600061ffff82169050919050565b6200093f8162000926565b81146200094b57600080fd5b50565b6000815190506200095f8162000934565b92915050565b600080600080600080600080610100898b031215620009895762000988620006fd565b5b600089015167ffffffffffffffff811115620009aa57620009a962000702565b5b620009b88b828c0162000853565b985050602089015167ffffffffffffffff811115620009dc57620009db62000702565b5b620009ea8b828c0162000853565b9750506040620009fd8b828c01620008aa565b965050606062000a108b828c016200090f565b955050608062000a238b828c016200090f565b94505060a062000a368b828c016200094e565b93505060c062000a498b828c016200094e565b92505060e062000a5c8b828c016200094e565b9150509295985092959890939650565b600082825260208201905092915050565b7f43616e742073657420626f74682063686172697479206164647265737320746f60008201527f2061646472657373203020616e6420636861726974792070657263656e74206d60208201527f6f7265207468616e203000000000000000000000000000000000000000000000604082015250565b600062000b01604a8362000a6c565b915062000b0e8262000a7d565b606082019050919050565b6000602082019050818103600083015262000b348162000af2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b778262000926565b915062000b848362000926565b9250828201905061ffff81111562000ba15762000ba062000b3b565b5b92915050565b7f546f74616c20666565206973206f766572203235250000000000000000000000600082015250565b600062000bdf60158362000a6c565b915062000bec8262000ba7565b602082019050919050565b6000602082019050818103600083015262000c128162000bd0565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c6c57607f821691505b60208210810362000c825762000c8162000c24565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cad565b62000cf8868362000cad565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000d3b62000d3562000d2f8462000886565b62000d10565b62000886565b9050919050565b6000819050919050565b62000d578362000d1a565b62000d6f62000d668262000d42565b84845462000cba565b825550505050565b600090565b62000d8662000d77565b62000d9381848462000d4c565b505050565b5b8181101562000dbb5762000daf60008262000d7c565b60018101905062000d99565b5050565b601f82111562000e0a5762000dd48162000c88565b62000ddf8462000c9d565b8101602085101562000def578190505b62000e0762000dfe8562000c9d565b83018262000d98565b50505b505050565b600082821c905092915050565b600062000e2f6000198460080262000e0f565b1980831691505092915050565b600062000e4a838362000e1c565b9150826002028217905092915050565b62000e658262000c19565b67ffffffffffffffff81111562000e815762000e8062000722565b5b62000e8d825462000c53565b62000e9a82828562000dbf565b600060209050601f83116001811462000ed2576000841562000ebd578287015190505b62000ec9858262000e3c565b86555062000f39565b601f19841662000ee28662000c88565b60005b8281101562000f0c5784890151825560018201915060208501945060208101905062000ee5565b8683101562000f2c578489015162000f28601f89168262000e1c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f7d8262000886565b915062000f8a8362000886565b92508262000f9d5762000f9c62000f41565b5b828206905092915050565b600062000fb58262000886565b915062000fc28362000886565b925082820390508181111562000fdd5762000fdc62000b3b565b5b92915050565b60006020828403121562000ffc5762000ffb620006fd565b5b60006200100c848285016200090f565b91505092915050565b6200102081620008e1565b82525050565b60006040820190506200103d600083018562001015565b6200104c602083018462001015565b9392505050565b6200105e8162000886565b82525050565b60006020820190506200107b600083018462001053565b92915050565b60006200108e8262000886565b91506200109b8362000886565b925082620010ae57620010ad62000f41565b5b828204905092915050565b61507b80620010c96000396000f3fe6080604052600436106102135760003560e01c80634a74bb021161011857806395d89b41116100a0578063d31871a11161006f578063d31871a1146107e6578063dd225f6114610811578063dd62ed3e1461083a578063ea2f0b3714610877578063f2fde38b146108a05761021a565b806395d89b4114610716578063a457c2d714610741578063a9059cbb1461077e578063bc063e1a146107bb5761021a565b8063605e4e57116100e7578063605e4e571461061d57806370a08231146106485780637595c29014610685578063796431d0146106b057806388f82020146106d95761021a565b80634a74bb02146105755780634e9d4a51146105a057806352390c02146105b75780635342acb4146105e05761021a565b80632d8381191161019b5780633b124fe71161016a5780633b124fe7146104905780633bd5d173146104bb578063437823ec146104e45780634549b0391461050d57806349bd5a5e1461054a5761021a565b80632d838119146103c2578063313ce567146103ff5780633685d4191461042a57806339509351146104535761021a565b806313114a9d116101e257806313114a9d146102d95780631694505e1461030457806318160ddd1461032f57806319a8ac9e1461035a57806323b872dd146103855761021a565b806303bfda451461021f578063061c82d01461024857806306fdde0314610271578063095ea7b31461029c5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061403f565b6108c9565b005b34801561025457600080fd5b5061026f600480360381019061026a919061403f565b6109b0565b005b34801561027d57600080fd5b50610286610a97565b60405161029391906140fc565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be919061417c565b610b29565b6040516102d091906141d7565b60405180910390f35b3480156102e557600080fd5b506102ee610b47565b6040516102fb9190614201565b60405180910390f35b34801561031057600080fd5b50610319610b51565b604051610326919061427b565b60405180910390f35b34801561033b57600080fd5b50610344610b77565b6040516103519190614201565b60405180910390f35b34801561036657600080fd5b5061036f610b81565b60405161037c91906142a5565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a791906142c0565b610ba7565b6040516103b991906141d7565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e4919061403f565b610c80565b6040516103f69190614201565b60405180910390f35b34801561040b57600080fd5b50610414610cee565b604051610421919061432f565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061434a565b610d05565b005b34801561045f57600080fd5b5061047a6004803603810190610475919061417c565b61103a565b60405161048791906141d7565b60405180910390f35b34801561049c57600080fd5b506104a56110ed565b6040516104b29190614201565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd919061403f565b6110f3565b005b3480156104f057600080fd5b5061050b6004803603810190610506919061434a565b61126f565b005b34801561051957600080fd5b50610534600480360381019061052f91906143a3565b611346565b6040516105419190614201565b60405180910390f35b34801561055657600080fd5b5061055f6113cc565b60405161056c91906142a5565b60405180910390f35b34801561058157600080fd5b5061058a6113f2565b60405161059791906141d7565b60405180910390f35b3480156105ac57600080fd5b506105b5611403565b005b3480156105c357600080fd5b506105de60048036038101906105d9919061434a565b61148b565b005b3480156105ec57600080fd5b506106076004803603810190610602919061434a565b611726565b60405161061491906141d7565b60405180910390f35b34801561062957600080fd5b5061063261177c565b60405161063f9190614201565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a919061434a565b611782565b60405161067c9190614201565b60405180910390f35b34801561069157600080fd5b5061069a61186d565b6040516106a791906142a5565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d2919061403f565b611896565b005b3480156106e557600080fd5b5061070060048036038101906106fb919061434a565b6119c4565b60405161070d91906141d7565b60405180910390f35b34801561072257600080fd5b5061072b611a1a565b60405161073891906140fc565b60405180910390f35b34801561074d57600080fd5b506107686004803603810190610763919061417c565b611aac565b60405161077591906141d7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061417c565b611b79565b6040516107b291906141d7565b60405180910390f35b3480156107c757600080fd5b506107d0611b97565b6040516107dd9190614201565b60405180910390f35b3480156107f257600080fd5b506107fb611b9d565b6040516108089190614201565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061403f565b611ba3565b005b34801561084657600080fd5b50610861600480360381019061085c91906143e3565b611c8a565b60405161086e9190614201565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061434a565b611d11565b005b3480156108ac57600080fd5b506108c760048036038101906108c2919061434a565b611de8565b005b6108d1611edf565b73ffffffffffffffffffffffffffffffffffffffff166108ef61186d565b73ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061446f565b60405180910390fd5b806011819055506109c4601154600f54600d5461096291906144be565b61096c91906144be565b11156109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a49061453e565b60405180910390fd5b50565b6109b8611edf565b73ffffffffffffffffffffffffffffffffffffffff166109d661186d565b73ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a239061446f565b60405180910390fd5b80600d819055506109c4601154600f54600d54610a4991906144be565b610a5391906144be565b1115610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b9061453e565b60405180910390fd5b50565b6060600a8054610aa69061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad29061458d565b8015610b1f5780601f10610af457610100808354040283529160200191610b1f565b820191906000526020600020905b815481529060010190602001808311610b0257829003601f168201915b5050505050905090565b6000610b3d610b36611edf565b8484611ee7565b6001905092915050565b6000600954905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bb48484846120b0565b610c7584610bc0611edf565b610c7085604051806060016040528060288152602001614ff960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c26611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b9092919063ffffffff16565b611ee7565b600190509392505050565b6000600854821115610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90614630565b60405180910390fd5b6000610cd16123a0565b9050610ce681846123cb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b610d0d611edf565b73ffffffffffffffffffffffffffffffffffffffff16610d2b61186d565b73ffffffffffffffffffffffffffffffffffffffff1614610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d789061446f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e049061469c565b60405180910390fd5b60005b600680549050811015611036578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610e4857610e476146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036110235760066001600680549050610ea291906146eb565b81548110610eb357610eb26146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610ef257610ef16146bc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610fe957610fe861471f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611036565b808061102e9061474e565b915050610e10565b5050565b60006110e3611047611edf565b846110de8560036000611058611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b611ee7565b6001905092915050565b600d5481565b60006110fd611edf565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390614808565b60405180910390fd5b6000611197836123f7565b50505050505090506111f181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112498160085461245f90919063ffffffff16565b600881905550611264836009546123e190919063ffffffff16565b600981905550505050565b611277611edf565b73ffffffffffffffffffffffffffffffffffffffff1661129561186d565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e29061446f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060075483111561138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490614874565b60405180910390fd5b816113ae57600061139d846123f7565b5050505050509050809150506113c6565b60006113b9846123f7565b5050505050915050809150505b92915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b61140b611edf565b73ffffffffffffffffffffffffffffffffffffffff1661142961186d565b73ffffffffffffffffffffffffffffffffffffffff161461147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061446f565b60405180910390fd5b6114896000612475565b565b611493611edf565b73ffffffffffffffffffffffffffffffffffffffff166114b161186d565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe9061446f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b9061469c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561166857611624600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c80565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561181d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611868565b611865600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c80565b90505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61189e611edf565b73ffffffffffffffffffffffffffffffffffffffff166118bc61186d565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119099061446f565b60405180910390fd5b6119416127106119336005611925610b77565b61253990919063ffffffff16565b6123cb90919063ffffffff16565b811015611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614906565b60405180910390fd5b806016819055507ff7edd1a72d399eb95c56c07c5a26f00a9096735269c96c75caa8fc4e15bcd5d2816040516119b99190614201565b60405180910390a150565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600b8054611a299061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a559061458d565b8015611aa25780601f10611a7757610100808354040283529160200191611aa2565b820191906000526020600020905b815481529060010190602001808311611a8557829003601f168201915b5050505050905090565b6000611b6f611ab9611edf565b84611b6a856040518060600160405280602581526020016150216025913960036000611ae3611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b9092919063ffffffff16565b611ee7565b6001905092915050565b6000611b8d611b86611edf565b84846120b0565b6001905092915050565b6109c481565b600f5481565b611bab611edf565b73ffffffffffffffffffffffffffffffffffffffff16611bc961186d565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c169061446f565b60405180910390fd5b80600f819055506109c4601154600f54600d54611c3c91906144be565b611c4691906144be565b1115611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e9061453e565b60405180910390fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d19611edf565b73ffffffffffffffffffffffffffffffffffffffff16611d3761186d565b73ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d849061446f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611df0611edf565b73ffffffffffffffffffffffffffffffffffffffff16611e0e61186d565b73ffffffffffffffffffffffffffffffffffffffff1614611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b9061446f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614998565b60405180910390fd5b611edc81612475565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90614a2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90614abc565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120a39190614201565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590614be0565b60405180910390fd5b600081116121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c890614c72565b60405180910390fd5b60006121dc30611782565b9050600060165482101590508080156122025750601560149054906101000a900460ff16155b801561225c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612272575060158054906101000a900460ff165b156122865760165491506122858261254f565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061232d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561233757600090505b61234386868684612625565b505050505050565b6000838311158290612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a91906140fc565b60405180910390fd5b5082840390509392505050565b60008060006123ad612936565b915091506123c481836123cb90919063ffffffff16565b9250505090565b600081836123d99190614cc1565b905092915050565b600081836123ef91906144be565b905092915050565b60008060008060008060008060008060006124118c612be9565b935093509350935060008060006124328f87878761242d6123a0565b612c68565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000818361246d91906146eb565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836125479190614cf2565b905092915050565b6001601560146101000a81548160ff02191690831515021790555060006125806002836123cb90919063ffffffff16565b90506000612597828461245f90919063ffffffff16565b905060004790506125a783612d1c565b60006125bc824761245f90919063ffffffff16565b90506125c88382612f5f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516125fb93929190614d34565b60405180910390a1505050506000601560146101000a81548160ff02191690831515021790555050565b806126335761263261303f565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126d65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126eb576126e6848484613074565b612922565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127a35761279e8484846132e2565b612921565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128475750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561285c57612857848484613550565b612920565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129135761290e848484613729565b61291f565b61291e848484613550565b5b5b5b5b806129305761292f613a2c565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612bac578260016000600684815481106129705761296f6146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a5e57508160026000600684815481106129f6576129f56146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a755760085460075494509450505050612be5565b612b056001600060068481548110612a9057612a8f6146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461245f90919063ffffffff16565b9250612b976002600060068481548110612b2257612b216146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361245f90919063ffffffff16565b91508080612ba49061474e565b91505061294a565b50612bc46007546008546123cb90919063ffffffff16565b821015612bdc57600854600754935093505050612be5565b81819350935050505b9091565b6000806000806000612bfa86613a49565b90506000612c0787613a7b565b90506000612c1488613aad565b90506000612c4f82612c4185612c33888e61245f90919063ffffffff16565b61245f90919063ffffffff16565b61245f90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612c81858a61253990919063ffffffff16565b90506000612c98868a61253990919063ffffffff16565b90506000612caf878a61253990919063ffffffff16565b90506000612cc6888a61253990919063ffffffff16565b90506000612d0182612cf385612ce5888a61245f90919063ffffffff16565b61245f90919063ffffffff16565b61245f90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612d3957612d38614d6b565b5b604051908082528060200260200182016040528015612d675781602001602082028036833780820191505090505b5090503081600081518110612d7f57612d7e6146bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a9190614daf565b81600181518110612e5e57612e5d6146bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ec530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ee7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f29959493929190614ed5565b600060405180830381600087803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b505050505050565b612f8c30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ee7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ff596959493929190614f2f565b60606040518083038185885af1158015613013573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130389190614fa5565b5050505050565b600d54600e81905550600f546010819055506011546012819055506000600d819055506000600f819055506000601181905550565b6000806000806000806000613088886123f7565b96509650965096509650965096506130e888600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317d87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325e82613b3e565b61326781613ce3565b6132718584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132ce9190614201565b60405180910390a350505050505050505050565b60008060008060008060006132f6886123f7565b965096509650965096509650965061335687600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133eb84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134cc82613b3e565b6134d581613ce3565b6134df8584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161353c9190614201565b60405180910390a350505050505050505050565b6000806000806000806000613564886123f7565b96509650965096509650965096506135c487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136a582613b3e565b6136ae81613ce3565b6136b88584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137159190614201565b60405180910390a350505050505050505050565b600080600080600080600061373d886123f7565b965096509650965096509650965061379d88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383287600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c784600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395c86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a882613b3e565b6139b181613ce3565b6139bb8584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613a189190614201565b60405180910390a350505050505050505050565b600e54600d81905550601054600f81905550601254601181905550565b6000613a74612710613a66600d548561253990919063ffffffff16565b6123cb90919063ffffffff16565b9050919050565b6000613aa6612710613a98600f548561253990919063ffffffff16565b6123cb90919063ffffffff16565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613b0d5760009050613b39565b613b36612710613b286011548561253990919063ffffffff16565b6123cb90919063ffffffff16565b90505b919050565b6000613b486123a0565b90506000613b5f828461253990919063ffffffff16565b9050613bb381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cde57613c9a83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000811115613fc7576000613cf66123a0565b90506000613d0d828461253990919063ffffffff16565b9050613d838160016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b60016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f3657613ed08360026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b60026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613f77611edf565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613fbc9190614201565b60405180910390a350505b50565b613fdf8260085461245f90919063ffffffff16565b600881905550613ffa816009546123e190919063ffffffff16565b6009819055505050565b600080fd5b6000819050919050565b61401c81614009565b811461402757600080fd5b50565b60008135905061403981614013565b92915050565b60006020828403121561405557614054614004565b5b60006140638482850161402a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140a657808201518184015260208101905061408b565b60008484015250505050565b6000601f19601f8301169050919050565b60006140ce8261406c565b6140d88185614077565b93506140e8818560208601614088565b6140f1816140b2565b840191505092915050565b6000602082019050818103600083015261411681846140c3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141498261411e565b9050919050565b6141598161413e565b811461416457600080fd5b50565b60008135905061417681614150565b92915050565b6000806040838503121561419357614192614004565b5b60006141a185828601614167565b92505060206141b28582860161402a565b9150509250929050565b60008115159050919050565b6141d1816141bc565b82525050565b60006020820190506141ec60008301846141c8565b92915050565b6141fb81614009565b82525050565b600060208201905061421660008301846141f2565b92915050565b6000819050919050565b600061424161423c6142378461411e565b61421c565b61411e565b9050919050565b600061425382614226565b9050919050565b600061426582614248565b9050919050565b6142758161425a565b82525050565b6000602082019050614290600083018461426c565b92915050565b61429f8161413e565b82525050565b60006020820190506142ba6000830184614296565b92915050565b6000806000606084860312156142d9576142d8614004565b5b60006142e786828701614167565b93505060206142f886828701614167565b92505060406143098682870161402a565b9150509250925092565b600060ff82169050919050565b61432981614313565b82525050565b60006020820190506143446000830184614320565b92915050565b6000602082840312156143605761435f614004565b5b600061436e84828501614167565b91505092915050565b614380816141bc565b811461438b57600080fd5b50565b60008135905061439d81614377565b92915050565b600080604083850312156143ba576143b9614004565b5b60006143c88582860161402a565b92505060206143d98582860161438e565b9150509250929050565b600080604083850312156143fa576143f9614004565b5b600061440885828601614167565b925050602061441985828601614167565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614459602083614077565b915061446482614423565b602082019050919050565b600060208201905081810360008301526144888161444c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c982614009565b91506144d483614009565b92508282019050808211156144ec576144eb61448f565b5b92915050565b7f546f74616c20666565206973206f766572203235250000000000000000000000600082015250565b6000614528601583614077565b9150614533826144f2565b602082019050919050565b600060208201905081810360008301526145578161451b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a557607f821691505b6020821081036145b8576145b761455e565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061461a602a83614077565b9150614625826145be565b604082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614686601b83614077565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006146f682614009565b915061470183614009565b92508282039050818111156147195761471861448f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061475982614009565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361478b5761478a61448f565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006147f2602c83614077565b91506147fd82614796565b604082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b600061485e601f83614077565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b7f537761706261636b20616d6f756e742073686f756c64206265206174206c656160008201527f737420302e303525206f6620746f74616c20737570706c790000000000000000602082015250565b60006148f0603883614077565b91506148fb82614894565b604082019050919050565b6000602082019050818103600083015261491f816148e3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614982602683614077565b915061498d82614926565b604082019050919050565b600060208201905081810360008301526149b181614975565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a14602483614077565b9150614a1f826149b8565b604082019050919050565b60006020820190508181036000830152614a4381614a07565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa6602283614077565b9150614ab182614a4a565b604082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602583614077565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bca602383614077565b9150614bd582614b6e565b604082019050919050565b60006020820190508181036000830152614bf981614bbd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614c5c602983614077565b9150614c6782614c00565b604082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ccc82614009565b9150614cd783614009565b925082614ce757614ce6614c92565b5b828204905092915050565b6000614cfd82614009565b9150614d0883614009565b9250828202614d1681614009565b91508282048414831517614d2d57614d2c61448f565b5b5092915050565b6000606082019050614d4960008301866141f2565b614d5660208301856141f2565b614d6360408301846141f2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614da981614150565b92915050565b600060208284031215614dc557614dc4614004565b5b6000614dd384828501614d9a565b91505092915050565b6000819050919050565b6000614e01614dfc614df784614ddc565b61421c565b614009565b9050919050565b614e1181614de6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4c8161413e565b82525050565b6000614e5e8383614e43565b60208301905092915050565b6000602082019050919050565b6000614e8282614e17565b614e8c8185614e22565b9350614e9783614e33565b8060005b83811015614ec8578151614eaf8882614e52565b9750614eba83614e6a565b925050600181019050614e9b565b5085935050505092915050565b600060a082019050614eea60008301886141f2565b614ef76020830187614e08565b8181036040830152614f098186614e77565b9050614f186060830185614296565b614f2560808301846141f2565b9695505050505050565b600060c082019050614f446000830189614296565b614f5160208301886141f2565b614f5e6040830187614e08565b614f6b6060830186614e08565b614f786080830185614296565b614f8560a08301846141f2565b979650505050505050565b600081519050614f9f81614013565b92915050565b600080600060608486031215614fbe57614fbd614004565b5b6000614fcc86828701614f90565b9350506020614fdd86828701614f90565b9250506040614fee86828701614f90565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059267106f8b93042da3a079c1240d07456df8be49fb9781ed53dc6c844ce71d764736f6c63430008130033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000004b45ffe282d8783b0000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000de7e52e38b2acc47aac12da689823ebb69f39ffa00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000074d6176726f64690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4d4d656d000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102135760003560e01c80634a74bb021161011857806395d89b41116100a0578063d31871a11161006f578063d31871a1146107e6578063dd225f6114610811578063dd62ed3e1461083a578063ea2f0b3714610877578063f2fde38b146108a05761021a565b806395d89b4114610716578063a457c2d714610741578063a9059cbb1461077e578063bc063e1a146107bb5761021a565b8063605e4e57116100e7578063605e4e571461061d57806370a08231146106485780637595c29014610685578063796431d0146106b057806388f82020146106d95761021a565b80634a74bb02146105755780634e9d4a51146105a057806352390c02146105b75780635342acb4146105e05761021a565b80632d8381191161019b5780633b124fe71161016a5780633b124fe7146104905780633bd5d173146104bb578063437823ec146104e45780634549b0391461050d57806349bd5a5e1461054a5761021a565b80632d838119146103c2578063313ce567146103ff5780633685d4191461042a57806339509351146104535761021a565b806313114a9d116101e257806313114a9d146102d95780631694505e1461030457806318160ddd1461032f57806319a8ac9e1461035a57806323b872dd146103855761021a565b806303bfda451461021f578063061c82d01461024857806306fdde0314610271578063095ea7b31461029c5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061403f565b6108c9565b005b34801561025457600080fd5b5061026f600480360381019061026a919061403f565b6109b0565b005b34801561027d57600080fd5b50610286610a97565b60405161029391906140fc565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be919061417c565b610b29565b6040516102d091906141d7565b60405180910390f35b3480156102e557600080fd5b506102ee610b47565b6040516102fb9190614201565b60405180910390f35b34801561031057600080fd5b50610319610b51565b604051610326919061427b565b60405180910390f35b34801561033b57600080fd5b50610344610b77565b6040516103519190614201565b60405180910390f35b34801561036657600080fd5b5061036f610b81565b60405161037c91906142a5565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a791906142c0565b610ba7565b6040516103b991906141d7565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e4919061403f565b610c80565b6040516103f69190614201565b60405180910390f35b34801561040b57600080fd5b50610414610cee565b604051610421919061432f565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061434a565b610d05565b005b34801561045f57600080fd5b5061047a6004803603810190610475919061417c565b61103a565b60405161048791906141d7565b60405180910390f35b34801561049c57600080fd5b506104a56110ed565b6040516104b29190614201565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd919061403f565b6110f3565b005b3480156104f057600080fd5b5061050b6004803603810190610506919061434a565b61126f565b005b34801561051957600080fd5b50610534600480360381019061052f91906143a3565b611346565b6040516105419190614201565b60405180910390f35b34801561055657600080fd5b5061055f6113cc565b60405161056c91906142a5565b60405180910390f35b34801561058157600080fd5b5061058a6113f2565b60405161059791906141d7565b60405180910390f35b3480156105ac57600080fd5b506105b5611403565b005b3480156105c357600080fd5b506105de60048036038101906105d9919061434a565b61148b565b005b3480156105ec57600080fd5b506106076004803603810190610602919061434a565b611726565b60405161061491906141d7565b60405180910390f35b34801561062957600080fd5b5061063261177c565b60405161063f9190614201565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a919061434a565b611782565b60405161067c9190614201565b60405180910390f35b34801561069157600080fd5b5061069a61186d565b6040516106a791906142a5565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d2919061403f565b611896565b005b3480156106e557600080fd5b5061070060048036038101906106fb919061434a565b6119c4565b60405161070d91906141d7565b60405180910390f35b34801561072257600080fd5b5061072b611a1a565b60405161073891906140fc565b60405180910390f35b34801561074d57600080fd5b506107686004803603810190610763919061417c565b611aac565b60405161077591906141d7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061417c565b611b79565b6040516107b291906141d7565b60405180910390f35b3480156107c757600080fd5b506107d0611b97565b6040516107dd9190614201565b60405180910390f35b3480156107f257600080fd5b506107fb611b9d565b6040516108089190614201565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061403f565b611ba3565b005b34801561084657600080fd5b50610861600480360381019061085c91906143e3565b611c8a565b60405161086e9190614201565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061434a565b611d11565b005b3480156108ac57600080fd5b506108c760048036038101906108c2919061434a565b611de8565b005b6108d1611edf565b73ffffffffffffffffffffffffffffffffffffffff166108ef61186d565b73ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061446f565b60405180910390fd5b806011819055506109c4601154600f54600d5461096291906144be565b61096c91906144be565b11156109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a49061453e565b60405180910390fd5b50565b6109b8611edf565b73ffffffffffffffffffffffffffffffffffffffff166109d661186d565b73ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a239061446f565b60405180910390fd5b80600d819055506109c4601154600f54600d54610a4991906144be565b610a5391906144be565b1115610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b9061453e565b60405180910390fd5b50565b6060600a8054610aa69061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad29061458d565b8015610b1f5780601f10610af457610100808354040283529160200191610b1f565b820191906000526020600020905b815481529060010190602001808311610b0257829003601f168201915b5050505050905090565b6000610b3d610b36611edf565b8484611ee7565b6001905092915050565b6000600954905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bb48484846120b0565b610c7584610bc0611edf565b610c7085604051806060016040528060288152602001614ff960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c26611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b9092919063ffffffff16565b611ee7565b600190509392505050565b6000600854821115610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90614630565b60405180910390fd5b6000610cd16123a0565b9050610ce681846123cb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b610d0d611edf565b73ffffffffffffffffffffffffffffffffffffffff16610d2b61186d565b73ffffffffffffffffffffffffffffffffffffffff1614610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d789061446f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e049061469c565b60405180910390fd5b60005b600680549050811015611036578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610e4857610e476146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036110235760066001600680549050610ea291906146eb565b81548110610eb357610eb26146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610ef257610ef16146bc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610fe957610fe861471f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611036565b808061102e9061474e565b915050610e10565b5050565b60006110e3611047611edf565b846110de8560036000611058611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b611ee7565b6001905092915050565b600d5481565b60006110fd611edf565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390614808565b60405180910390fd5b6000611197836123f7565b50505050505090506111f181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112498160085461245f90919063ffffffff16565b600881905550611264836009546123e190919063ffffffff16565b600981905550505050565b611277611edf565b73ffffffffffffffffffffffffffffffffffffffff1661129561186d565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e29061446f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060075483111561138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490614874565b60405180910390fd5b816113ae57600061139d846123f7565b5050505050509050809150506113c6565b60006113b9846123f7565b5050505050915050809150505b92915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b61140b611edf565b73ffffffffffffffffffffffffffffffffffffffff1661142961186d565b73ffffffffffffffffffffffffffffffffffffffff161461147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061446f565b60405180910390fd5b6114896000612475565b565b611493611edf565b73ffffffffffffffffffffffffffffffffffffffff166114b161186d565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe9061446f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b9061469c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561166857611624600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c80565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561181d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611868565b611865600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c80565b90505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61189e611edf565b73ffffffffffffffffffffffffffffffffffffffff166118bc61186d565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119099061446f565b60405180910390fd5b6119416127106119336005611925610b77565b61253990919063ffffffff16565b6123cb90919063ffffffff16565b811015611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614906565b60405180910390fd5b806016819055507ff7edd1a72d399eb95c56c07c5a26f00a9096735269c96c75caa8fc4e15bcd5d2816040516119b99190614201565b60405180910390a150565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600b8054611a299061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a559061458d565b8015611aa25780601f10611a7757610100808354040283529160200191611aa2565b820191906000526020600020905b815481529060010190602001808311611a8557829003601f168201915b5050505050905090565b6000611b6f611ab9611edf565b84611b6a856040518060600160405280602581526020016150216025913960036000611ae3611edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b9092919063ffffffff16565b611ee7565b6001905092915050565b6000611b8d611b86611edf565b84846120b0565b6001905092915050565b6109c481565b600f5481565b611bab611edf565b73ffffffffffffffffffffffffffffffffffffffff16611bc961186d565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c169061446f565b60405180910390fd5b80600f819055506109c4601154600f54600d54611c3c91906144be565b611c4691906144be565b1115611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e9061453e565b60405180910390fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d19611edf565b73ffffffffffffffffffffffffffffffffffffffff16611d3761186d565b73ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d849061446f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611df0611edf565b73ffffffffffffffffffffffffffffffffffffffff16611e0e61186d565b73ffffffffffffffffffffffffffffffffffffffff1614611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b9061446f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614998565b60405180910390fd5b611edc81612475565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90614a2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90614abc565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120a39190614201565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590614be0565b60405180910390fd5b600081116121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c890614c72565b60405180910390fd5b60006121dc30611782565b9050600060165482101590508080156122025750601560149054906101000a900460ff16155b801561225c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612272575060158054906101000a900460ff165b156122865760165491506122858261254f565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061232d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561233757600090505b61234386868684612625565b505050505050565b6000838311158290612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a91906140fc565b60405180910390fd5b5082840390509392505050565b60008060006123ad612936565b915091506123c481836123cb90919063ffffffff16565b9250505090565b600081836123d99190614cc1565b905092915050565b600081836123ef91906144be565b905092915050565b60008060008060008060008060008060006124118c612be9565b935093509350935060008060006124328f87878761242d6123a0565b612c68565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000818361246d91906146eb565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836125479190614cf2565b905092915050565b6001601560146101000a81548160ff02191690831515021790555060006125806002836123cb90919063ffffffff16565b90506000612597828461245f90919063ffffffff16565b905060004790506125a783612d1c565b60006125bc824761245f90919063ffffffff16565b90506125c88382612f5f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516125fb93929190614d34565b60405180910390a1505050506000601560146101000a81548160ff02191690831515021790555050565b806126335761263261303f565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126d65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126eb576126e6848484613074565b612922565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127a35761279e8484846132e2565b612921565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128475750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561285c57612857848484613550565b612920565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129135761290e848484613729565b61291f565b61291e848484613550565b5b5b5b5b806129305761292f613a2c565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612bac578260016000600684815481106129705761296f6146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a5e57508160026000600684815481106129f6576129f56146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a755760085460075494509450505050612be5565b612b056001600060068481548110612a9057612a8f6146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461245f90919063ffffffff16565b9250612b976002600060068481548110612b2257612b216146bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361245f90919063ffffffff16565b91508080612ba49061474e565b91505061294a565b50612bc46007546008546123cb90919063ffffffff16565b821015612bdc57600854600754935093505050612be5565b81819350935050505b9091565b6000806000806000612bfa86613a49565b90506000612c0787613a7b565b90506000612c1488613aad565b90506000612c4f82612c4185612c33888e61245f90919063ffffffff16565b61245f90919063ffffffff16565b61245f90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612c81858a61253990919063ffffffff16565b90506000612c98868a61253990919063ffffffff16565b90506000612caf878a61253990919063ffffffff16565b90506000612cc6888a61253990919063ffffffff16565b90506000612d0182612cf385612ce5888a61245f90919063ffffffff16565b61245f90919063ffffffff16565b61245f90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612d3957612d38614d6b565b5b604051908082528060200260200182016040528015612d675781602001602082028036833780820191505090505b5090503081600081518110612d7f57612d7e6146bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a9190614daf565b81600181518110612e5e57612e5d6146bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ec530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ee7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f29959493929190614ed5565b600060405180830381600087803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b505050505050565b612f8c30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ee7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ff596959493929190614f2f565b60606040518083038185885af1158015613013573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130389190614fa5565b5050505050565b600d54600e81905550600f546010819055506011546012819055506000600d819055506000600f819055506000601181905550565b6000806000806000806000613088886123f7565b96509650965096509650965096506130e888600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317d87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325e82613b3e565b61326781613ce3565b6132718584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132ce9190614201565b60405180910390a350505050505050505050565b60008060008060008060006132f6886123f7565b965096509650965096509650965061335687600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133eb84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134cc82613b3e565b6134d581613ce3565b6134df8584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161353c9190614201565b60405180910390a350505050505050505050565b6000806000806000806000613564886123f7565b96509650965096509650965096506135c487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136a582613b3e565b6136ae81613ce3565b6136b88584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137159190614201565b60405180910390a350505050505050505050565b600080600080600080600061373d886123f7565b965096509650965096509650965061379d88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383287600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245f90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c784600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395c86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a882613b3e565b6139b181613ce3565b6139bb8584613fca565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613a189190614201565b60405180910390a350505050505050505050565b600e54600d81905550601054600f81905550601254601181905550565b6000613a74612710613a66600d548561253990919063ffffffff16565b6123cb90919063ffffffff16565b9050919050565b6000613aa6612710613a98600f548561253990919063ffffffff16565b6123cb90919063ffffffff16565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613b0d5760009050613b39565b613b36612710613b286011548561253990919063ffffffff16565b6123cb90919063ffffffff16565b90505b919050565b6000613b486123a0565b90506000613b5f828461253990919063ffffffff16565b9050613bb381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cde57613c9a83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000811115613fc7576000613cf66123a0565b90506000613d0d828461253990919063ffffffff16565b9050613d838160016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b60016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f3657613ed08360026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e190919063ffffffff16565b60026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613f77611edf565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613fbc9190614201565b60405180910390a350505b50565b613fdf8260085461245f90919063ffffffff16565b600881905550613ffa816009546123e190919063ffffffff16565b6009819055505050565b600080fd5b6000819050919050565b61401c81614009565b811461402757600080fd5b50565b60008135905061403981614013565b92915050565b60006020828403121561405557614054614004565b5b60006140638482850161402a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140a657808201518184015260208101905061408b565b60008484015250505050565b6000601f19601f8301169050919050565b60006140ce8261406c565b6140d88185614077565b93506140e8818560208601614088565b6140f1816140b2565b840191505092915050565b6000602082019050818103600083015261411681846140c3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141498261411e565b9050919050565b6141598161413e565b811461416457600080fd5b50565b60008135905061417681614150565b92915050565b6000806040838503121561419357614192614004565b5b60006141a185828601614167565b92505060206141b28582860161402a565b9150509250929050565b60008115159050919050565b6141d1816141bc565b82525050565b60006020820190506141ec60008301846141c8565b92915050565b6141fb81614009565b82525050565b600060208201905061421660008301846141f2565b92915050565b6000819050919050565b600061424161423c6142378461411e565b61421c565b61411e565b9050919050565b600061425382614226565b9050919050565b600061426582614248565b9050919050565b6142758161425a565b82525050565b6000602082019050614290600083018461426c565b92915050565b61429f8161413e565b82525050565b60006020820190506142ba6000830184614296565b92915050565b6000806000606084860312156142d9576142d8614004565b5b60006142e786828701614167565b93505060206142f886828701614167565b92505060406143098682870161402a565b9150509250925092565b600060ff82169050919050565b61432981614313565b82525050565b60006020820190506143446000830184614320565b92915050565b6000602082840312156143605761435f614004565b5b600061436e84828501614167565b91505092915050565b614380816141bc565b811461438b57600080fd5b50565b60008135905061439d81614377565b92915050565b600080604083850312156143ba576143b9614004565b5b60006143c88582860161402a565b92505060206143d98582860161438e565b9150509250929050565b600080604083850312156143fa576143f9614004565b5b600061440885828601614167565b925050602061441985828601614167565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614459602083614077565b915061446482614423565b602082019050919050565b600060208201905081810360008301526144888161444c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c982614009565b91506144d483614009565b92508282019050808211156144ec576144eb61448f565b5b92915050565b7f546f74616c20666565206973206f766572203235250000000000000000000000600082015250565b6000614528601583614077565b9150614533826144f2565b602082019050919050565b600060208201905081810360008301526145578161451b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a557607f821691505b6020821081036145b8576145b761455e565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061461a602a83614077565b9150614625826145be565b604082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614686601b83614077565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006146f682614009565b915061470183614009565b92508282039050818111156147195761471861448f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061475982614009565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361478b5761478a61448f565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006147f2602c83614077565b91506147fd82614796565b604082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b600061485e601f83614077565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b7f537761706261636b20616d6f756e742073686f756c64206265206174206c656160008201527f737420302e303525206f6620746f74616c20737570706c790000000000000000602082015250565b60006148f0603883614077565b91506148fb82614894565b604082019050919050565b6000602082019050818103600083015261491f816148e3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614982602683614077565b915061498d82614926565b604082019050919050565b600060208201905081810360008301526149b181614975565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a14602483614077565b9150614a1f826149b8565b604082019050919050565b60006020820190508181036000830152614a4381614a07565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa6602283614077565b9150614ab182614a4a565b604082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602583614077565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bca602383614077565b9150614bd582614b6e565b604082019050919050565b60006020820190508181036000830152614bf981614bbd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614c5c602983614077565b9150614c6782614c00565b604082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ccc82614009565b9150614cd783614009565b925082614ce757614ce6614c92565b5b828204905092915050565b6000614cfd82614009565b9150614d0883614009565b9250828202614d1681614009565b91508282048414831517614d2d57614d2c61448f565b5b5092915050565b6000606082019050614d4960008301866141f2565b614d5660208301856141f2565b614d6360408301846141f2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614da981614150565b92915050565b600060208284031215614dc557614dc4614004565b5b6000614dd384828501614d9a565b91505092915050565b6000819050919050565b6000614e01614dfc614df784614ddc565b61421c565b614009565b9050919050565b614e1181614de6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4c8161413e565b82525050565b6000614e5e8383614e43565b60208301905092915050565b6000602082019050919050565b6000614e8282614e17565b614e8c8185614e22565b9350614e9783614e33565b8060005b83811015614ec8578151614eaf8882614e52565b9750614eba83614e6a565b925050600181019050614e9b565b5085935050505092915050565b600060a082019050614eea60008301886141f2565b614ef76020830187614e08565b8181036040830152614f098186614e77565b9050614f186060830185614296565b614f2560808301846141f2565b9695505050505050565b600060c082019050614f446000830189614296565b614f5160208301886141f2565b614f5e6040830187614e08565b614f6b6060830186614e08565b614f786080830185614296565b614f8560a08301846141f2565b979650505050505050565b600081519050614f9f81614013565b92915050565b600080600060608486031215614fbe57614fbd614004565b5b6000614fcc86828701614f90565b9350506020614fdd86828701614f90565b9250506040614fee86828701614f90565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059267106f8b93042da3a079c1240d07456df8be49fb9781ed53dc6c844ce71d764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000004b45ffe282d8783b0000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000de7e52e38b2acc47aac12da689823ebb69f39ffa00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000074d6176726f64690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4d4d656d000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Mavrodi
Arg [1] : symbol_ (string): MMMem
Arg [2] : totalSupply_ (uint256): 91000000000000000000000000
Arg [3] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : charityAddress_ (address): 0xdE7E52E38b2acc47aAc12da689823ebb69F39Ffa
Arg [5] : taxFee_ (uint16): 1000
Arg [6] : taxToTheCashier_ (uint16): 1000
Arg [7] : supportForThePeople_ (uint16): 500
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000004b45ffe282d8783b000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 000000000000000000000000de7e52e38b2acc47aac12da689823ebb69f39ffa
Arg [5] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [6] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [9] : 4d6176726f646900000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [11] : 4d4d4d656d000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
16682:23152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26623:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26080:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20232:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21222:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22721:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17699:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20509:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17782:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21423:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23811:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20418:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24501:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21877:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17373:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22816:461;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25843:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23285:518;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17747:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17849:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7840:93;;;;;;;;;;;;;:::i;:::-;;24161:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32460:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17580:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20617:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7185:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26921:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22593:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20323:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22185:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20823:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16758:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17468:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26326:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21030:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25962:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8088:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26623:290;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26744:19:::1;26721:20;:42;;;;16792:9;26825:20;;26806:16;;26796:7;;:26;;;;:::i;:::-;:49;;;;:::i;:::-;:60;;26774:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;26623:290:::0;:::o;26080:238::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26162:6:::1;26152:7;:16;;;;16792:9;26230:20;;26211:16;;26201:7;;:26;;;;:::i;:::-;:49;;;;:::i;:::-;:60;;26179:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;26080:238:::0;:::o;20232:83::-;20269:13;20302:5;20295:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20232:83;:::o;21222:193::-;21324:4;21346:39;21355:12;:10;:12::i;:::-;21369:7;21378:6;21346:8;:39::i;:::-;21403:4;21396:11;;21222:193;;;;:::o;22721:87::-;22763:7;22790:10;;22783:17;;22721:87;:::o;17699:41::-;;;;;;;;;;;;;:::o;20509:100::-;20562:7;20589:12;;20582:19;;20509:100;:::o;17782:30::-;;;;;;;;;;;;;:::o;21423:446::-;21555:4;21572:36;21582:6;21590:9;21601:6;21572:9;:36::i;:::-;21619:220;21642:6;21663:12;:10;:12::i;:::-;21690:138;21746:6;21690:138;;;;;;;;;;;;;;;;;:11;:19;21702:6;21690:19;;;;;;;;;;;;;;;:33;21710:12;:10;:12::i;:::-;21690:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;21619:8;:220::i;:::-;21857:4;21850:11;;21423:446;;;;;:::o;23811:342::-;23910:7;23973:12;;23957;:28;;23935:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;24066:19;24088:10;:8;:10::i;:::-;24066:32;;24116:29;24133:11;24116:12;:16;;:29;;;;:::i;:::-;24109:36;;;23811:342;;;:::o;20418:83::-;20459:5;20484:9;;;;;;;;;;;20477:16;;20418:83;:::o;24501:477::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24581:11:::1;:20;24593:7;24581:20;;;;;;;;;;;;;;;;;;;;;;;;;24573:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24649:9;24644:327;24668:9;:16;;;;24664:1;:20;24644:327;;;24726:7;24710:23;;:9;24720:1;24710:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;24706:254:::1;;24769:9;24798:1;24779:9;:16;;;;:20;;;;:::i;:::-;24769:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24754:9;24764:1;24754:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24838:1;24819:7;:16;24827:7;24819:16;;;;;;;;;;;;;;;:20;;;;24881:5;24858:11;:20;24870:7;24858:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24905:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;24939:5;;24706:254;24686:3;;;;;:::i;:::-;;;;24644:327;;;;24501:477:::0;:::o;21877:300::-;21992:4;22014:133;22037:12;:10;:12::i;:::-;22064:7;22086:50;22125:10;22086:11;:25;22098:12;:10;:12::i;:::-;22086:25;;;;;;;;;;;;;;;:34;22112:7;22086:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22014:8;:133::i;:::-;22165:4;22158:11;;21877:300;;;;:::o;17373:22::-;;;;:::o;22816:461::-;22873:14;22890:12;:10;:12::i;:::-;22873:29;;22936:11;:19;22948:6;22936:19;;;;;;;;;;;;;;;;;;;;;;;;;22935:20;22913:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;23039:20;23075:24;23086:12;23075:10;:24::i;:::-;23038:61;;;;;;;;23128:33;23148:12;23128:7;:15;23136:6;23128:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;23110:7;:15;23118:6;23110:15;;;;;;;;;;;;;;;:51;;;;23187:30;23204:12;23187;;:16;;:30;;;;:::i;:::-;23172:12;:45;;;;23241:28;23256:12;23241:10;;:14;;:28;;;;:::i;:::-;23228:10;:41;;;;22862:415;;22816:461;:::o;25843:111::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25942:4:::1;25912:18;:27;25931:7;25912:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25843:111:::0;:::o;23285:518::-;23408:7;23457:12;;23441;:28;;23433:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23521:17;23516:280;;23556:20;23592:24;23603:12;23592:10;:24::i;:::-;23555:61;;;;;;;;23638:12;23631:19;;;;;23516:280;23686:23;23723:24;23734:12;23723:10;:24::i;:::-;23683:64;;;;;;;;23769:15;23762:22;;;23285:518;;;;;:::o;17747:28::-;;;;;;;;;;;;;:::o;17849:33::-;;;;;;;;;;;;:::o;7840:93::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7904:21:::1;7922:1;7904:9;:21::i;:::-;7840:93::o:0;24161:332::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24242:11:::1;:20;24254:7;24242:20;;;;;;;;;;;;;;;;;;;;;;;;;24241:21;24233:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24328:1;24309:7;:16;24317:7;24309:16;;;;;;;;;;;;;;;;:20;24305:109;;;24365:37;24385:7;:16;24393:7;24385:16;;;;;;;;;;;;;;;;24365:19;:37::i;:::-;24346:7;:16;24354:7;24346:16;;;;;;;;;;;;;;;:56;;;;24305:109;24447:4;24424:11;:20;24436:7;24424:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;24462:9;24477:7;24462:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24161:332:::0;:::o;32460:124::-;32525:4;32549:18;:27;32568:7;32549:27;;;;;;;;;;;;;;;;;;;;;;;;;32542:34;;32460:124;;;:::o;17580:35::-;;;;:::o;20617:198::-;20683:7;20707:11;:20;20719:7;20707:20;;;;;;;;;;;;;;;;;;;;;;;;;20703:49;;;20736:7;:16;20744:7;20736:16;;;;;;;;;;;;;;;;20729:23;;;;20703:49;20770:37;20790:7;:16;20798:7;20790:16;;;;;;;;;;;;;;;;20770:19;:37::i;:::-;20763:44;;20617:198;;;;:::o;7185:89::-;7233:7;7260:6;;;;;;;;;;;7253:13;;7185:89;:::o;26921:334::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27030:31:::1;27055:5;27030:20;27048:1;27030:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;27019:7;:42;;26997:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;27188:7;27156:29;:39;;;;27211:36;27239:7;27211:36;;;;;;:::i;:::-;;;;;;;;26921:334:::0;:::o;22593:120::-;22661:4;22685:11;:20;22697:7;22685:20;;;;;;;;;;;;;;;;;;;;;;;;;22678:27;;22593:120;;;:::o;20323:87::-;20362:13;20395:7;20388:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20323:87;:::o;22185:400::-;22305:4;22327:228;22350:12;:10;:12::i;:::-;22377:7;22399:145;22456:15;22399:145;;;;;;;;;;;;;;;;;:11;:25;22411:12;:10;:12::i;:::-;22399:25;;;;;;;;;;;;;;;:34;22425:7;22399:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;22327:8;:228::i;:::-;22573:4;22566:11;;22185:400;;;;:::o;20823:199::-;20928:4;20950:42;20960:12;:10;:12::i;:::-;20974:9;20985:6;20950:9;:42::i;:::-;21010:4;21003:11;;20823:199;;;;:::o;16758:43::-;16792:9;16758:43;:::o;17468:31::-;;;;:::o;26326:289::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26450:15:::1;26431:16;:34;;;;16792:9;26527:20;;26508:16;;26498:7;;:26;;;;:::i;:::-;:49;;;;:::i;:::-;:60;;26476:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;26326:289:::0;:::o;21030:184::-;21147:7;21179:11;:18;21191:5;21179:18;;;;;;;;;;;;;;;:27;21198:7;21179:27;;;;;;;;;;;;;;;;21172:34;;21030:184;;;;:::o;25962:110::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26059:5:::1;26029:18;:27;26048:7;26029:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25962:110:::0;:::o;8088:192::-;7420:12;:10;:12::i;:::-;7407:25;;:9;:7;:9::i;:::-;:25;;;7399:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8197:1:::1;8177:22;;:8;:22;;::::0;8169:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8253:19;8263:8;8253:9;:19::i;:::-;8088:192:::0;:::o;6061:98::-;6114:7;6141:10;6134:17;;6061:98;:::o;32592:371::-;32736:1;32719:19;;:5;:19;;;32711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32817:1;32798:21;;:7;:21;;;32790:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32901:6;32871:11;:18;32883:5;32871:18;;;;;;;;;;;;;;;:27;32890:7;32871:27;;;;;;;;;;;;;;;:36;;;;32939:7;32923:32;;32932:5;32923:32;;;32948:6;32923:32;;;;;;:::i;:::-;;;;;;;;32592:371;;;:::o;32971:1531::-;33109:1;33093:18;;:4;:18;;;33085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33186:1;33172:16;;:2;:16;;;33164:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;33256:1;33247:6;:10;33239:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;33598:28;33629:24;33647:4;33629:9;:24::i;:::-;33598:55;;33666:24;33730:29;;33693:20;:66;;33666:93;;33788:19;:53;;;;;33825:16;;;;;;;;;;;33824:17;33788:53;:91;;;;;33866:13;;;;;;;;;;;33858:21;;:4;:21;;;;33788:91;:129;;;;;33896:21;;;;;;;;;;33788:129;33770:318;;;33967:29;;33944:52;;34040:36;34055:20;34040:14;:36::i;:::-;33770:318;34161:12;34176:4;34161:19;;34281:18;:24;34300:4;34281:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;34309:18;:22;34328:2;34309:22;;;;;;;;;;;;;;;;;;;;;;;;;34281:50;34277:98;;;34358:5;34348:15;;34277:98;34453:41;34468:4;34474:2;34478:6;34486:7;34453:14;:41::i;:::-;33074:1428;;;32971:1531;;;:::o;13448:240::-;13568:7;13626:1;13621;:6;;13629:12;13613:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13668:1;13664;:5;13657:12;;13448:240;;;;;:::o;29684:164::-;29726:7;29747:15;29764;29783:19;:17;:19::i;:::-;29746:56;;;;29820:20;29832:7;29820;:11;;:20;;;;:::i;:::-;29813:27;;;;29684:164;:::o;12306:98::-;12364:7;12395:1;12391;:5;;;;:::i;:::-;12384:12;;12306:98;;;;:::o;11169:::-;11227:7;11258:1;11254;:5;;;;:::i;:::-;11247:12;;11169:98;;;;:::o;27521:866::-;27626:7;27648;27670;27692;27714;27736;27758;27808:23;27846:12;27873:18;27906:16;27936:25;27948:12;27936:11;:25::i;:::-;27793:168;;;;;;;;27973:20;27995:23;28020:12;28036:141;28062:12;28089:4;28108:10;28133:8;28156:10;:8;:10::i;:::-;28036:11;:141::i;:::-;27972:205;;;;;;28210:12;28237:15;28267:4;28286:15;28316:4;28335:10;28360:8;28188:191;;;;;;;;;;;;;;;;;;;;;27521:866;;;;;;;;;:::o;11550:98::-;11608:7;11639:1;11635;:5;;;;:::i;:::-;11628:12;;11550:98;;;;:::o;8288:173::-;8344:16;8363:6;;;;;;;;;;;8344:25;;8389:8;8380:6;;:17;;;;;;;;;;;;;;;;;;8444:8;8413:40;;8434:8;8413:40;;;;;;;;;;;;8333:128;8288:173;:::o;11907:98::-;11965:7;11996:1;11992;:5;;;;:::i;:::-;11985:12;;11907:98;;;;:::o;34510:977::-;18257:4;18238:16;;:23;;;;;;;;;;;;;;;;;;34646:12:::1;34661:27;34686:1;34661:20;:24;;:27;;;;:::i;:::-;34646:42;;34699:17;34719:30;34744:4;34719:20;:24;;:30;;;;:::i;:::-;34699:50;;35027:22;35052:21;35027:46;;35118:22;35135:4;35118:16;:22::i;:::-;35271:18;35292:41;35318:14;35292:21;:25;;:41;;;;:::i;:::-;35271:62;;35383:35;35396:9;35407:10;35383:12;:35::i;:::-;35436:43;35451:4;35457:10;35469:9;35436:43;;;;;;;;:::i;:::-;;;;;;;;34584:903;;;;18303:5:::0;18284:16;;:24;;;;;;;;;;;;;;;;;;34510:977;:::o;36694:838::-;36850:7;36845:28;;36859:14;:12;:14::i;:::-;36845:28;36890:11;:19;36902:6;36890:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;36914:11;:22;36926:9;36914:22;;;;;;;;;;;;;;;;;;;;;;;;;36913:23;36890:46;36886:597;;;36953:48;36975:6;36983:9;36994:6;36953:21;:48::i;:::-;36886:597;;;37024:11;:19;37036:6;37024:19;;;;;;;;;;;;;;;;;;;;;;;;;37023:20;:46;;;;;37047:11;:22;37059:9;37047:22;;;;;;;;;;;;;;;;;;;;;;;;;37023:46;37019:464;;;37086:46;37106:6;37114:9;37125:6;37086:19;:46::i;:::-;37019:464;;;37155:11;:19;37167:6;37155:19;;;;;;;;;;;;;;;;;;;;;;;;;37154:20;:47;;;;;37179:11;:22;37191:9;37179:22;;;;;;;;;;;;;;;;;;;;;;;;;37178:23;37154:47;37150:333;;;37218:44;37236:6;37244:9;37255:6;37218:17;:44::i;:::-;37150:333;;;37284:11;:19;37296:6;37284:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;37307:11;:22;37319:9;37307:22;;;;;;;;;;;;;;;;;;;;;;;;;37284:45;37280:203;;;37346:48;37368:6;37376:9;37387:6;37346:21;:48::i;:::-;37280:203;;;37427:44;37445:6;37453:9;37464:6;37427:17;:44::i;:::-;37280:203;37150:333;37019:464;36886:597;37500:7;37495:29;;37509:15;:13;:15::i;:::-;37495:29;36694:838;;;;:::o;29856:645::-;29907:7;29916;29936:15;29954:12;;29936:30;;29977:15;29995:12;;29977:30;;30023:9;30018:348;30042:9;:16;;;;30038:1;:20;30018:348;;;30126:7;30102;:21;30110:9;30120:1;30110:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30102:21;;;;;;;;;;;;;;;;:31;:83;;;;30178:7;30154;:21;30162:9;30172:1;30162:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30154:21;;;;;;;;;;;;;;;;:31;30102:83;30080:156;;;30209:12;;30223;;30201:35;;;;;;;;;30080:156;30261:34;30273:7;:21;30281:9;30291:1;30281:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30273:21;;;;;;;;;;;;;;;;30261:7;:11;;:34;;;;:::i;:::-;30251:44;;30320:34;30332:7;:21;30340:9;30350:1;30340:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30332:21;;;;;;;;;;;;;;;;30320:7;:11;;:34;;;;:::i;:::-;30310:44;;30060:3;;;;;:::i;:::-;;;;30018:348;;;;30390:30;30407:12;;30390;;:16;;:30;;;;:::i;:::-;30380:7;:40;30376:81;;;30430:12;;30444;;30422:35;;;;;;;;30376:81;30476:7;30485;30468:25;;;;;;29856:645;;;:::o;28395:574::-;28501:7;28523;28545;28567;28602:12;28617:29;28633:12;28617:15;:29::i;:::-;28602:44;;28657:18;28678:35;28700:12;28678:21;:35::i;:::-;28657:56;;28724:19;28746:33;28766:12;28746:19;:33::i;:::-;28724:55;;28790:23;28816:79;28873:11;28816:38;28843:10;28816:22;28833:4;28816:12;:16;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;:42;;:79;;;;:::i;:::-;28790:105;;28914:15;28931:4;28937:10;28949:11;28906:55;;;;;;;;;;;;28395:574;;;;;:::o;28977:699::-;29208:7;29230;29252;29287:20;29310:29;29327:11;29310:12;:16;;:29;;;;:::i;:::-;29287:52;;29350:12;29365:21;29374:11;29365:4;:8;;:21;;;;:::i;:::-;29350:36;;29397:18;29418:27;29433:11;29418:10;:14;;:27;;;;:::i;:::-;29397:48;;29456:16;29475:25;29488:11;29475:8;:12;;:25;;;;:::i;:::-;29456:44;;29511:23;29537:76;29594:8;29537:38;29564:10;29537:22;29554:4;29537:12;:16;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;:42;;:76;;;;:::i;:::-;29511:102;;29632:12;29646:15;29663:4;29624:44;;;;;;;;;;;28977:699;;;;;;;;;:::o;35495:589::-;35621:21;35659:1;35645:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35621:40;;35690:4;35672;35677:1;35672:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35716:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35706:4;35711:1;35706:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35751:62;35768:4;35783:15;;;;;;;;;;;35801:11;35751:8;:62::i;:::-;35852:15;;;;;;;;;;;:66;;;35933:11;35959:1;36003:4;36030;36050:15;35852:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35550:534;35495:589;:::o;36092:521::-;36240:62;36257:4;36272:15;;;;;;;;;;;36290:11;36240:8;:62::i;:::-;36345:15;;;;;;;;;;;:31;;;36384:9;36417:4;36437:11;36463:1;36506;36557:6;36579:15;36345:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36092:521;;:::o;31969:282::-;32030:7;;32012:15;:25;;;;32075:16;;32048:24;:43;;;;32133:20;;32102:28;:51;;;;32176:1;32166:7;:11;;;;32207:1;32188:16;:20;;;;32242:1;32219:20;:24;;;;31969:282::o;39053:778::-;39209:20;39244:23;39282:12;39309:23;39347:12;39374:18;39407:16;39437:24;39448:12;39437:10;:24::i;:::-;39194:267;;;;;;;;;;;;;;39490:33;39510:12;39490:7;:15;39498:6;39490:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;39472:7;:15;39480:6;39472:15;;;;;;;;;;;;;;;:51;;;;39552:33;39572:12;39552:7;:15;39560:6;39552:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;39534:7;:15;39542:6;39534:15;;;;;;;;;;;;;;;:51;;;;39617:39;39640:15;39617:7;:18;39625:9;39617:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39596:7;:18;39604:9;39596:18;;;;;;;;;;;;;;;:60;;;;39667:26;39682:10;39667:14;:26::i;:::-;39704:25;39720:8;39704:15;:25::i;:::-;39740:23;39752:4;39758;39740:11;:23::i;:::-;39796:9;39779:44;;39788:6;39779:44;;;39807:15;39779:44;;;;;;:::i;:::-;;;;;;;;39183:648;;;;;;;39053:778;;;:::o;38260:785::-;38414:20;38449:23;38487:12;38514:23;38552:12;38579:18;38612:16;38642:24;38653:12;38642:10;:24::i;:::-;38399:267;;;;;;;;;;;;;;38695:33;38715:12;38695:7;:15;38703:6;38695:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;38677:7;:15;38685:6;38677:15;;;;;;;;;;;;;;;:51;;;;38760:39;38783:15;38760:7;:18;38768:9;38760:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;38739:7;:18;38747:9;38739:18;;;;;;;;;;;;;;;:60;;;;38831:39;38854:15;38831:7;:18;38839:9;38831:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;38810:7;:18;38818:9;38810:18;;;;;;;;;;;;;;;:60;;;;38881:26;38896:10;38881:14;:26::i;:::-;38918:25;38934:8;38918:15;:25::i;:::-;38954:23;38966:4;38972;38954:11;:23::i;:::-;39010:9;38993:44;;39002:6;38993:44;;;39021:15;38993:44;;;;;;:::i;:::-;;;;;;;;38388:657;;;;;;;38260:785;;;:::o;37540:712::-;37692:20;37727:23;37765:12;37792:23;37830:12;37857:18;37890:16;37920:24;37931:12;37920:10;:24::i;:::-;37677:267;;;;;;;;;;;;;;37973:33;37993:12;37973:7;:15;37981:6;37973:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;37955:7;:15;37963:6;37955:15;;;;;;;;;;;;;;;:51;;;;38038:39;38061:15;38038:7;:18;38046:9;38038:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;38017:7;:18;38025:9;38017:18;;;;;;;;;;;;;;;:60;;;;38088:26;38103:10;38088:14;:26::i;:::-;38125:25;38141:8;38125:15;:25::i;:::-;38161:23;38173:4;38179;38161:11;:23::i;:::-;38217:9;38200:44;;38209:6;38200:44;;;38228:15;38200:44;;;;;;:::i;:::-;;;;;;;;37666:586;;;;;;;37540:712;;;:::o;24986:849::-;25142:20;25177:23;25215:12;25242:23;25280:12;25307:18;25340:16;25370:24;25381:12;25370:10;:24::i;:::-;25127:267;;;;;;;;;;;;;;25423:33;25443:12;25423:7;:15;25431:6;25423:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;25405:7;:15;25413:6;25405:15;;;;;;;;;;;;;;;:51;;;;25485:33;25505:12;25485:7;:15;25493:6;25485:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;25467:7;:15;25475:6;25467:15;;;;;;;;;;;;;;;:51;;;;25550:39;25573:15;25550:7;:18;25558:9;25550:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25529:7;:18;25537:9;25529:18;;;;;;;;;;;;;;;:60;;;;25621:39;25644:15;25621:7;:18;25629:9;25621:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25600:7;:18;25608:9;25600:18;;;;;;;;;;;;;;;:60;;;;25671:26;25686:10;25671:14;:26::i;:::-;25708:25;25724:8;25708:15;:25::i;:::-;25744:23;25756:4;25762;25744:11;:23::i;:::-;25800:9;25783:44;;25792:6;25783:44;;;25811:15;25783:44;;;;;;:::i;:::-;;;;;;;;25116:719;;;;;;;24986:849;;;:::o;32259:193::-;32313:15;;32303:7;:25;;;;32358:24;;32339:16;:43;;;;32416:28;;32393:20;:51;;;;32259:193::o;31405:130::-;31469:7;31496:31;31521:5;31496:20;31508:7;;31496;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;31489:38;;31405:130;;;:::o;31543:177::-;31640:7;31672:40;31706:5;31672:29;31684:16;;31672:7;:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;31665:47;;31543:177;;;:::o;31728:233::-;31823:7;31879:1;31852:29;;:15;;;;;;;;;;;:29;;;31848:43;;31890:1;31883:8;;;;31848:43;31909:44;31947:5;31909:33;31921:20;;31909:7;:11;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;31902:51;;31728:233;;;;:::o;30509:355::-;30572:19;30594:10;:8;:10::i;:::-;30572:32;;30615:18;30636:27;30651:11;30636:10;:14;;:27;;;;:::i;:::-;30615:48;;30699:38;30726:10;30699:7;:22;30715:4;30699:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30674:7;:22;30690:4;30674:22;;;;;;;;;;;;;;;:63;;;;30752:11;:26;30772:4;30752:26;;;;;;;;;;;;;;;;;;;;;;;;;30748:108;;;30818:38;30845:10;30818:7;:22;30834:4;30818:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30793:7;:22;30809:4;30793:22;;;;;;;;;;;;;;;:63;;;;30748:108;30561:303;;30509:355;:::o;30872:525::-;30949:1;30938:8;:12;30934:456;;;30967:19;30989:10;:8;:10::i;:::-;30967:32;;31014:16;31033:25;31046:11;31033:8;:12;;:25;;;;:::i;:::-;31014:44;;31100:38;31129:8;31100:7;:24;31108:15;;;;;;;;;;;31100:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;31073:7;:24;31081:15;;;;;;;;;;;31073:24;;;;;;;;;;;;;;;:65;;;;31157:11;:28;31169:15;;;;;;;;;;;31157:28;;;;;;;;;;;;;;;;;;;;;;;;;31153:156;;;31231:78;31282:8;31231:7;:24;31239:15;;;;;;;;;;;31231:24;;;;;;;;;;;;;;;;:28;;:78;;;;:::i;:::-;31204:7;:24;31212:15;;;;;;;;;;;31204:24;;;;;;;;;;;;;;;:105;;;;31153:156;31352:15;;;;;;;;;;;31329:49;;31338:12;:10;:12::i;:::-;31329:49;;;31369:8;31329:49;;;;;;:::i;:::-;;;;;;;;30952:438;;30934:456;30872:525;:::o;27356:157::-;27439:22;27456:4;27439:12;;:16;;:22;;;;:::i;:::-;27424:12;:37;;;;27485:20;27500:4;27485:10;;:14;;:20;;;;:::i;:::-;27472:10;:33;;;;27356:157;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:152::-;4555:9;4588:37;4619:5;4588:37;:::i;:::-;4575:50;;4479:152;;;:::o;4637:183::-;4750:63;4807:5;4750:63;:::i;:::-;4745:3;4738:76;4637:183;;:::o;4826:274::-;4945:4;4983:2;4972:9;4968:18;4960:26;;4996:97;5090:1;5079:9;5075:17;5066:6;4996:97;:::i;:::-;4826:274;;;;:::o;5106:118::-;5193:24;5211:5;5193:24;:::i;:::-;5188:3;5181:37;5106:118;;:::o;5230:222::-;5323:4;5361:2;5350:9;5346:18;5338:26;;5374:71;5442:1;5431:9;5427:17;5418:6;5374:71;:::i;:::-;5230:222;;;;:::o;5458:619::-;5535:6;5543;5551;5600:2;5588:9;5579:7;5575:23;5571:32;5568:119;;;5606:79;;:::i;:::-;5568:119;5726:1;5751:53;5796:7;5787:6;5776:9;5772:22;5751:53;:::i;:::-;5741:63;;5697:117;5853:2;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5824:118;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;5458:619;;;;;:::o;6083:86::-;6118:7;6158:4;6151:5;6147:16;6136:27;;6083:86;;;:::o;6175:112::-;6258:22;6274:5;6258:22;:::i;:::-;6253:3;6246:35;6175:112;;:::o;6293:214::-;6382:4;6420:2;6409:9;6405:18;6397:26;;6433:67;6497:1;6486:9;6482:17;6473:6;6433:67;:::i;:::-;6293:214;;;;:::o;6513:329::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:182::-;8203:34;8199:1;8191:6;8187:14;8180:58;8063:182;:::o;8251:366::-;8393:3;8414:67;8478:2;8473:3;8414:67;:::i;:::-;8407:74;;8490:93;8579:3;8490:93;:::i;:::-;8608:2;8603:3;8599:12;8592:19;;8251:366;;;:::o;8623:419::-;8789:4;8827:2;8816:9;8812:18;8804:26;;8876:9;8870:4;8866:20;8862:1;8851:9;8847:17;8840:47;8904:131;9030:4;8904:131;:::i;:::-;8896:139;;8623:419;;;:::o;9048:180::-;9096:77;9093:1;9086:88;9193:4;9190:1;9183:15;9217:4;9214:1;9207:15;9234:191;9274:3;9293:20;9311:1;9293:20;:::i;:::-;9288:25;;9327:20;9345:1;9327:20;:::i;:::-;9322:25;;9370:1;9367;9363:9;9356:16;;9391:3;9388:1;9385:10;9382:36;;;9398:18;;:::i;:::-;9382:36;9234:191;;;;:::o;9431:171::-;9571:23;9567:1;9559:6;9555:14;9548:47;9431:171;:::o;9608:366::-;9750:3;9771:67;9835:2;9830:3;9771:67;:::i;:::-;9764:74;;9847:93;9936:3;9847:93;:::i;:::-;9965:2;9960:3;9956:12;9949:19;;9608:366;;;:::o;9980:419::-;10146:4;10184:2;10173:9;10169:18;10161:26;;10233:9;10227:4;10223:20;10219:1;10208:9;10204:17;10197:47;10261:131;10387:4;10261:131;:::i;:::-;10253:139;;9980:419;;;:::o;10405:180::-;10453:77;10450:1;10443:88;10550:4;10547:1;10540:15;10574:4;10571:1;10564:15;10591:320;10635:6;10672:1;10666:4;10662:12;10652:22;;10719:1;10713:4;10709:12;10740:18;10730:81;;10796:4;10788:6;10784:17;10774:27;;10730:81;10858:2;10850:6;10847:14;10827:18;10824:38;10821:84;;10877:18;;:::i;:::-;10821:84;10642:269;10591:320;;;:::o;10917:229::-;11057:34;11053:1;11045:6;11041:14;11034:58;11126:12;11121:2;11113:6;11109:15;11102:37;10917:229;:::o;11152:366::-;11294:3;11315:67;11379:2;11374:3;11315:67;:::i;:::-;11308:74;;11391:93;11480:3;11391:93;:::i;:::-;11509:2;11504:3;11500:12;11493:19;;11152:366;;;:::o;11524:419::-;11690:4;11728:2;11717:9;11713:18;11705:26;;11777:9;11771:4;11767:20;11763:1;11752:9;11748:17;11741:47;11805:131;11931:4;11805:131;:::i;:::-;11797:139;;11524:419;;;:::o;11949:177::-;12089:29;12085:1;12077:6;12073:14;12066:53;11949:177;:::o;12132:366::-;12274:3;12295:67;12359:2;12354:3;12295:67;:::i;:::-;12288:74;;12371:93;12460:3;12371:93;:::i;:::-;12489:2;12484:3;12480:12;12473:19;;12132:366;;;:::o;12504:419::-;12670:4;12708:2;12697:9;12693:18;12685:26;;12757:9;12751:4;12747:20;12743:1;12732:9;12728:17;12721:47;12785:131;12911:4;12785:131;:::i;:::-;12777:139;;12504:419;;;:::o;12929:180::-;12977:77;12974:1;12967:88;13074:4;13071:1;13064:15;13098:4;13095:1;13088:15;13115:194;13155:4;13175:20;13193:1;13175:20;:::i;:::-;13170:25;;13209:20;13227:1;13209:20;:::i;:::-;13204:25;;13253:1;13250;13246:9;13238:17;;13277:1;13271:4;13268:11;13265:37;;;13282:18;;:::i;:::-;13265:37;13115:194;;;;:::o;13315:180::-;13363:77;13360:1;13353:88;13460:4;13457:1;13450:15;13484:4;13481:1;13474:15;13501:233;13540:3;13563:24;13581:5;13563:24;:::i;:::-;13554:33;;13609:66;13602:5;13599:77;13596:103;;13679:18;;:::i;:::-;13596:103;13726:1;13719:5;13715:13;13708:20;;13501:233;;;:::o;13740:231::-;13880:34;13876:1;13868:6;13864:14;13857:58;13949:14;13944:2;13936:6;13932:15;13925:39;13740:231;:::o;13977:366::-;14119:3;14140:67;14204:2;14199:3;14140:67;:::i;:::-;14133:74;;14216:93;14305:3;14216:93;:::i;:::-;14334:2;14329:3;14325:12;14318:19;;13977:366;;;:::o;14349:419::-;14515:4;14553:2;14542:9;14538:18;14530:26;;14602:9;14596:4;14592:20;14588:1;14577:9;14573:17;14566:47;14630:131;14756:4;14630:131;:::i;:::-;14622:139;;14349:419;;;:::o;14774:181::-;14914:33;14910:1;14902:6;14898:14;14891:57;14774:181;:::o;14961:366::-;15103:3;15124:67;15188:2;15183:3;15124:67;:::i;:::-;15117:74;;15200:93;15289:3;15200:93;:::i;:::-;15318:2;15313:3;15309:12;15302:19;;14961:366;;;:::o;15333:419::-;15499:4;15537:2;15526:9;15522:18;15514:26;;15586:9;15580:4;15576:20;15572:1;15561:9;15557:17;15550:47;15614:131;15740:4;15614:131;:::i;:::-;15606:139;;15333:419;;;:::o;15758:243::-;15898:34;15894:1;15886:6;15882:14;15875:58;15967:26;15962:2;15954:6;15950:15;15943:51;15758:243;:::o;16007:366::-;16149:3;16170:67;16234:2;16229:3;16170:67;:::i;:::-;16163:74;;16246:93;16335:3;16246:93;:::i;:::-;16364:2;16359:3;16355:12;16348:19;;16007:366;;;:::o;16379:419::-;16545:4;16583:2;16572:9;16568:18;16560:26;;16632:9;16626:4;16622:20;16618:1;16607:9;16603:17;16596:47;16660:131;16786:4;16660:131;:::i;:::-;16652:139;;16379:419;;;:::o;16804:225::-;16944:34;16940:1;16932:6;16928:14;16921:58;17013:8;17008:2;17000:6;16996:15;16989:33;16804:225;:::o;17035:366::-;17177:3;17198:67;17262:2;17257:3;17198:67;:::i;:::-;17191:74;;17274:93;17363:3;17274:93;:::i;:::-;17392:2;17387:3;17383:12;17376:19;;17035:366;;;:::o;17407:419::-;17573:4;17611:2;17600:9;17596:18;17588:26;;17660:9;17654:4;17650:20;17646:1;17635:9;17631:17;17624:47;17688:131;17814:4;17688:131;:::i;:::-;17680:139;;17407:419;;;:::o;17832:223::-;17972:34;17968:1;17960:6;17956:14;17949:58;18041:6;18036:2;18028:6;18024:15;18017:31;17832:223;:::o;18061:366::-;18203:3;18224:67;18288:2;18283:3;18224:67;:::i;:::-;18217:74;;18300:93;18389:3;18300:93;:::i;:::-;18418:2;18413:3;18409:12;18402:19;;18061:366;;;:::o;18433:419::-;18599:4;18637:2;18626:9;18622:18;18614:26;;18686:9;18680:4;18676:20;18672:1;18661:9;18657:17;18650:47;18714:131;18840:4;18714:131;:::i;:::-;18706:139;;18433:419;;;:::o;18858:221::-;18998:34;18994:1;18986:6;18982:14;18975:58;19067:4;19062:2;19054:6;19050:15;19043:29;18858:221;:::o;19085:366::-;19227:3;19248:67;19312:2;19307:3;19248:67;:::i;:::-;19241:74;;19324:93;19413:3;19324:93;:::i;:::-;19442:2;19437:3;19433:12;19426:19;;19085:366;;;:::o;19457:419::-;19623:4;19661:2;19650:9;19646:18;19638:26;;19710:9;19704:4;19700:20;19696:1;19685:9;19681:17;19674:47;19738:131;19864:4;19738:131;:::i;:::-;19730:139;;19457:419;;;:::o;19882:224::-;20022:34;20018:1;20010:6;20006:14;19999:58;20091:7;20086:2;20078:6;20074:15;20067:32;19882:224;:::o;20112:366::-;20254:3;20275:67;20339:2;20334:3;20275:67;:::i;:::-;20268:74;;20351:93;20440:3;20351:93;:::i;:::-;20469:2;20464:3;20460:12;20453:19;;20112:366;;;:::o;20484:419::-;20650:4;20688:2;20677:9;20673:18;20665:26;;20737:9;20731:4;20727:20;20723:1;20712:9;20708:17;20701:47;20765:131;20891:4;20765:131;:::i;:::-;20757:139;;20484:419;;;:::o;20909:222::-;21049:34;21045:1;21037:6;21033:14;21026:58;21118:5;21113:2;21105:6;21101:15;21094:30;20909:222;:::o;21137:366::-;21279:3;21300:67;21364:2;21359:3;21300:67;:::i;:::-;21293:74;;21376:93;21465:3;21376:93;:::i;:::-;21494:2;21489:3;21485:12;21478:19;;21137:366;;;:::o;21509:419::-;21675:4;21713:2;21702:9;21698:18;21690:26;;21762:9;21756:4;21752:20;21748:1;21737:9;21733:17;21726:47;21790:131;21916:4;21790:131;:::i;:::-;21782:139;;21509:419;;;:::o;21934:228::-;22074:34;22070:1;22062:6;22058:14;22051:58;22143:11;22138:2;22130:6;22126:15;22119:36;21934:228;:::o;22168:366::-;22310:3;22331:67;22395:2;22390:3;22331:67;:::i;:::-;22324:74;;22407:93;22496:3;22407:93;:::i;:::-;22525:2;22520:3;22516:12;22509:19;;22168:366;;;:::o;22540:419::-;22706:4;22744:2;22733:9;22729:18;22721:26;;22793:9;22787:4;22783:20;22779:1;22768:9;22764:17;22757:47;22821:131;22947:4;22821:131;:::i;:::-;22813:139;;22540:419;;;:::o;22965:180::-;23013:77;23010:1;23003:88;23110:4;23107:1;23100:15;23134:4;23131:1;23124:15;23151:185;23191:1;23208:20;23226:1;23208:20;:::i;:::-;23203:25;;23242:20;23260:1;23242:20;:::i;:::-;23237:25;;23281:1;23271:35;;23286:18;;:::i;:::-;23271:35;23328:1;23325;23321:9;23316:14;;23151:185;;;;:::o;23342:410::-;23382:7;23405:20;23423:1;23405:20;:::i;:::-;23400:25;;23439:20;23457:1;23439:20;:::i;:::-;23434:25;;23494:1;23491;23487:9;23516:30;23534:11;23516:30;:::i;:::-;23505:41;;23695:1;23686:7;23682:15;23679:1;23676:22;23656:1;23649:9;23629:83;23606:139;;23725:18;;:::i;:::-;23606:139;23390:362;23342:410;;;;:::o;23758:442::-;23907:4;23945:2;23934:9;23930:18;23922:26;;23958:71;24026:1;24015:9;24011:17;24002:6;23958:71;:::i;:::-;24039:72;24107:2;24096:9;24092:18;24083:6;24039:72;:::i;:::-;24121;24189:2;24178:9;24174:18;24165:6;24121:72;:::i;:::-;23758:442;;;;;;:::o;24206:180::-;24254:77;24251:1;24244:88;24351:4;24348:1;24341:15;24375:4;24372:1;24365:15;24392:143;24449:5;24480:6;24474:13;24465:22;;24496:33;24523:5;24496:33;:::i;:::-;24392:143;;;;:::o;24541:351::-;24611:6;24660:2;24648:9;24639:7;24635:23;24631:32;24628:119;;;24666:79;;:::i;:::-;24628:119;24786:1;24811:64;24867:7;24858:6;24847:9;24843:22;24811:64;:::i;:::-;24801:74;;24757:128;24541:351;;;;:::o;24898:85::-;24943:7;24972:5;24961:16;;24898:85;;;:::o;24989:158::-;25047:9;25080:61;25098:42;25107:32;25133:5;25107:32;:::i;:::-;25098:42;:::i;:::-;25080:61;:::i;:::-;25067:74;;24989:158;;;:::o;25153:147::-;25248:45;25287:5;25248:45;:::i;:::-;25243:3;25236:58;25153:147;;:::o;25306:114::-;25373:6;25407:5;25401:12;25391:22;;25306:114;;;:::o;25426:184::-;25525:11;25559:6;25554:3;25547:19;25599:4;25594:3;25590:14;25575:29;;25426:184;;;;:::o;25616:132::-;25683:4;25706:3;25698:11;;25736:4;25731:3;25727:14;25719:22;;25616:132;;;:::o;25754:108::-;25831:24;25849:5;25831:24;:::i;:::-;25826:3;25819:37;25754:108;;:::o;25868:179::-;25937:10;25958:46;26000:3;25992:6;25958:46;:::i;:::-;26036:4;26031:3;26027:14;26013:28;;25868:179;;;;:::o;26053:113::-;26123:4;26155;26150:3;26146:14;26138:22;;26053:113;;;:::o;26202:732::-;26321:3;26350:54;26398:5;26350:54;:::i;:::-;26420:86;26499:6;26494:3;26420:86;:::i;:::-;26413:93;;26530:56;26580:5;26530:56;:::i;:::-;26609:7;26640:1;26625:284;26650:6;26647:1;26644:13;26625:284;;;26726:6;26720:13;26753:63;26812:3;26797:13;26753:63;:::i;:::-;26746:70;;26839:60;26892:6;26839:60;:::i;:::-;26829:70;;26685:224;26672:1;26669;26665:9;26660:14;;26625:284;;;26629:14;26925:3;26918:10;;26326:608;;;26202:732;;;;:::o;26940:831::-;27203:4;27241:3;27230:9;27226:19;27218:27;;27255:71;27323:1;27312:9;27308:17;27299:6;27255:71;:::i;:::-;27336:80;27412:2;27401:9;27397:18;27388:6;27336:80;:::i;:::-;27463:9;27457:4;27453:20;27448:2;27437:9;27433:18;27426:48;27491:108;27594:4;27585:6;27491:108;:::i;:::-;27483:116;;27609:72;27677:2;27666:9;27662:18;27653:6;27609:72;:::i;:::-;27691:73;27759:3;27748:9;27744:19;27735:6;27691:73;:::i;:::-;26940:831;;;;;;;;:::o;27777:807::-;28026:4;28064:3;28053:9;28049:19;28041:27;;28078:71;28146:1;28135:9;28131:17;28122:6;28078:71;:::i;:::-;28159:72;28227:2;28216:9;28212:18;28203:6;28159:72;:::i;:::-;28241:80;28317:2;28306:9;28302:18;28293:6;28241:80;:::i;:::-;28331;28407:2;28396:9;28392:18;28383:6;28331:80;:::i;:::-;28421:73;28489:3;28478:9;28474:19;28465:6;28421:73;:::i;:::-;28504;28572:3;28561:9;28557:19;28548:6;28504:73;:::i;:::-;27777:807;;;;;;;;;:::o;28590:143::-;28647:5;28678:6;28672:13;28663:22;;28694:33;28721:5;28694:33;:::i;:::-;28590:143;;;;:::o;28739:663::-;28827:6;28835;28843;28892:2;28880:9;28871:7;28867:23;28863:32;28860:119;;;28898:79;;:::i;:::-;28860:119;29018:1;29043:64;29099:7;29090:6;29079:9;29075:22;29043:64;:::i;:::-;29033:74;;28989:128;29156:2;29182:64;29238:7;29229:6;29218:9;29214:22;29182:64;:::i;:::-;29172:74;;29127:129;29295:2;29321:64;29377:7;29368:6;29357:9;29353:22;29321:64;:::i;:::-;29311:74;;29266:129;28739:663;;;;;:::o
Swarm Source
ipfs://59267106f8b93042da3a079c1240d07456df8be49fb9781ed53dc6c844ce71d7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.