Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 27 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 14380032 | 1086 days ago | IN | 0 ETH | 0.00203127 | ||||
Approve | 13763108 | 1181 days ago | IN | 0 ETH | 0.00273045 | ||||
Approve | 13762870 | 1181 days ago | IN | 0 ETH | 0.00316649 | ||||
Approve | 13658048 | 1198 days ago | IN | 0 ETH | 0.00289999 | ||||
Approve | 13657982 | 1198 days ago | IN | 0 ETH | 0.00359975 | ||||
Approve | 13650434 | 1199 days ago | IN | 0 ETH | 0.00367409 | ||||
Approve | 13611584 | 1206 days ago | IN | 0 ETH | 0.00540359 | ||||
Approve | 13600019 | 1207 days ago | IN | 0 ETH | 0.00628534 | ||||
Approve | 13596486 | 1208 days ago | IN | 0 ETH | 0.00768455 | ||||
Approve | 13596466 | 1208 days ago | IN | 0 ETH | 0.01042844 | ||||
Approve | 13595984 | 1208 days ago | IN | 0 ETH | 0.00878629 | ||||
Approve | 13595896 | 1208 days ago | IN | 0 ETH | 0.00762492 | ||||
Approve | 13595896 | 1208 days ago | IN | 0 ETH | 0.00762492 | ||||
Approve | 13595889 | 1208 days ago | IN | 0 ETH | 0.00984684 | ||||
Approve | 13595876 | 1208 days ago | IN | 0 ETH | 0.00971196 | ||||
Approve | 13595873 | 1208 days ago | IN | 0 ETH | 0.01037836 | ||||
Approve | 13595870 | 1208 days ago | IN | 0 ETH | 0.00872097 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.0080096 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.01251833 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.01251833 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.01251833 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.01251833 | ||||
Approve | 13595862 | 1208 days ago | IN | 0 ETH | 0.01251833 | ||||
Approve | 13595861 | 1208 days ago | IN | 0 ETH | 0.00739453 | ||||
Approve | 13595842 | 1208 days ago | IN | 0 ETH | 0.00618674 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Metaforce
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @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 GSN 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 virtual view returns (address payable) { return payable(msg.sender); } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @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 Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return mul(div(d,m),m); } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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. */ 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() { _owner =0xa3fb90dae1DE5415daBE5B37f473E726CA18Abff; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _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 renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { function sync() external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; } contract Metaforce is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Metaforce"; string private _symbol = "MFT"; uint8 private _decimals = 9; mapping(address => uint256) internal _reflectionBalance; mapping(address => uint256) internal _balanceLimit; mapping(address => uint256) internal _tokenBalance; mapping (address => bool) public _blackList; mapping (address=> bool) public _maxAmount; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private constant MAX = ~uint256(0); uint256 internal _tokenTotal = 1_000_000_000_000 * (10**decimals()); uint256 internal _reflectionTotal = (MAX - (MAX % _tokenTotal)); mapping(address => bool) isTaxless; mapping(address => bool) internal _isExcluded; address[] internal _excluded; uint256 public _feeDecimal = 2; // do not change this value... uint256 public _taxFee = 200; // means 2% which distribute to all holders reflection fee uint256 public _marketingFee=300;// means 3% to marketing Wallet uint256 public _burnFee=200; //2% burn on each transection address marketingAddress=0x5A5501773738de9efC65C71Bd0Be75f06f2D4EDe; address DEAD = 0x000000000000000000000000000000000000dEaD; uint256 public _taxFeeTotal; uint256 public _burnFeeTotal; bool public isFeeActive = true; // bool private tradingEnable = true; uint256 public maxTxAmount = _tokenTotal; // IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; constructor() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // for Ethereum uniswap v2 uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; // Exempt Tax From ONwer and contract isTaxless[owner()] = true; isTaxless[address(this)] = true; //Exempt maxTxAmount from Onwer and Contract _maxAmount[owner()] = true; _maxAmount[address(this)] = true; // exlcude pair address from tax rewards _isExcluded[address(uniswapV2Pair)] = true; _excluded.push(address(uniswapV2Pair)); _isExcluded[DEAD]=true; _excluded.push(DEAD); _reflectionBalance[owner()] = _reflectionTotal; emit Transfer(address(0),owner(), _tokenTotal); } 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 override view returns (uint256) { return _tokenTotal; } function balanceOf(address account) public override view returns (uint256) { if (_isExcluded[account]) return _tokenBalance[account]; return tokenFromReflection(_reflectionBalance[account]); } function transfer(address recipient, uint256 amount) public override virtual returns (bool) { _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) public override view 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 virtual 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 isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tokenAmount, bool deductTransferFee) public view returns (uint256) { require(tokenAmount <= _tokenTotal, "Amount must be less than supply"); if (!deductTransferFee) { return tokenAmount.mul(_getReflectionRate()); } else { return tokenAmount.sub(tokenAmount.mul(_taxFee).div(10** _feeDecimal + 2)).mul( _getReflectionRate() ); } } function tokenFromReflection(uint256 reflectionAmount) public view returns (uint256) { require( reflectionAmount <= _reflectionTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getReflectionRate(); return reflectionAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require( account != address(uniswapV2Router), "ERC20: We can not exclude Uniswap router." ); require(!_isExcluded[account], "ERC20: Account is already excluded"); if (_reflectionBalance[account] > 0) { _tokenBalance[account] = tokenFromReflection( _reflectionBalance[account] ); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "ERC20: Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tokenBalance[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } 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 sender, address recipient, uint256 amount ) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= maxTxAmount || _maxAmount[sender], "Transfer Limit Exceeds"); require(!_blackList[sender] ,"Address is blackListed"); require(tradingEnable,"trading is disable"); uint256 transferAmount = amount; uint256 rate = _getReflectionRate(); if(!isTaxless[sender] && !isTaxless[recipient]){ transferAmount = collectFee(sender,amount,rate); } //transfer reflection _reflectionBalance[sender] = _reflectionBalance[sender].sub(amount.mul(rate)); _reflectionBalance[recipient] = _reflectionBalance[recipient].add(transferAmount.mul(rate)); //if any account belongs to the excludedAccount transfer token if (_isExcluded[sender]) { _tokenBalance[sender] = _tokenBalance[sender].sub(amount); } if (_isExcluded[recipient]) { _tokenBalance[recipient] = _tokenBalance[recipient].add(transferAmount); } emit Transfer(sender, recipient, transferAmount); } function collectFee(address account, uint256 amount, uint256 rate) private returns (uint256) { uint256 transferAmount = amount; if(_taxFee != 0){ uint256 taxFee = amount.mul(_taxFee).div(10**(_feeDecimal + 2)); transferAmount = transferAmount.sub(taxFee); _reflectionTotal = _reflectionTotal.sub(taxFee.mul(rate)); _taxFeeTotal = _taxFeeTotal.add(taxFee); } if(_marketingFee != 0){ uint256 marketingFee = amount.mul(_marketingFee).div(10**(_feeDecimal + 2)); transferAmount = transferAmount.sub(marketingFee); _reflectionBalance[marketingAddress] = _reflectionBalance[marketingAddress].add(marketingFee.mul(rate)); if(_isExcluded[marketingAddress]){ _tokenBalance[marketingAddress] = _tokenBalance[marketingAddress].add(marketingFee); } emit Transfer(account,marketingAddress,marketingFee); } if(_burnFee != 0){ uint256 burnFee = amount.mul(_burnFee).div(10**(_feeDecimal + 2)); transferAmount = transferAmount.sub(burnFee); _tokenTotal = _tokenTotal.sub(burnFee); _reflectionBalance[DEAD] = _reflectionBalance[DEAD].add(burnFee.mul(rate)); if (_isExcluded[DEAD]) { _tokenBalance[DEAD] = _tokenBalance[DEAD].add(burnFee); } _reflectionTotal = _reflectionTotal.sub(burnFee.mul(rate)); _burnFeeTotal = _burnFeeTotal.add(burnFee); emit Transfer(account,DEAD,burnFee); } return transferAmount; } function _getReflectionRate() private view returns (uint256) { uint256 reflectionSupply = _reflectionTotal; uint256 tokenSupply = _tokenTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _reflectionBalance[_excluded[i]] > reflectionSupply || _tokenBalance[_excluded[i]] > tokenSupply ) return _reflectionTotal.div(_tokenTotal); reflectionSupply = reflectionSupply.sub( _reflectionBalance[_excluded[i]] ); tokenSupply = tokenSupply.sub(_tokenBalance[_excluded[i]]); } if (reflectionSupply < _reflectionTotal.div(_tokenTotal)) return _reflectionTotal.div(_tokenTotal); return reflectionSupply.div(tokenSupply); } 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 setPair(address pair) external onlyOwner { uniswapV2Pair = pair; } function setTaxless(address account, bool value) external onlyOwner { isTaxless[account] = value; } function setFeeActive(bool value) external onlyOwner { isFeeActive = value; } function setTaxFee(uint256 fee) external onlyOwner { _taxFee = fee; } function setMarketingFee(uint256 fee) external onlyOwner { _marketingFee = fee; } function setBurnFee(uint256 fee) external onlyOwner { _burnFee = fee; } function setMarketingAddress(address add) external onlyOwner{ marketingAddress=add; } function setBlackList (address _address,bool value) external onlyOwner { _blackList[_address]=value; } function exemptMaxTxAmountAddress(address _address,bool value) external onlyOwner { _maxAmount[_address] = value; } function setTrading(bool value) external onlyOwner { tradingEnable= value; } function setMaxTxAmount(uint256 amount) external onlyOwner { maxTxAmount = amount; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_maxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeTotal","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":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"exemptMaxTxAmountAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTaxless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectionAmount","type":"uint256"}],"name":"tokenFromReflection","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
60806040526040518060400160405280600981526020017f4d657461666f7263650000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000999565b506040518060400160405280600381526020017f4d46540000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000999565b506009600360006101000a81548160ff021916908360ff160217905550620000cc6200095960201b60201c565b600a620000da919062000b53565b64e8d4a51000620000ec919062000c90565b600a55600a5460001962000101919062000dad565b60001962000110919062000cf1565b600b556002600f5560c860105561012c60115560c8601255735a5501773738de9efc65c71bd0be75f06f2d4ede601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760006101000a81548160ff0219169083151502179055506001601760016101000a81548160ff021916908315150217905550600a546018553480156200020957600080fd5b5073a3fb90dae1de5415dabe5b37f473e726ca18abff6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033957600080fd5b505afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000a60565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d757600080fd5b505afa158015620003ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000412919062000a60565b6040518363ffffffff1660e01b81526004016200043192919062000aae565b602060405180830381600087803b1580156200044c57600080fd5b505af115801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062000a60565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60006200051e6200097060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620005dd6200097060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600460006200089b6200097060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008e96200097060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200094a919062000adb565b60405180910390a35062000e99565b6000600360009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620009a79062000d77565b90600052602060002090601f016020900481019282620009cb576000855562000a17565b82601f10620009e657805160ff191683800117855562000a17565b8280016001018555821562000a17579182015b8281111562000a16578251825591602001919060010190620009f9565b5b50905062000a26919062000a2a565b5090565b5b8082111562000a4557600081600090555060010162000a2b565b5090565b60008151905062000a5a8162000e7f565b92915050565b60006020828403121562000a7357600080fd5b600062000a838482850162000a49565b91505092915050565b62000a978162000d2c565b82525050565b62000aa88162000d60565b82525050565b600060408201905062000ac5600083018562000a8c565b62000ad4602083018462000a8c565b9392505050565b600060208201905062000af2600083018462000a9d565b92915050565b6000808291508390505b600185111562000b4a5780860481111562000b225762000b2162000de5565b5b600185161562000b325780820291505b808102905062000b428562000e72565b945062000b02565b94509492505050565b600062000b608262000d60565b915062000b6d8362000d6a565b925062000b9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ba4565b905092915050565b60008262000bb6576001905062000c89565b8162000bc6576000905062000c89565b816001811462000bdf576002811462000bea5762000c20565b600191505062000c89565b60ff84111562000bff5762000bfe62000de5565b5b8360020a91508482111562000c195762000c1862000de5565b5b5062000c89565b5060208310610133831016604e8410600b841016171562000c5a5782820a90508381111562000c545762000c5362000de5565b5b62000c89565b62000c69848484600162000af8565b9250905081840481111562000c835762000c8262000de5565b5b81810290505b9392505050565b600062000c9d8262000d60565b915062000caa8362000d60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce65762000ce562000de5565b5b828202905092915050565b600062000cfe8262000d60565b915062000d0b8362000d60565b92508282101562000d215762000d2062000de5565b5b828203905092915050565b600062000d398262000d40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d9057607f821691505b6020821081141562000da75762000da662000e43565b5b50919050565b600062000dba8262000d60565b915062000dc78362000d60565b92508262000dda5762000dd962000e14565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000e8a8162000d2c565b811462000e9657600080fd5b50565b6149e08062000ea96000396000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063b7bfff65116100b6578063dd62ed3e1161007a578063dd62ed3e1461090b578063e43504da14610948578063ec28438a14610973578063f2cc0c181461099c578063f2fde38b146109c5578063f84354f1146109ee5761025c565b8063b7bfff6514610814578063c0b0fda21461083d578063c4081a4c14610868578063cba0e99614610891578063cc815ca9146108ce5761025c565b80638f70ccf7116100fd5780638f70ccf71461071d578063906e9dd01461074657806395d89b411461076f578063a457c2d71461079a578063a9059cbb146107d75761025c565b806370a082311461064a578063715018a6146106875780638187f5161461069e5780638c0b5e22146106c75780638da5cb5b146106f25761025c565b8063355bc60b116101d257806347f2dc5b1161019657806347f2dc5b1461053e57806349bd5a5e146105675780634bf2c7c914610592578063595dec3c146105bb578063625e764c146105f857806368092bd9146106215761025c565b8063355bc60b1461044557806339509351146104705780633b124fe7146104ad578063442e41b5146104d85780634549b039146105015761025c565b806319db457d1161021957806319db457d1461034a57806322976e0d1461037557806323b872dd146103a05780632d838119146103dd578063313ce5671461041a5761025c565b806306fdde0314610261578063095ea7b31461028c5780630d9a5219146102c95780631694505e146102f457806318160ddd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a17565b604051610283919061424c565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190613b31565b610aa9565b6040516102c09190614216565b60405180910390f35b3480156102d557600080fd5b506102de610ac7565b6040516102eb919061446e565b60405180910390f35b34801561030057600080fd5b50610309610acd565b6040516103169190614231565b60405180910390f35b34801561032b57600080fd5b50610334610af3565b604051610341919061446e565b60405180910390f35b34801561035657600080fd5b5061035f610afd565b60405161036c919061446e565b60405180910390f35b34801561038157600080fd5b5061038a610b03565b604051610397919061446e565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613aa6565b610b09565b6040516103d49190614216565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613b96565b610be2565b604051610411919061446e565b60405180910390f35b34801561042657600080fd5b5061042f610c50565b60405161043c9190614489565b60405180910390f35b34801561045157600080fd5b5061045a610c67565b604051610467919061446e565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613b31565b610c6d565b6040516104a49190614216565b60405180910390f35b3480156104b957600080fd5b506104c2610d20565b6040516104cf919061446e565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613af5565b610d26565b005b34801561050d57600080fd5b5061052860048036038101906105239190613bbf565b610e16565b604051610535919061446e565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613af5565b610ef8565b005b34801561057357600080fd5b5061057c610fe8565b60405161058991906141fb565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613b96565b61100e565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613a41565b6110ad565b6040516105ef9190614216565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613b96565b6110cd565b005b34801561062d57600080fd5b5061064860048036038101906106439190613af5565b61116c565b005b34801561065657600080fd5b50610671600480360381019061066c9190613a41565b61125c565b60405161067e919061446e565b60405180910390f35b34801561069357600080fd5b5061069c611347565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613a41565b61149a565b005b3480156106d357600080fd5b506106dc611573565b6040516106e9919061446e565b60405180910390f35b3480156106fe57600080fd5b50610707611579565b60405161071491906141fb565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613b6d565b6115a2565b005b34801561075257600080fd5b5061076d60048036038101906107689190613a41565b611654565b005b34801561077b57600080fd5b5061078461172d565b604051610791919061424c565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613b31565b6117bf565b6040516107ce9190614216565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613b31565b61188c565b60405161080b9190614216565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613b6d565b6118aa565b005b34801561084957600080fd5b5061085261195c565b60405161085f919061446e565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190613b96565b611962565b005b34801561089d57600080fd5b506108b860048036038101906108b39190613a41565b611a01565b6040516108c59190614216565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f09190613a41565b611a57565b6040516109029190614216565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190613a6a565b611a77565b60405161093f919061446e565b60405180910390f35b34801561095457600080fd5b5061095d611afe565b60405161096a9190614216565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613b96565b611b11565b005b3480156109a857600080fd5b506109c360048036038101906109be9190613a41565b611bb0565b005b3480156109d157600080fd5b506109ec60048036038101906109e79190613a41565b611ef5565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190613a41565b6120b7565b005b606060018054610a26906147f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906147f2565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b5050505050905090565b6000610abd610ab661249e565b84846124a6565b6001905092915050565b60165481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b600f5481565b60115481565b6000610b16848484612671565b610bd784610b2261249e565b610bd28560405180606001604052806028815260200161495e60289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8861249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb9092919063ffffffff16565b6124a6565b600190509392505050565b6000600b54821115610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c209061428e565b60405180910390fd5b6000610c33612d4f565b9050610c4881846130c490919063ffffffff16565b915050919050565b6000600360009054906101000a900460ff16905090565b60155481565b6000610d16610c7a61249e565b84610d118560096000610c8b61249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b6124a6565b6001905092915050565b60105481565b610d2e61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db29061438e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54831115610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e549061432e565b60405180910390fd5b81610e8357610e7c610e6d612d4f565b8461316c90919063ffffffff16565b9050610ef2565b610eef610e8e612d4f565b610ee1610ed26002600f54600a610ea5919061459a565b610eaf91906144c0565b610ec46010548961316c90919063ffffffff16565b6130c490919063ffffffff16565b866131e790919063ffffffff16565b61316c90919063ffffffff16565b90505b92915050565b610f0061249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f849061438e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61101661249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a9061438e565b60405180910390fd5b8060128190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6110d561249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111599061438e565b60405180910390fd5b8060118190555050565b61117461249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061438e565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112f757600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611342565b61133f600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be2565b90505b919050565b61134f61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d39061438e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114a261249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061438e565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115aa61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061438e565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b61165c61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e09061438e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461173c906147f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611768906147f2565b80156117b55780601f1061178a576101008083540402835291602001916117b5565b820191906000526020600020905b81548152906001019060200180831161179857829003601f168201915b5050505050905090565b60006118826117cc61249e565b8461187d8560405180606001604052806025815260200161498660259139600960006117f661249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb9092919063ffffffff16565b6124a6565b6001905092915050565b60006118a061189961249e565b8484612671565b6001905092915050565b6118b261249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061438e565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b60125481565b61196a61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee9061438e565b60405180910390fd5b8060108190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601760009054906101000a900460ff1681565b611b1961249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d9061438e565b60405180910390fd5b8060188190555050565b611bb861249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c9061438e565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906143ce565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a9061426e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e3757611df3600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be2565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efd61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f819061438e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906142ae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120bf61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121439061438e565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cf9061444e565b60405180910390fd5b60005b600e8054905081101561249a578173ffffffffffffffffffffffffffffffffffffffff16600e8281548110612239577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561248757600e6001600e805490506122949190614712565b815481106122cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e8281548110612330577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e80548061244d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561249a565b808061249290614824565b9150506121db565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061440e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d906142ce565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612664919061446e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d8906143ee565b60405180910390fd5b60008111612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b906143ae565b60405180910390fd5b6018548111158061277e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b49061430e565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561284a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128419061442e565b60405180910390fd5b601760019054906101000a900460ff16612899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128909061434e565b60405180910390fd5b600081905060006128a8612d4f565b9050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129615761295e858483613231565b91505b6129c5612977828561316c90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e790919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a6c612a1e828461316c90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b9757612b5383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c7f57612c3b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cdc919061446e565b60405180910390a35050505050565b6000838311158290612d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2a919061424c565b60405180910390fd5b5060008385612d429190614712565b9050809150509392505050565b600080600b5490506000600a54905060005b600e8054905081101561306a578260046000600e8481548110612dad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612ec157508160066000600e8481548110612e59577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ee757612edd600a54600b546130c490919063ffffffff16565b93505050506130c1565b612f9d60046000600e8481548110612f28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e790919063ffffffff16565b925061305560066000600e8481548110612fe0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836131e790919063ffffffff16565b9150808061306290614824565b915050612d61565b50613082600a54600b546130c490919063ffffffff16565b8210156130a9576130a0600a54600b546130c490919063ffffffff16565b925050506130c1565b6130bc81836130c490919063ffffffff16565b925050505b90565b600061310683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061399f565b905092915050565b600080828461311d91906144c0565b905083811015613162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613159906142ee565b60405180910390fd5b8091505092915050565b60008083141561317f57600090506131e1565b6000828461318d91906146b8565b905082848261319c9190614516565b146131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d39061436e565b60405180910390fd5b809150505b92915050565b600061322983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ceb565b905092915050565b6000808390506000601054146132e55760006132846002600f5461325591906144c0565b600a613261919061459a565b6132766010548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061329981836131e790919063ffffffff16565b91506132c26132b1858361316c90919063ffffffff16565b600b546131e790919063ffffffff16565b600b819055506132dd8160155461310e90919063ffffffff16565b601581905550505b60006011541461360b5760006133326002600f5461330391906144c0565b600a61330f919061459a565b6133246011548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061334781836131e790919063ffffffff16565b91506133cf61335f858361316c90919063ffffffff16565b60046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135825761351c8160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613601919061446e565b60405180910390a3505b6000601254146139945760006136586002600f5461362991906144c0565b600a613635919061459a565b61364a6012548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061366d81836131e790919063ffffffff16565b915061368481600a546131e790919063ffffffff16565b600a819055506137106136a0858361316c90919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138c35761385d8160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6138ea6138d9858361316c90919063ffffffff16565b600b546131e790919063ffffffff16565b600b819055506139058160165461310e90919063ffffffff16565b601681905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161398a919061446e565b60405180910390a3505b809150509392505050565b600080831182906139e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139dd919061424c565b60405180910390fd5b50600083856139f59190614516565b9050809150509392505050565b600081359050613a1181614918565b92915050565b600081359050613a268161492f565b92915050565b600081359050613a3b81614946565b92915050565b600060208284031215613a5357600080fd5b6000613a6184828501613a02565b91505092915050565b60008060408385031215613a7d57600080fd5b6000613a8b85828601613a02565b9250506020613a9c85828601613a02565b9150509250929050565b600080600060608486031215613abb57600080fd5b6000613ac986828701613a02565b9350506020613ada86828701613a02565b9250506040613aeb86828701613a2c565b9150509250925092565b60008060408385031215613b0857600080fd5b6000613b1685828601613a02565b9250506020613b2785828601613a17565b9150509250929050565b60008060408385031215613b4457600080fd5b6000613b5285828601613a02565b9250506020613b6385828601613a2c565b9150509250929050565b600060208284031215613b7f57600080fd5b6000613b8d84828501613a17565b91505092915050565b600060208284031215613ba857600080fd5b6000613bb684828501613a2c565b91505092915050565b60008060408385031215613bd257600080fd5b6000613be085828601613a2c565b9250506020613bf185828601613a17565b9150509250929050565b613c0481614746565b82525050565b613c1381614758565b82525050565b613c228161479b565b82525050565b6000613c33826144a4565b613c3d81856144af565b9350613c4d8185602086016147bf565b613c56816148fa565b840191505092915050565b6000613c6e6022836144af565b91507f45524332303a204163636f756e7420697320616c7265616479206578636c756460008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cd4602a836144af565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d3a6026836144af565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613da06022836144af565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e06601b836144af565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613e466016836144af565b91507f5472616e73666572204c696d69742045786365656473000000000000000000006000830152602082019050919050565b6000613e86601f836144af565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000613ec66012836144af565b91507f74726164696e672069732064697361626c6500000000000000000000000000006000830152602082019050919050565b6000613f066021836144af565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f6c6020836144af565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613fac6029836144af565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006140126029836144af565b91507f45524332303a2057652063616e206e6f74206578636c75646520556e6973776160008301527f7020726f757465722e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006140786025836144af565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140de6024836144af565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141446016836144af565b91507f4164647265737320697320626c61636b4c6973746564000000000000000000006000830152602082019050919050565b60006141846022836144af565b91507f45524332303a204163636f756e7420697320616c726561647920696e636c756460008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6141e681614784565b82525050565b6141f58161478e565b82525050565b60006020820190506142106000830184613bfb565b92915050565b600060208201905061422b6000830184613c0a565b92915050565b60006020820190506142466000830184613c19565b92915050565b600060208201905081810360008301526142668184613c28565b905092915050565b6000602082019050818103600083015261428781613c61565b9050919050565b600060208201905081810360008301526142a781613cc7565b9050919050565b600060208201905081810360008301526142c781613d2d565b9050919050565b600060208201905081810360008301526142e781613d93565b9050919050565b6000602082019050818103600083015261430781613df9565b9050919050565b6000602082019050818103600083015261432781613e39565b9050919050565b6000602082019050818103600083015261434781613e79565b9050919050565b6000602082019050818103600083015261436781613eb9565b9050919050565b6000602082019050818103600083015261438781613ef9565b9050919050565b600060208201905081810360008301526143a781613f5f565b9050919050565b600060208201905081810360008301526143c781613f9f565b9050919050565b600060208201905081810360008301526143e781614005565b9050919050565b600060208201905081810360008301526144078161406b565b9050919050565b60006020820190508181036000830152614427816140d1565b9050919050565b6000602082019050818103600083015261444781614137565b9050919050565b6000602082019050818103600083015261446781614177565b9050919050565b600060208201905061448360008301846141dd565b92915050565b600060208201905061449e60008301846141ec565b92915050565b600081519050919050565b600082825260208201905092915050565b60006144cb82614784565b91506144d683614784565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450b5761450a61486d565b5b828201905092915050565b600061452182614784565b915061452c83614784565b92508261453c5761453b61489c565b5b828204905092915050565b6000808291508390505b60018511156145915780860481111561456d5761456c61486d565b5b600185161561457c5780820291505b808102905061458a8561490b565b9450614551565b94509492505050565b60006145a582614784565b91506145b083614784565b92506145dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846145e5565b905092915050565b6000826145f557600190506146b1565b8161460357600090506146b1565b8160018114614619576002811461462357614652565b60019150506146b1565b60ff8411156146355761463461486d565b5b8360020a91508482111561464c5761464b61486d565b5b506146b1565b5060208310610133831016604e8410600b84101617156146875782820a9050838111156146825761468161486d565b5b6146b1565b6146948484846001614547565b925090508184048111156146ab576146aa61486d565b5b81810290505b9392505050565b60006146c382614784565b91506146ce83614784565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147075761470661486d565b5b828202905092915050565b600061471d82614784565b915061472883614784565b92508282101561473b5761473a61486d565b5b828203905092915050565b600061475182614764565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147a6826147ad565b9050919050565b60006147b882614764565b9050919050565b60005b838110156147dd5780820151818401526020810190506147c2565b838111156147ec576000848401525b50505050565b6000600282049050600182168061480a57607f821691505b6020821081141561481e5761481d6148cb565b5b50919050565b600061482f82614784565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148625761486161486d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61492181614746565b811461492c57600080fd5b50565b61493881614758565b811461494357600080fd5b50565b61494f81614784565b811461495a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c0f9126030fd90850d2cb98f479acbbc166d26371ea691f62cb82e484d4104664736f6c63430008000033
Deployed Bytecode
0x6080604052600436106102555760003560e01c806370a0823111610139578063b7bfff65116100b6578063dd62ed3e1161007a578063dd62ed3e1461090b578063e43504da14610948578063ec28438a14610973578063f2cc0c181461099c578063f2fde38b146109c5578063f84354f1146109ee5761025c565b8063b7bfff6514610814578063c0b0fda21461083d578063c4081a4c14610868578063cba0e99614610891578063cc815ca9146108ce5761025c565b80638f70ccf7116100fd5780638f70ccf71461071d578063906e9dd01461074657806395d89b411461076f578063a457c2d71461079a578063a9059cbb146107d75761025c565b806370a082311461064a578063715018a6146106875780638187f5161461069e5780638c0b5e22146106c75780638da5cb5b146106f25761025c565b8063355bc60b116101d257806347f2dc5b1161019657806347f2dc5b1461053e57806349bd5a5e146105675780634bf2c7c914610592578063595dec3c146105bb578063625e764c146105f857806368092bd9146106215761025c565b8063355bc60b1461044557806339509351146104705780633b124fe7146104ad578063442e41b5146104d85780634549b039146105015761025c565b806319db457d1161021957806319db457d1461034a57806322976e0d1461037557806323b872dd146103a05780632d838119146103dd578063313ce5671461041a5761025c565b806306fdde0314610261578063095ea7b31461028c5780630d9a5219146102c95780631694505e146102f457806318160ddd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a17565b604051610283919061424c565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190613b31565b610aa9565b6040516102c09190614216565b60405180910390f35b3480156102d557600080fd5b506102de610ac7565b6040516102eb919061446e565b60405180910390f35b34801561030057600080fd5b50610309610acd565b6040516103169190614231565b60405180910390f35b34801561032b57600080fd5b50610334610af3565b604051610341919061446e565b60405180910390f35b34801561035657600080fd5b5061035f610afd565b60405161036c919061446e565b60405180910390f35b34801561038157600080fd5b5061038a610b03565b604051610397919061446e565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613aa6565b610b09565b6040516103d49190614216565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613b96565b610be2565b604051610411919061446e565b60405180910390f35b34801561042657600080fd5b5061042f610c50565b60405161043c9190614489565b60405180910390f35b34801561045157600080fd5b5061045a610c67565b604051610467919061446e565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613b31565b610c6d565b6040516104a49190614216565b60405180910390f35b3480156104b957600080fd5b506104c2610d20565b6040516104cf919061446e565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613af5565b610d26565b005b34801561050d57600080fd5b5061052860048036038101906105239190613bbf565b610e16565b604051610535919061446e565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613af5565b610ef8565b005b34801561057357600080fd5b5061057c610fe8565b60405161058991906141fb565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613b96565b61100e565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613a41565b6110ad565b6040516105ef9190614216565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613b96565b6110cd565b005b34801561062d57600080fd5b5061064860048036038101906106439190613af5565b61116c565b005b34801561065657600080fd5b50610671600480360381019061066c9190613a41565b61125c565b60405161067e919061446e565b60405180910390f35b34801561069357600080fd5b5061069c611347565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613a41565b61149a565b005b3480156106d357600080fd5b506106dc611573565b6040516106e9919061446e565b60405180910390f35b3480156106fe57600080fd5b50610707611579565b60405161071491906141fb565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613b6d565b6115a2565b005b34801561075257600080fd5b5061076d60048036038101906107689190613a41565b611654565b005b34801561077b57600080fd5b5061078461172d565b604051610791919061424c565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613b31565b6117bf565b6040516107ce9190614216565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613b31565b61188c565b60405161080b9190614216565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613b6d565b6118aa565b005b34801561084957600080fd5b5061085261195c565b60405161085f919061446e565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190613b96565b611962565b005b34801561089d57600080fd5b506108b860048036038101906108b39190613a41565b611a01565b6040516108c59190614216565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f09190613a41565b611a57565b6040516109029190614216565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190613a6a565b611a77565b60405161093f919061446e565b60405180910390f35b34801561095457600080fd5b5061095d611afe565b60405161096a9190614216565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613b96565b611b11565b005b3480156109a857600080fd5b506109c360048036038101906109be9190613a41565b611bb0565b005b3480156109d157600080fd5b506109ec60048036038101906109e79190613a41565b611ef5565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190613a41565b6120b7565b005b606060018054610a26906147f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906147f2565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b5050505050905090565b6000610abd610ab661249e565b84846124a6565b6001905092915050565b60165481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b600f5481565b60115481565b6000610b16848484612671565b610bd784610b2261249e565b610bd28560405180606001604052806028815260200161495e60289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8861249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb9092919063ffffffff16565b6124a6565b600190509392505050565b6000600b54821115610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c209061428e565b60405180910390fd5b6000610c33612d4f565b9050610c4881846130c490919063ffffffff16565b915050919050565b6000600360009054906101000a900460ff16905090565b60155481565b6000610d16610c7a61249e565b84610d118560096000610c8b61249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b6124a6565b6001905092915050565b60105481565b610d2e61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db29061438e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54831115610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e549061432e565b60405180910390fd5b81610e8357610e7c610e6d612d4f565b8461316c90919063ffffffff16565b9050610ef2565b610eef610e8e612d4f565b610ee1610ed26002600f54600a610ea5919061459a565b610eaf91906144c0565b610ec46010548961316c90919063ffffffff16565b6130c490919063ffffffff16565b866131e790919063ffffffff16565b61316c90919063ffffffff16565b90505b92915050565b610f0061249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f849061438e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61101661249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a9061438e565b60405180910390fd5b8060128190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6110d561249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111599061438e565b60405180910390fd5b8060118190555050565b61117461249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061438e565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112f757600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611342565b61133f600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be2565b90505b919050565b61134f61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d39061438e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114a261249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061438e565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115aa61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061438e565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b61165c61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e09061438e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461173c906147f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611768906147f2565b80156117b55780601f1061178a576101008083540402835291602001916117b5565b820191906000526020600020905b81548152906001019060200180831161179857829003601f168201915b5050505050905090565b60006118826117cc61249e565b8461187d8560405180606001604052806025815260200161498660259139600960006117f661249e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb9092919063ffffffff16565b6124a6565b6001905092915050565b60006118a061189961249e565b8484612671565b6001905092915050565b6118b261249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061438e565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b60125481565b61196a61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee9061438e565b60405180910390fd5b8060108190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601760009054906101000a900460ff1681565b611b1961249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d9061438e565b60405180910390fd5b8060188190555050565b611bb861249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c9061438e565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906143ce565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a9061426e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e3757611df3600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be2565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efd61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f819061438e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906142ae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120bf61249e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121439061438e565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cf9061444e565b60405180910390fd5b60005b600e8054905081101561249a578173ffffffffffffffffffffffffffffffffffffffff16600e8281548110612239577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561248757600e6001600e805490506122949190614712565b815481106122cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e8281548110612330577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e80548061244d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561249a565b808061249290614824565b9150506121db565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061440e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d906142ce565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612664919061446e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d8906143ee565b60405180910390fd5b60008111612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b906143ae565b60405180910390fd5b6018548111158061277e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b49061430e565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561284a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128419061442e565b60405180910390fd5b601760019054906101000a900460ff16612899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128909061434e565b60405180910390fd5b600081905060006128a8612d4f565b9050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129615761295e858483613231565b91505b6129c5612977828561316c90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e790919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a6c612a1e828461316c90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b9757612b5383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c7f57612c3b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cdc919061446e565b60405180910390a35050505050565b6000838311158290612d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2a919061424c565b60405180910390fd5b5060008385612d429190614712565b9050809150509392505050565b600080600b5490506000600a54905060005b600e8054905081101561306a578260046000600e8481548110612dad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612ec157508160066000600e8481548110612e59577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ee757612edd600a54600b546130c490919063ffffffff16565b93505050506130c1565b612f9d60046000600e8481548110612f28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e790919063ffffffff16565b925061305560066000600e8481548110612fe0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836131e790919063ffffffff16565b9150808061306290614824565b915050612d61565b50613082600a54600b546130c490919063ffffffff16565b8210156130a9576130a0600a54600b546130c490919063ffffffff16565b925050506130c1565b6130bc81836130c490919063ffffffff16565b925050505b90565b600061310683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061399f565b905092915050565b600080828461311d91906144c0565b905083811015613162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613159906142ee565b60405180910390fd5b8091505092915050565b60008083141561317f57600090506131e1565b6000828461318d91906146b8565b905082848261319c9190614516565b146131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d39061436e565b60405180910390fd5b809150505b92915050565b600061322983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ceb565b905092915050565b6000808390506000601054146132e55760006132846002600f5461325591906144c0565b600a613261919061459a565b6132766010548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061329981836131e790919063ffffffff16565b91506132c26132b1858361316c90919063ffffffff16565b600b546131e790919063ffffffff16565b600b819055506132dd8160155461310e90919063ffffffff16565b601581905550505b60006011541461360b5760006133326002600f5461330391906144c0565b600a61330f919061459a565b6133246011548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061334781836131e790919063ffffffff16565b91506133cf61335f858361316c90919063ffffffff16565b60046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135825761351c8160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613601919061446e565b60405180910390a3505b6000601254146139945760006136586002600f5461362991906144c0565b600a613635919061459a565b61364a6012548861316c90919063ffffffff16565b6130c490919063ffffffff16565b905061366d81836131e790919063ffffffff16565b915061368481600a546131e790919063ffffffff16565b600a819055506137106136a0858361316c90919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138c35761385d8160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310e90919063ffffffff16565b60066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6138ea6138d9858361316c90919063ffffffff16565b600b546131e790919063ffffffff16565b600b819055506139058160165461310e90919063ffffffff16565b601681905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161398a919061446e565b60405180910390a3505b809150509392505050565b600080831182906139e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139dd919061424c565b60405180910390fd5b50600083856139f59190614516565b9050809150509392505050565b600081359050613a1181614918565b92915050565b600081359050613a268161492f565b92915050565b600081359050613a3b81614946565b92915050565b600060208284031215613a5357600080fd5b6000613a6184828501613a02565b91505092915050565b60008060408385031215613a7d57600080fd5b6000613a8b85828601613a02565b9250506020613a9c85828601613a02565b9150509250929050565b600080600060608486031215613abb57600080fd5b6000613ac986828701613a02565b9350506020613ada86828701613a02565b9250506040613aeb86828701613a2c565b9150509250925092565b60008060408385031215613b0857600080fd5b6000613b1685828601613a02565b9250506020613b2785828601613a17565b9150509250929050565b60008060408385031215613b4457600080fd5b6000613b5285828601613a02565b9250506020613b6385828601613a2c565b9150509250929050565b600060208284031215613b7f57600080fd5b6000613b8d84828501613a17565b91505092915050565b600060208284031215613ba857600080fd5b6000613bb684828501613a2c565b91505092915050565b60008060408385031215613bd257600080fd5b6000613be085828601613a2c565b9250506020613bf185828601613a17565b9150509250929050565b613c0481614746565b82525050565b613c1381614758565b82525050565b613c228161479b565b82525050565b6000613c33826144a4565b613c3d81856144af565b9350613c4d8185602086016147bf565b613c56816148fa565b840191505092915050565b6000613c6e6022836144af565b91507f45524332303a204163636f756e7420697320616c7265616479206578636c756460008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cd4602a836144af565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d3a6026836144af565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613da06022836144af565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e06601b836144af565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613e466016836144af565b91507f5472616e73666572204c696d69742045786365656473000000000000000000006000830152602082019050919050565b6000613e86601f836144af565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000613ec66012836144af565b91507f74726164696e672069732064697361626c6500000000000000000000000000006000830152602082019050919050565b6000613f066021836144af565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f6c6020836144af565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613fac6029836144af565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006140126029836144af565b91507f45524332303a2057652063616e206e6f74206578636c75646520556e6973776160008301527f7020726f757465722e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006140786025836144af565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140de6024836144af565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141446016836144af565b91507f4164647265737320697320626c61636b4c6973746564000000000000000000006000830152602082019050919050565b60006141846022836144af565b91507f45524332303a204163636f756e7420697320616c726561647920696e636c756460008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6141e681614784565b82525050565b6141f58161478e565b82525050565b60006020820190506142106000830184613bfb565b92915050565b600060208201905061422b6000830184613c0a565b92915050565b60006020820190506142466000830184613c19565b92915050565b600060208201905081810360008301526142668184613c28565b905092915050565b6000602082019050818103600083015261428781613c61565b9050919050565b600060208201905081810360008301526142a781613cc7565b9050919050565b600060208201905081810360008301526142c781613d2d565b9050919050565b600060208201905081810360008301526142e781613d93565b9050919050565b6000602082019050818103600083015261430781613df9565b9050919050565b6000602082019050818103600083015261432781613e39565b9050919050565b6000602082019050818103600083015261434781613e79565b9050919050565b6000602082019050818103600083015261436781613eb9565b9050919050565b6000602082019050818103600083015261438781613ef9565b9050919050565b600060208201905081810360008301526143a781613f5f565b9050919050565b600060208201905081810360008301526143c781613f9f565b9050919050565b600060208201905081810360008301526143e781614005565b9050919050565b600060208201905081810360008301526144078161406b565b9050919050565b60006020820190508181036000830152614427816140d1565b9050919050565b6000602082019050818103600083015261444781614137565b9050919050565b6000602082019050818103600083015261446781614177565b9050919050565b600060208201905061448360008301846141dd565b92915050565b600060208201905061449e60008301846141ec565b92915050565b600081519050919050565b600082825260208201905092915050565b60006144cb82614784565b91506144d683614784565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450b5761450a61486d565b5b828201905092915050565b600061452182614784565b915061452c83614784565b92508261453c5761453b61489c565b5b828204905092915050565b6000808291508390505b60018511156145915780860481111561456d5761456c61486d565b5b600185161561457c5780820291505b808102905061458a8561490b565b9450614551565b94509492505050565b60006145a582614784565b91506145b083614784565b92506145dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846145e5565b905092915050565b6000826145f557600190506146b1565b8161460357600090506146b1565b8160018114614619576002811461462357614652565b60019150506146b1565b60ff8411156146355761463461486d565b5b8360020a91508482111561464c5761464b61486d565b5b506146b1565b5060208310610133831016604e8410600b84101617156146875782820a9050838111156146825761468161486d565b5b6146b1565b6146948484846001614547565b925090508184048111156146ab576146aa61486d565b5b81810290505b9392505050565b60006146c382614784565b91506146ce83614784565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147075761470661486d565b5b828202905092915050565b600061471d82614784565b915061472883614784565b92508282101561473b5761473a61486d565b5b828203905092915050565b600061475182614764565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147a6826147ad565b9050919050565b60006147b882614764565b9050919050565b60005b838110156147dd5780820151818401526020810190506147c2565b838111156147ec576000848401525b50505050565b6000600282049050600182168061480a57607f821691505b6020821081141561481e5761481d6148cb565b5b50919050565b600061482f82614784565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148625761486161486d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61492181614746565b811461492c57600080fd5b50565b61493881614758565b811461494357600080fd5b50565b61494f81614784565b811461495a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c0f9126030fd90850d2cb98f479acbbc166d26371ea691f62cb82e484d4104664736f6c63430008000033
Deployed Bytecode Sourcemap
20061:13201:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22721:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23741:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21481:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21660:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22998:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20989:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21151:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23942:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25686;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22907:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21447:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24324:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21057:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32882:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25158:520;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32103:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21709:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32539:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20478:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32432:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32754:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23105:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17622:148;;;;;;;;;;;;;:::i;:::-;;32006:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21605:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16980:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33023:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32642:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22812:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24632:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23328:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32234:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21221:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32337:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25040:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20528:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23549:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21518:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33124:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26062:537;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17925:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26607:491;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22721:83;22758:13;22791:5;22784:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22721:83;:::o;23741:193::-;23843:4;23865:39;23874:12;:10;:12::i;:::-;23888:7;23897:6;23865:8;:39::i;:::-;23922:4;23915:11;;23741:193;;;;:::o;21481:28::-;;;;:::o;21660:42::-;;;;;;;;;;;;;:::o;22998:99::-;23051:7;23078:11;;23071:18;;22998:99;:::o;20989:30::-;;;;:::o;21151:32::-;;;;:::o;23942:368::-;24082:4;24099:34;24109:6;24116:9;24126:6;24099:9;:34::i;:::-;24161:119;24170:6;24177:12;:10;:12::i;:::-;24190:89;24229:6;24190:89;;;;;;;;;;;;;;;;;:11;:19;24202:6;24190:19;;;;;;;;;;;;;;;:33;24210:12;:10;:12::i;:::-;24190:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24161:8;:119::i;:::-;24298:4;24291:11;;23942:368;;;;;:::o;25686:::-;25789:7;25856:16;;25836;:36;;25814:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;25953:19;25975:20;:18;:20::i;:::-;25953:42;;26013:33;26034:11;26013:16;:20;;:33;;;;:::i;:::-;26006:40;;;25686:368;;;:::o;22907:83::-;22948:5;22973:9;;;;;;;;;;;22966:16;;22907:83;:::o;21447:27::-;;;;:::o;24324:300::-;24439:4;24461:133;24484:12;:10;:12::i;:::-;24511:7;24533:50;24572:10;24533:11;:25;24545:12;:10;:12::i;:::-;24533:25;;;;;;;;;;;;;;;:34;24559:7;24533:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;24461:8;:133::i;:::-;24612:4;24605:11;;24324:300;;;;:::o;21057:28::-;;;;:::o;32882:129::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32998:5:::1;32975:10;:20;32986:8;32975:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32882:129:::0;;:::o;25158:520::-;25280:7;25328:11;;25313;:26;;25305:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25391:17;25386:285;;25432:37;25448:20;:18;:20::i;:::-;25432:11;:15;;:37;;;;:::i;:::-;25425:44;;;;25386:285;25526:133;25620:20;:18;:20::i;:::-;25526:67;25542:50;25590:1;25576:11;;25571:2;:16;;;;:::i;:::-;:20;;;;:::i;:::-;25542:24;25558:7;;25542:11;:15;;:24;;;;:::i;:::-;:28;;:50;;;;:::i;:::-;25526:11;:15;;:67;;;;:::i;:::-;:71;;:133;;;;:::i;:::-;25502:157;;25158:520;;;;;:::o;32103:113::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32203:5:::1;32182:9;:18;32192:7;32182:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;32103:113:::0;;:::o;21709:29::-;;;;;;;;;;;;;:::o;32539:85::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32613:3:::1;32602:8;:14;;;;32539:85:::0;:::o;20478:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;32432:95::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32516:3:::1;32500:13;:19;;;;32432:95:::0;:::o;32754:116::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32857:5:::1;32836:10;:20;32847:8;32836:20;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;32754:116:::0;;:::o;23105:215::-;23171:7;23195:11;:20;23207:7;23195:20;;;;;;;;;;;;;;;;;;;;;;;;;23191:55;;;23224:13;:22;23238:7;23224:22;;;;;;;;;;;;;;;;23217:29;;;;23191:55;23264:48;23284:18;:27;23303:7;23284:27;;;;;;;;;;;;;;;;23264:19;:48::i;:::-;23257:55;;23105:215;;;;:::o;17622:148::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17729:1:::1;17692:40;;17713:6;::::0;::::1;;;;;;;;17692:40;;;;;;;;;;;;17760:1;17743:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17622:148::o:0;32006:89::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32083:4:::1;32067:13;;:20;;;;;;;;;;;;;;;;;;32006:89:::0;:::o;21605:40::-;;;;:::o;16980:79::-;17018:7;17045:6;;;;;;;;;;;17038:13;;16980:79;:::o;33023:90::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33100:5:::1;33085:13;;:20;;;;;;;;;;;;;;;;;;33023:90:::0;:::o;32642:99::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32730:3:::1;32713:16;;:20;;;;;;;;;;;;;;;;;;32642:99:::0;:::o;22812:87::-;22851:13;22884:7;22877:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22812:87;:::o;24632:400::-;24752:4;24774:228;24797:12;:10;:12::i;:::-;24824:7;24846:145;24903:15;24846:145;;;;;;;;;;;;;;;;;:11;:25;24858:12;:10;:12::i;:::-;24846:25;;;;;;;;;;;;;;;:34;24872:7;24846:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;24774:8;:228::i;:::-;25020:4;25013:11;;24632:400;;;;:::o;23328:213::-;23450:4;23471:40;23481:12;:10;:12::i;:::-;23494:9;23504:6;23471:9;:40::i;:::-;23529:4;23522:11;;23328:213;;;;:::o;32234:91::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32312:5:::1;32298:11;;:19;;;;;;;;;;;;;;;;;;32234:91:::0;:::o;21221:27::-;;;;:::o;32337:83::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32409:3:::1;32399:7;:13;;;;32337:83:::0;:::o;25040:110::-;25098:4;25122:11;:20;25134:7;25122:20;;;;;;;;;;;;;;;;;;;;;;;;;25115:27;;25040:110;;;:::o;20528:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;23549:184::-;23666:7;23698:11;:18;23710:5;23698:18;;;;;;;;;;;;;;;:27;23717:7;23698:27;;;;;;;;;;;;;;;;23691:34;;23549:184;;;;:::o;21518:30::-;;;;;;;;;;;;;:::o;33124:98::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33208:6:::1;33194:11;:20;;;;33124:98:::0;:::o;26062:537::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26176:15:::1;;;;;;;;;;;26157:35;;:7;:35;;;;26135:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;26281:11;:20;26293:7;26281:20;;;;;;;;;;;;;;;;;;;;;;;;;26280:21;26272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26385:1;26355:18;:27;26374:7;26355:27;;;;;;;;;;;;;;;;:31;26351:169;;;26428:80;26466:18;:27;26485:7;26466:27;;;;;;;;;;;;;;;;26428:19;:80::i;:::-;26403:13;:22;26417:7;26403:22;;;;;;;;;;;;;;;:105;;;;26351:169;26553:4;26530:11;:20;26542:7;26530:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26568:9;26583:7;26568:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26062:537:::0;:::o;17925:281::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18048:1:::1;18028:22;;:8;:22;;;;18006:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;18161:8;18132:38;;18153:6;::::0;::::1;;;;;;;;18132:38;;;;;;;;;;;;18190:8;18181:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;17925:281:::0;:::o;26607:491::-;17202:12;:10;:12::i;:::-;17192:22;;:6;;;;;;;;;;:22;;;17184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26688:11:::1;:20;26700:7;26688:20;;;;;;;;;;;;;;;;;;;;;;;;;26680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26763:9;26758:333;26782:9;:16;;;;26778:1;:20;26758:333;;;26840:7;26824:23;;:9;26834:1;26824:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;26820:260;;;26883:9;26912:1;26893:9;:16;;;;:20;;;;:::i;:::-;26883:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26868:9;26878:1;26868:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26958:1;26933:13;:22;26947:7;26933:22;;;;;;;;;;;;;;;:26;;;;27001:5;26978:11;:20;26990:7;26978:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;27025:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27059:5;;26820:260;26800:3;;;;;:::i;:::-;;;;26758:333;;;;26607:491:::0;:::o;605:115::-;658:15;701:10;686:26;;605:115;:::o;27106:371::-;27250:1;27233:19;;:5;:19;;;;27225:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27331:1;27312:21;;:7;:21;;;;27304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27415:6;27385:11;:18;27397:5;27385:18;;;;;;;;;;;;;;;:27;27404:7;27385:27;;;;;;;;;;;;;;;:36;;;;27453:7;27437:32;;27446:5;27437:32;;;27462:6;27437:32;;;;;;:::i;:::-;;;;;;;;27106:371;;;:::o;27485:1352::-;27634:1;27616:20;;:6;:20;;;;27608:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27706:1;27697:6;:10;27689:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27782:11;;27772:6;:21;;:43;;;;27797:10;:18;27808:6;27797:18;;;;;;;;;;;;;;;;;;;;;;;;;27772:43;27764:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;27862:10;:18;27873:6;27862:18;;;;;;;;;;;;;;;;;;;;;;;;;27861:19;27853:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;27926:13;;;;;;;;;;;27918:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;27992:22;28017:6;27992:31;;28034:12;28049:20;:18;:20::i;:::-;28034:35;;28092:9;:17;28102:6;28092:17;;;;;;;;;;;;;;;;;;;;;;;;;28091:18;:43;;;;;28114:9;:20;28124:9;28114:20;;;;;;;;;;;;;;;;;;;;;;;;;28113:21;28091:43;28088:121;;;28167:30;28178:6;28185;28192:4;28167:10;:30::i;:::-;28150:47;;28088:121;28289:48;28320:16;28331:4;28320:6;:10;;:16;;;;:::i;:::-;28289:18;:26;28308:6;28289:26;;;;;;;;;;;;;;;;:30;;:48;;;;:::i;:::-;28260:18;:26;28279:6;28260:26;;;;;;;;;;;;;;;:77;;;;28380:59;28414:24;28433:4;28414:14;:18;;:24;;;;:::i;:::-;28380:18;:29;28399:9;28380:29;;;;;;;;;;;;;;;;:33;;:59;;;;:::i;:::-;28348:18;:29;28367:9;28348:29;;;;;;;;;;;;;;;:91;;;;28528:11;:19;28540:6;28528:19;;;;;;;;;;;;;;;;;;;;;;;;;28524:109;;;28588:33;28614:6;28588:13;:21;28602:6;28588:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;28564:13;:21;28578:6;28564:21;;;;;;;;;;;;;;;:57;;;;28524:109;28647:11;:22;28659:9;28647:22;;;;;;;;;;;;;;;;;;;;;;;;;28643:126;;;28713:44;28742:14;28713:13;:24;28727:9;28713:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;28686:13;:24;28700:9;28686:24;;;;;;;;;;;;;;;:71;;;;28643:126;28803:9;28786:43;;28795:6;28786:43;;;28814:14;28786:43;;;;;;:::i;:::-;;;;;;;;27485:1352;;;;;:::o;5537:226::-;5657:7;5690:1;5685;:6;;5693:12;5677:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5717:9;5733:1;5729;:5;;;;:::i;:::-;5717:17;;5754:1;5747:8;;;5537:226;;;;;:::o;30561:808::-;30613:7;30633:24;30660:16;;30633:43;;30687:19;30709:11;;30687:33;;30736:9;30731:458;30755:9;:16;;;;30751:1;:20;30731:458;;;30850:16;30815:18;:32;30834:9;30844:1;30834:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30815:32;;;;;;;;;;;;;;;;:51;:113;;;;30917:11;30887:13;:27;30901:9;30911:1;30901:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30887:27;;;;;;;;;;;;;;;;:41;30815:113;30793:191;;;30951:33;30972:11;;30951:16;;:20;;:33;;;;:::i;:::-;30944:40;;;;;;;30793:191;31018:86;31057:18;:32;31076:9;31086:1;31076:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31057:32;;;;;;;;;;;;;;;;31018:16;:20;;:86;;;;:::i;:::-;30999:105;;31133:44;31149:13;:27;31163:9;31173:1;31163:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31149:27;;;;;;;;;;;;;;;;31133:11;:15;;:44;;;;:::i;:::-;31119:58;;30773:3;;;;;:::i;:::-;;;;30731:458;;;;31222:33;31243:11;;31222:16;;:20;;:33;;;;:::i;:::-;31203:16;:52;31199:111;;;31277:33;31298:11;;31277:16;;:20;;:33;;;;:::i;:::-;31270:40;;;;;;31199:111;31328:33;31349:11;31328:16;:20;;:33;;;;:::i;:::-;31321:40;;;;30561:808;;:::o;6969:132::-;7027:7;7054:39;7058:1;7061;7054:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7047:46;;6969:132;;;;:::o;4634:181::-;4692:7;4712:9;4728:1;4724;:5;;;;:::i;:::-;4712:17;;4753:1;4748;:6;;4740:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4806:1;4799:8;;;4634:181;;;;:::o;6022:471::-;6080:7;6330:1;6325;:6;6321:47;;;6355:1;6348:8;;;;6321:47;6380:9;6396:1;6392;:5;;;;:::i;:::-;6380:17;;6425:1;6420;6416;:5;;;;:::i;:::-;:10;6408:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6484:1;6477:8;;;6022:471;;;;;:::o;5098:136::-;5156:7;5183:43;5187:1;5190;5183:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5176:50;;5098:136;;;;:::o;28849:1704::-;28933:7;28953:22;28978:6;28953:31;;29019:1;29008:7;;:12;29005:290;;29036:14;29053:46;29096:1;29082:11;;:15;;;;:::i;:::-;29077:2;:21;;;;:::i;:::-;29053:19;29064:7;;29053:6;:10;;:19;;;;:::i;:::-;:23;;:46;;;;:::i;:::-;29036:63;;29131:26;29150:6;29131:14;:18;;:26;;;;:::i;:::-;29114:43;;29191:38;29212:16;29223:4;29212:6;:10;;:16;;;;:::i;:::-;29191;;:20;;:38;;;;:::i;:::-;29172:16;:57;;;;29259:24;29276:6;29259:12;;:16;;:24;;;;:::i;:::-;29244:12;:39;;;;29005:290;;29343:1;29326:13;;:18;29323:538;;29360:20;29383:52;29432:1;29418:11;;:15;;;;:::i;:::-;29413:2;:21;;;;:::i;:::-;29383:25;29394:13;;29383:6;:10;;:25;;;;:::i;:::-;:29;;:52;;;;:::i;:::-;29360:75;;29467:32;29486:12;29467:14;:18;;:32;;;;:::i;:::-;29450:49;;29553:64;29594:22;29611:4;29594:12;:16;;:22;;;;:::i;:::-;29553:18;:36;29572:16;;;;;;;;;;;29553:36;;;;;;;;;;;;;;;;:40;;:64;;;;:::i;:::-;29514:18;:36;29533:16;;;;;;;;;;;29514:36;;;;;;;;;;;;;;;:103;;;;29635:11;:29;29647:16;;;;;;;;;;;29635:29;;;;;;;;;;;;;;;;;;;;;;;;;29632:151;;;29718:49;29754:12;29718:13;:31;29732:16;;;;;;;;;;;29718:31;;;;;;;;;;;;;;;;:35;;:49;;;;:::i;:::-;29684:13;:31;29698:16;;;;;;;;;;;29684:31;;;;;;;;;;;;;;;:83;;;;29632:151;29819:16;;;;;;;;;;;29802:47;;29811:7;29802:47;;;29836:12;29802:47;;;;;;:::i;:::-;;;;;;;;29323:538;;29897:1;29885:8;;:13;29882:616;;29914:15;29932:47;29976:1;29962:11;;:15;;;;:::i;:::-;29957:2;:21;;;;:::i;:::-;29932:20;29943:8;;29932:6;:10;;:20;;;;:::i;:::-;:24;;:47;;;;:::i;:::-;29914:65;;30011:27;30030:7;30011:14;:18;;:27;;;;:::i;:::-;29994:44;;30067:24;30083:7;30067:11;;:15;;:24;;;;:::i;:::-;30053:11;:38;;;;30133:47;30162:17;30174:4;30162:7;:11;;:17;;;;:::i;:::-;30133:18;:24;30152:4;;;;;;;;;;;30133:24;;;;;;;;;;;;;;;;:28;;:47;;;;:::i;:::-;30106:18;:24;30125:4;;;;;;;;;;;30106:24;;;;;;;;;;;;;;;:74;;;;30199:11;:17;30211:4;;;;;;;;;;;30199:17;;;;;;;;;;;;;;;;;;;;;;;;;30195:112;;;30259:32;30283:7;30259:13;:19;30273:4;;;;;;;;;;;30259:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;30237:13;:19;30251:4;;;;;;;;;;;30237:19;;;;;;;;;;;;;;;:54;;;;30195:112;30340:39;30361:17;30373:4;30361:7;:11;;:17;;;;:::i;:::-;30340:16;;:20;;:39;;;;:::i;:::-;30321:16;:58;;;;30410:26;30428:7;30410:13;;:17;;:26;;;;:::i;:::-;30394:13;:42;;;;30473:4;;;;;;;;;;;30456:30;;30465:7;30456:30;;;30478:7;30456:30;;;;;;:::i;:::-;;;;;;;;29882:616;;30531:14;30524:21;;;28849:1704;;;;;:::o;7597:312::-;7717:7;7749:1;7745;:5;7752:12;7737:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7776:9;7792:1;7788;:5;;;;:::i;:::-;7776:17;;7900:1;7893:8;;;7597:312;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:401::-;;;1797:2;1785:9;1776:7;1772:23;1768:32;1765:2;;;1813:1;1810;1803:12;1765:2;1856:1;1881:53;1926:7;1917:6;1906:9;1902:22;1881:53;:::i;:::-;1871:63;;1827:117;1983:2;2009:50;2051:7;2042:6;2031:9;2027:22;2009:50;:::i;:::-;1999:60;;1954:115;1755:321;;;;;:::o;2082:407::-;;;2207:2;2195:9;2186:7;2182:23;2178:32;2175:2;;;2223:1;2220;2213:12;2175:2;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2393:2;2419:53;2464:7;2455:6;2444:9;2440:22;2419:53;:::i;:::-;2409:63;;2364:118;2165:324;;;;;:::o;2495:256::-;;2600:2;2588:9;2579:7;2575:23;2571:32;2568:2;;;2616:1;2613;2606:12;2568:2;2659:1;2684:50;2726:7;2717:6;2706:9;2702:22;2684:50;:::i;:::-;2674:60;;2630:114;2558:193;;;;:::o;2757:262::-;;2865:2;2853:9;2844:7;2840:23;2836:32;2833:2;;;2881:1;2878;2871:12;2833:2;2924:1;2949:53;2994:7;2985:6;2974:9;2970:22;2949:53;:::i;:::-;2939:63;;2895:117;2823:196;;;;:::o;3025:401::-;;;3147:2;3135:9;3126:7;3122:23;3118:32;3115:2;;;3163:1;3160;3153:12;3115:2;3206:1;3231:53;3276:7;3267:6;3256:9;3252:22;3231:53;:::i;:::-;3221:63;;3177:117;3333:2;3359:50;3401:7;3392:6;3381:9;3377:22;3359:50;:::i;:::-;3349:60;;3304:115;3105:321;;;;;:::o;3432:118::-;3519:24;3537:5;3519:24;:::i;:::-;3514:3;3507:37;3497:53;;:::o;3556:109::-;3637:21;3652:5;3637:21;:::i;:::-;3632:3;3625:34;3615:50;;:::o;3671:183::-;3784:63;3841:5;3784:63;:::i;:::-;3779:3;3772:76;3762:92;;:::o;3860:364::-;;3976:39;4009:5;3976:39;:::i;:::-;4031:71;4095:6;4090:3;4031:71;:::i;:::-;4024:78;;4111:52;4156:6;4151:3;4144:4;4137:5;4133:16;4111:52;:::i;:::-;4188:29;4210:6;4188:29;:::i;:::-;4183:3;4179:39;4172:46;;3952:272;;;;;:::o;4230:366::-;;4393:67;4457:2;4452:3;4393:67;:::i;:::-;4386:74;;4490:34;4486:1;4481:3;4477:11;4470:55;4556:4;4551:2;4546:3;4542:12;4535:26;4587:2;4582:3;4578:12;4571:19;;4376:220;;;:::o;4602:374::-;;4765:67;4829:2;4824:3;4765:67;:::i;:::-;4758:74;;4862:34;4858:1;4853:3;4849:11;4842:55;4928:12;4923:2;4918:3;4914:12;4907:34;4967:2;4962:3;4958:12;4951:19;;4748:228;;;:::o;4982:370::-;;5145:67;5209:2;5204:3;5145:67;:::i;:::-;5138:74;;5242:34;5238:1;5233:3;5229:11;5222:55;5308:8;5303:2;5298:3;5294:12;5287:30;5343:2;5338:3;5334:12;5327:19;;5128:224;;;:::o;5358:366::-;;5521:67;5585:2;5580:3;5521:67;:::i;:::-;5514:74;;5618:34;5614:1;5609:3;5605:11;5598:55;5684:4;5679:2;5674:3;5670:12;5663:26;5715:2;5710:3;5706:12;5699:19;;5504:220;;;:::o;5730:325::-;;5893:67;5957:2;5952:3;5893:67;:::i;:::-;5886:74;;5990:29;5986:1;5981:3;5977:11;5970:50;6046:2;6041:3;6037:12;6030:19;;5876:179;;;:::o;6061:320::-;;6224:67;6288:2;6283:3;6224:67;:::i;:::-;6217:74;;6321:24;6317:1;6312:3;6308:11;6301:45;6372:2;6367:3;6363:12;6356:19;;6207:174;;;:::o;6387:329::-;;6550:67;6614:2;6609:3;6550:67;:::i;:::-;6543:74;;6647:33;6643:1;6638:3;6634:11;6627:54;6707:2;6702:3;6698:12;6691:19;;6533:183;;;:::o;6722:316::-;;6885:67;6949:2;6944:3;6885:67;:::i;:::-;6878:74;;6982:20;6978:1;6973:3;6969:11;6962:41;7029:2;7024:3;7020:12;7013:19;;6868:170;;;:::o;7044:365::-;;7207:67;7271:2;7266:3;7207:67;:::i;:::-;7200:74;;7304:34;7300:1;7295:3;7291:11;7284:55;7370:3;7365:2;7360:3;7356:12;7349:25;7400:2;7395:3;7391:12;7384:19;;7190:219;;;:::o;7415:330::-;;7578:67;7642:2;7637:3;7578:67;:::i;:::-;7571:74;;7675:34;7671:1;7666:3;7662:11;7655:55;7736:2;7731:3;7727:12;7720:19;;7561:184;;;:::o;7751:373::-;;7914:67;7978:2;7973:3;7914:67;:::i;:::-;7907:74;;8011:34;8007:1;8002:3;7998:11;7991:55;8077:11;8072:2;8067:3;8063:12;8056:33;8115:2;8110:3;8106:12;8099:19;;7897:227;;;:::o;8130:373::-;;8293:67;8357:2;8352:3;8293:67;:::i;:::-;8286:74;;8390:34;8386:1;8381:3;8377:11;8370:55;8456:11;8451:2;8446:3;8442:12;8435:33;8494:2;8489:3;8485:12;8478:19;;8276:227;;;:::o;8509:369::-;;8672:67;8736:2;8731:3;8672:67;:::i;:::-;8665:74;;8769:34;8765:1;8760:3;8756:11;8749:55;8835:7;8830:2;8825:3;8821:12;8814:29;8869:2;8864:3;8860:12;8853:19;;8655:223;;;:::o;8884:368::-;;9047:67;9111:2;9106:3;9047:67;:::i;:::-;9040:74;;9144:34;9140:1;9135:3;9131:11;9124:55;9210:6;9205:2;9200:3;9196:12;9189:28;9243:2;9238:3;9234:12;9227:19;;9030:222;;;:::o;9258:320::-;;9421:67;9485:2;9480:3;9421:67;:::i;:::-;9414:74;;9518:24;9514:1;9509:3;9505:11;9498:45;9569:2;9564:3;9560:12;9553:19;;9404:174;;;:::o;9584:366::-;;9747:67;9811:2;9806:3;9747:67;:::i;:::-;9740:74;;9844:34;9840:1;9835:3;9831:11;9824:55;9910:4;9905:2;9900:3;9896:12;9889:26;9941:2;9936:3;9932:12;9925:19;;9730:220;;;:::o;9956:118::-;10043:24;10061:5;10043:24;:::i;:::-;10038:3;10031:37;10021:53;;:::o;10080:112::-;10163:22;10179:5;10163:22;:::i;:::-;10158:3;10151:35;10141:51;;:::o;10198:222::-;;10329:2;10318:9;10314:18;10306:26;;10342:71;10410:1;10399:9;10395:17;10386:6;10342:71;:::i;:::-;10296:124;;;;:::o;10426:210::-;;10551:2;10540:9;10536:18;10528:26;;10564:65;10626:1;10615:9;10611:17;10602:6;10564:65;:::i;:::-;10518:118;;;;:::o;10642:274::-;;10799:2;10788:9;10784:18;10776:26;;10812:97;10906:1;10895:9;10891:17;10882:6;10812:97;:::i;:::-;10766:150;;;;:::o;10922:313::-;;11073:2;11062:9;11058:18;11050:26;;11122:9;11116:4;11112:20;11108:1;11097:9;11093:17;11086:47;11150:78;11223:4;11214:6;11150:78;:::i;:::-;11142:86;;11040:195;;;;:::o;11241:419::-;;11445:2;11434:9;11430:18;11422:26;;11494:9;11488:4;11484:20;11480:1;11469:9;11465:17;11458:47;11522:131;11648:4;11522:131;:::i;:::-;11514:139;;11412:248;;;:::o;11666:419::-;;11870:2;11859:9;11855:18;11847:26;;11919:9;11913:4;11909:20;11905:1;11894:9;11890:17;11883:47;11947:131;12073:4;11947:131;:::i;:::-;11939:139;;11837:248;;;:::o;12091:419::-;;12295:2;12284:9;12280:18;12272:26;;12344:9;12338:4;12334:20;12330:1;12319:9;12315:17;12308:47;12372:131;12498:4;12372:131;:::i;:::-;12364:139;;12262:248;;;:::o;12516:419::-;;12720:2;12709:9;12705:18;12697:26;;12769:9;12763:4;12759:20;12755:1;12744:9;12740:17;12733:47;12797:131;12923:4;12797:131;:::i;:::-;12789:139;;12687:248;;;:::o;12941:419::-;;13145:2;13134:9;13130:18;13122:26;;13194:9;13188:4;13184:20;13180:1;13169:9;13165:17;13158:47;13222:131;13348:4;13222:131;:::i;:::-;13214:139;;13112:248;;;:::o;13366:419::-;;13570:2;13559:9;13555:18;13547:26;;13619:9;13613:4;13609:20;13605:1;13594:9;13590:17;13583:47;13647:131;13773:4;13647:131;:::i;:::-;13639:139;;13537:248;;;:::o;13791:419::-;;13995:2;13984:9;13980:18;13972:26;;14044:9;14038:4;14034:20;14030:1;14019:9;14015:17;14008:47;14072:131;14198:4;14072:131;:::i;:::-;14064:139;;13962:248;;;:::o;14216:419::-;;14420:2;14409:9;14405:18;14397:26;;14469:9;14463:4;14459:20;14455:1;14444:9;14440:17;14433:47;14497:131;14623:4;14497:131;:::i;:::-;14489:139;;14387:248;;;:::o;14641:419::-;;14845:2;14834:9;14830:18;14822:26;;14894:9;14888:4;14884:20;14880:1;14869:9;14865:17;14858:47;14922:131;15048:4;14922:131;:::i;:::-;14914:139;;14812:248;;;:::o;15066:419::-;;15270:2;15259:9;15255:18;15247:26;;15319:9;15313:4;15309:20;15305:1;15294:9;15290:17;15283:47;15347:131;15473:4;15347:131;:::i;:::-;15339:139;;15237:248;;;:::o;15491:419::-;;15695:2;15684:9;15680:18;15672:26;;15744:9;15738:4;15734:20;15730:1;15719:9;15715:17;15708:47;15772:131;15898:4;15772:131;:::i;:::-;15764:139;;15662:248;;;:::o;15916:419::-;;16120:2;16109:9;16105:18;16097:26;;16169:9;16163:4;16159:20;16155:1;16144:9;16140:17;16133:47;16197:131;16323:4;16197:131;:::i;:::-;16189:139;;16087:248;;;:::o;16341:419::-;;16545:2;16534:9;16530:18;16522:26;;16594:9;16588:4;16584:20;16580:1;16569:9;16565:17;16558:47;16622:131;16748:4;16622:131;:::i;:::-;16614:139;;16512:248;;;:::o;16766:419::-;;16970:2;16959:9;16955:18;16947:26;;17019:9;17013:4;17009:20;17005:1;16994:9;16990:17;16983:47;17047:131;17173:4;17047:131;:::i;:::-;17039:139;;16937:248;;;:::o;17191:419::-;;17395:2;17384:9;17380:18;17372:26;;17444:9;17438:4;17434:20;17430:1;17419:9;17415:17;17408:47;17472:131;17598:4;17472:131;:::i;:::-;17464:139;;17362:248;;;:::o;17616:419::-;;17820:2;17809:9;17805:18;17797:26;;17869:9;17863:4;17859:20;17855:1;17844:9;17840:17;17833:47;17897:131;18023:4;17897:131;:::i;:::-;17889:139;;17787:248;;;:::o;18041:222::-;;18172:2;18161:9;18157:18;18149:26;;18185:71;18253:1;18242:9;18238:17;18229:6;18185:71;:::i;:::-;18139:124;;;;:::o;18269:214::-;;18396:2;18385:9;18381:18;18373:26;;18409:67;18473:1;18462:9;18458:17;18449:6;18409:67;:::i;:::-;18363:120;;;;:::o;18489:99::-;;18575:5;18569:12;18559:22;;18548:40;;;:::o;18594:169::-;;18712:6;18707:3;18700:19;18752:4;18747:3;18743:14;18728:29;;18690:73;;;;:::o;18769:305::-;;18828:20;18846:1;18828:20;:::i;:::-;18823:25;;18862:20;18880:1;18862:20;:::i;:::-;18857:25;;19016:1;18948:66;18944:74;18941:1;18938:81;18935:2;;;19022:18;;:::i;:::-;18935:2;19066:1;19063;19059:9;19052:16;;18813:261;;;;:::o;19080:185::-;;19137:20;19155:1;19137:20;:::i;:::-;19132:25;;19171:20;19189:1;19171:20;:::i;:::-;19166:25;;19210:1;19200:2;;19215:18;;:::i;:::-;19200:2;19257:1;19254;19250:9;19245:14;;19122:143;;;;:::o;19271:848::-;;;19363:6;19354:15;;19387:5;19378:14;;19401:712;19422:1;19412:8;19409:15;19401:712;;;19517:4;19512:3;19508:14;19502:4;19499:24;19496:2;;;19526:18;;:::i;:::-;19496:2;19576:1;19566:8;19562:16;19559:2;;;19991:4;19984:5;19980:16;19971:25;;19559:2;20041:4;20035;20031:15;20023:23;;20071:32;20094:8;20071:32;:::i;:::-;20059:44;;19401:712;;;19344:775;;;;;;;:::o;20125:285::-;;20209:23;20227:4;20209:23;:::i;:::-;20201:31;;20253:27;20271:8;20253:27;:::i;:::-;20241:39;;20299:104;20336:66;20326:8;20320:4;20299:104;:::i;:::-;20290:113;;20191:219;;;;:::o;20416:1073::-;;20661:8;20651:2;;20682:1;20673:10;;20684:5;;20651:2;20710:4;20700:2;;20727:1;20718:10;;20729:5;;20700:2;20796:4;20844:1;20839:27;;;;20880:1;20875:191;;;;20789:277;;20839:27;20857:1;20848:10;;20859:5;;;20875:191;20920:3;20910:8;20907:17;20904:2;;;20927:18;;:::i;:::-;20904:2;20976:8;20973:1;20969:16;20960:25;;21011:3;21004:5;21001:14;20998:2;;;21018:18;;:::i;:::-;20998:2;21051:5;;;20789:277;;21175:2;21165:8;21162:16;21156:3;21150:4;21147:13;21143:36;21125:2;21115:8;21112:16;21107:2;21101:4;21098:12;21094:35;21078:111;21075:2;;;21231:8;21225:4;21221:19;21212:28;;21266:3;21259:5;21256:14;21253:2;;;21273:18;;:::i;:::-;21253:2;21306:5;;21075:2;21346:42;21384:3;21374:8;21368:4;21365:1;21346:42;:::i;:::-;21331:57;;;;21420:4;21415:3;21411:14;21404:5;21401:25;21398:2;;;21429:18;;:::i;:::-;21398:2;21478:4;21471:5;21467:16;21458:25;;20476:1013;;;;;;:::o;21495:348::-;;21558:20;21576:1;21558:20;:::i;:::-;21553:25;;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21780:1;21712:66;21708:74;21705:1;21702:81;21697:1;21690:9;21683:17;21679:105;21676:2;;;21787:18;;:::i;:::-;21676:2;21835:1;21832;21828:9;21817:20;;21543:300;;;;:::o;21849:191::-;;21909:20;21927:1;21909:20;:::i;:::-;21904:25;;21943:20;21961:1;21943:20;:::i;:::-;21938:25;;21982:1;21979;21976:8;21973:2;;;21987:18;;:::i;:::-;21973:2;22032:1;22029;22025:9;22017:17;;21894:146;;;;:::o;22046:96::-;;22112:24;22130:5;22112:24;:::i;:::-;22101:35;;22091:51;;;:::o;22148:90::-;;22225:5;22218:13;22211:21;22200:32;;22190:48;;;:::o;22244:126::-;;22321:42;22314:5;22310:54;22299:65;;22289:81;;;:::o;22376:77::-;;22442:5;22431:16;;22421:32;;;:::o;22459:86::-;;22534:4;22527:5;22523:16;22512:27;;22502:43;;;:::o;22551:178::-;;22660:63;22717:5;22660:63;:::i;:::-;22647:76;;22637:92;;;:::o;22735:139::-;;22844:24;22862:5;22844:24;:::i;:::-;22831:37;;22821:53;;;:::o;22880:307::-;22948:1;22958:113;22972:6;22969:1;22966:13;22958:113;;;23057:1;23052:3;23048:11;23042:18;23038:1;23033:3;23029:11;23022:39;22994:2;22991:1;22987:10;22982:15;;22958:113;;;23089:6;23086:1;23083:13;23080:2;;;23169:1;23160:6;23155:3;23151:16;23144:27;23080:2;22929:258;;;;:::o;23193:320::-;;23274:1;23268:4;23264:12;23254:22;;23321:1;23315:4;23311:12;23342:18;23332:2;;23398:4;23390:6;23386:17;23376:27;;23332:2;23460;23452:6;23449:14;23429:18;23426:38;23423:2;;;23479:18;;:::i;:::-;23423:2;23244:269;;;;:::o;23519:233::-;;23581:24;23599:5;23581:24;:::i;:::-;23572:33;;23627:66;23620:5;23617:77;23614:2;;;23697:18;;:::i;:::-;23614:2;23744:1;23737:5;23733:13;23726:20;;23562:190;;;:::o;23758:180::-;23806:77;23803:1;23796:88;23903:4;23900:1;23893:15;23927:4;23924:1;23917:15;23944:180;23992:77;23989:1;23982:88;24089:4;24086:1;24079:15;24113:4;24110:1;24103:15;24130:180;24178:77;24175:1;24168:88;24275:4;24272:1;24265:15;24299:4;24296:1;24289:15;24316:102;;24408:2;24404:7;24399:2;24392:5;24388:14;24384:28;24374:38;;24364:54;;;:::o;24424:102::-;;24513:5;24510:1;24506:13;24485:34;;24475:51;;;:::o;24532:122::-;24605:24;24623:5;24605:24;:::i;:::-;24598:5;24595:35;24585:2;;24644:1;24641;24634:12;24585:2;24575:79;:::o;24660:116::-;24730:21;24745:5;24730:21;:::i;:::-;24723:5;24720:32;24710:2;;24766:1;24763;24756:12;24710:2;24700:76;:::o;24782:122::-;24855:24;24873:5;24855:24;:::i;:::-;24848:5;24845:35;24835:2;;24894:1;24891;24884:12;24835:2;24825:79;:::o
Swarm Source
ipfs://7c0f9126030fd90850d2cb98f479acbbc166d26371ea691f62cb82e484d41046
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.245595 | 1 | $0.245595 |
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.