ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 eGalaxy 🚀
Holders
40
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
604,583,298,120.436690609 eGalaxy 🚀Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ElonGalaxy
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-22 */ // 🚀 WELCOME TO ELON GALAXY | $eGalaxy 🚀 // // Website : t.me/eGalaxyToken // Telegram : elongalaxy.com pragma solidity ^0.6.12; // SPDX-License-Identifier: Unlicensed interface IERC20 { 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @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; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @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; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; 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); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); 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; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ElonGalaxy is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Elon Galaxy"; string private _symbol = "eGalaxy 🚀"; uint8 private _decimals = 9; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 15; uint256 private _previousLiquidityFee = _liquidityFee; address payable public _devWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 2500000 * 10**6 * 10**9; uint256 private numTokensSellToAddToLiquidity = 500000 * 10**6 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address payable devWalletAddress) public { _devWalletAddress = devWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function setDevFeeDisabled(bool _devFeeEnabled ) public returns (bool){ require(msg.sender == _devWalletAddress, "Only Dev Address can disable dev fee"); swapAndLiquifyEnabled = _devFeeEnabled; return(swapAndLiquifyEnabled); } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function _setdevWallet(address payable devWalletAddress) external onlyOwner() { _devWalletAddress = devWalletAddress; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.'); require(!_isBlackListedBot[account], "Account is already blacklisted"); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlackList(address account) external onlyOwner() { require(_isBlackListedBot[account], "Account is not blacklisted"); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[to], "You have no power here!"); require(!_isBlackListedBot[msg.sender], "You have no power here!"); require(!_isBlackListedBot[from], "You have no power here!"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 tokenBalance = contractTokenBalance; // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(tokenBalance); // <- breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); sendETHTodev(newBalance); // add liquidity to uniswap emit SwapAndLiquify(tokenBalance, newBalance); } function sendETHTodev(uint256 amount) private { _devWalletAddress.transfer(amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"}],"name":"_setdevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_devFeeEnabled","type":"bool"}],"name":"setDevFeeDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405269d3c21bcecceda1000000600b55600b54600019816200002057fe5b0660001903600c556040518060400160405280600b81526020017f456c6f6e2047616c617879000000000000000000000000000000000000000000815250600e90805190602001906200007592919062000674565b506040518060400160405280600c81526020017f6547616c61787920f09f9a800000000000000000000000000000000000000000815250600f9080519060200190620000c392919062000674565b506009601060006101000a81548160ff021916908360ff1602179055506000601155601154601255600f60135560135460145560016015806101000a81548160ff02191690831515021790555068878678326eac900000601655681b1ae4d6e2ef5000006017553480156200013757600080fd5b5060405162005bfb38038062005bfb833981810160405260208110156200015d57600080fd5b81019080805190602001909291905050506000620001806200064360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5460036000620002766200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b457600080fd5b505afa158015620003c9573d6000803e3d6000fd5b505050506040513d6020811015620003e057600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200045b57600080fd5b505af115801562000470573d6000803e3d6000fd5b505050506040513d60208110156200048757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200051b6200064b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d46200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a350506200071a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006b757805160ff1916838001178555620006e8565b82800160010185558215620006e8579182015b82811115620006e7578251825591602001919060010190620006ca565b5b509050620006f79190620006fb565b5090565b5b8082111562000716576000816000905550600101620006fc565b5090565b60805160601c60a05160601c6154a36200075860003980611c35528061370f52508061100652806143c052806144ac52806144d352506154a36000f3fe6080604052600436106102345760003560e01c80635342acb41161012e578063a0c072d4116100ab578063c49b9a801161006f578063c49b9a8014610cc9578063d543dbeb14610d06578063dd62ed3e14610d41578063ea2f0b3714610dc6578063f2fde38b14610e175761023b565b8063a0c072d414610b02578063a457c2d714610b53578063a9059cbb14610bc4578063aae1157114610c35578063b425bac314610c885761023b565b80637ded4d6a116100f25780637ded4d6a1461093e57806388f820201461098f5780638da5cb5b146109f65780638ee88c5314610a3757806395d89b4114610a725761023b565b80635342acb4146108055780636bc87c3a1461086c57806370a0823114610897578063715018a6146108fc5780637d1db4a5146109135761023b565b80633685d419116101bc578063437823ec11610180578063437823ec1461069a5780634549b039146106eb57806349bd5a5e146107465780634a74bb021461078757806352390c02146107b45761023b565b80633685d4191461052157806339509351146105725780633b124fe7146105e35780633bd5d1731461060e5780634303443d146106495761023b565b80631694505e116102035780631694505e146103a757806318160ddd146103e857806323b872dd146104135780632d838119146104a4578063313ce567146104f35761023b565b8063061c82d01461024057806306fdde031461027b578063095ea7b31461030b57806313114a9d1461037c5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102796004803603602081101561026357600080fd5b8101908080359060200190929190505050610e68565b005b34801561028757600080fd5b50610290610f3a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d05780820151818401526020810190506102b5565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031757600080fd5b506103646004803603604081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b60405180821515815260200191505060405180910390f35b34801561038857600080fd5b50610391610ffa565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103bc611004565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f457600080fd5b506103fd611028565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611032565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b810190808035906020019092919050505061110b565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b5061050861118f565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b506105706004803603602081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111a6565b005b34801561057e57600080fd5b506105cb6004803603604081101561059557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b60405180821515815260200191505060405180910390f35b3480156105ef57600080fd5b506105f86115e3565b6040518082815260200191505060405180910390f35b34801561061a57600080fd5b506106476004803603602081101561063157600080fd5b81019080803590602001909291905050506115e9565b005b34801561065557600080fd5b506106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177a565b005b3480156106a657600080fd5b506106e9600480360360208110156106bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b005b3480156106f757600080fd5b506107306004803603604081101561070e57600080fd5b8101908080359060200190929190803515159060200190929190505050611b7c565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b5061075b611c33565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611c57565b60405180821515815260200191505060405180910390f35b3480156107c057600080fd5b50610803600480360360208110156107d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c68565b005b34801561081157600080fd5b506108546004803603602081101561082857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b60405180821515815260200191505060405180910390f35b34801561087857600080fd5b50610881611fd8565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108e6600480360360208110156108ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109116120c9565b005b34801561091f57600080fd5b5061092861224f565b6040518082815260200191505060405180910390f35b34801561094a57600080fd5b5061098d6004803603602081101561096157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612255565b005b34801561099b57600080fd5b506109de600480360360208110156109b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259a565b60405180821515815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b6125f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050612619565b005b348015610a7e57600080fd5b50610a876126eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ac7578082015181840152602081019050610aac565b50505050905090810190601f168015610af45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b0e57600080fd5b50610b5160048036036020811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278d565b005b348015610b5f57600080fd5b50610bac60048036036040811015610b7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612899565b60405180821515815260200191505060405180910390f35b348015610bd057600080fd5b50610c1d60048036036040811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612966565b60405180821515815260200191505060405180910390f35b348015610c4157600080fd5b50610c7060048036036020811015610c5857600080fd5b81019080803515159060200190929190505050612984565b60405180821515815260200191505060405180910390f35b348015610c9457600080fd5b50610c9d612a5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cd557600080fd5b50610d0460048036036020811015610cec57600080fd5b81019080803515159060200190929190505050612a80565b005b348015610d1257600080fd5b50610d3f60048036036020811015610d2957600080fd5b8101908080359060200190929190505050612b9d565b005b348015610d4d57600080fd5b50610db060048036036040811015610d6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c96565b6040518082815260200191505060405180910390f35b348015610dd257600080fd5b50610e1560048036036020811015610de957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d1d565b005b348015610e2357600080fd5b50610e6660048036036020811015610e3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e40565b005b610e7061304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fd25780601f10610fa757610100808354040283529160200191610fd2565b820191906000526020600020905b815481529060010190602001808311610fb557829003601f168201915b5050505050905090565b6000610ff0610fe961304b565b8484613053565b6001905092915050565b6000600d54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600b54905090565b600061103f84848461324a565b6111008461104b61304b565b6110fb8560405180606001604052806028815260200161535f60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110b161304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138489092919063ffffffff16565b613053565b600190509392505050565b6000600c54821115611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152a4602a913960400191505060405180910390fd5b6000611172613908565b9050611187818461393390919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b6111ae61304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561152c578173ffffffffffffffffffffffffffffffffffffffff166008828154811061136157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561151f576008600160088054905003815481106113bd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106113f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806114e557fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561152c565b8080600101915050611330565b5050565b60006115d961153d61304b565b846115d4856005600061154e61304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b613053565b6001905092915050565b60115481565b60006115f361304b565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061541d602c913960400191505060405180910390fd5b60006116a383613a05565b505050505090506116fc81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061175481600c54613a6190919063ffffffff16565b600c8190555061176f83600d5461397d90919063ffffffff16565b600d81905550505050565b61178261304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153b06024913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a6161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b54831115611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611c16576000611c0684613a05565b5050505050905080915050611c2d565b6000611c2184613a05565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60158054906101000a900460ff1681565b611c7061304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ec457611e80600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561207957600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506120c4565b6120c1600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110b565b90505b919050565b6120d161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b61225d61304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a80549050811015612596578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061241057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561258957600a6001600a80549050038154811061246c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106124a457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a80548061254f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612596565b80806001019150506123df565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61262161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127835780601f1061275857610100808354040283529160200191612783565b820191906000526020600020905b81548152906001019060200180831161276657829003601f168201915b5050505050905090565b61279561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061295c6128a661304b565b846129578560405180606001604052806025815260200161544960259139600560006128d061304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138489092919063ffffffff16565b613053565b6001905092915050565b600061297a61297361304b565b848461324a565b6001905092915050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061525d6024913960400191505060405180910390fd5b816015806101000a81548160ff02191690831515021790555060158054906101000a900460ff169050919050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a8861304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612ba561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c8d6064612c7f83600b54613aab90919063ffffffff16565b61393390919063ffffffff16565b60168190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d2561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612e4861304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152ce6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153f96024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561315f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152f46022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153d46025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152816023913960400191505060405180910390fd5b600081116133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153876029913960400191505060405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561346f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561352f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b6135f76125f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561366557506136356125f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136c6576016548111156136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153166028913960400191505060405180910390fd5b5b60006136d130611fde565b905060165481106136e25760165490505b600060175482101590508080156137065750601560149054906101000a900460ff16155b801561375e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015613774575060158054906101000a900460ff165b156137835761378282613b31565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061382a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561383457600090505b61384086868684613bdf565b505050505050565b60008383111582906138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138ba57808201518184015260208101905061389f565b50505050905090810190601f1680156138e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613915613ef0565b9150915061392c818361393390919063ffffffff16565b9250505090565b600061397583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614181565b905092915050565b6000808284019050838110156139fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613a1c8a614247565b9250925092506000806000613a3a8d8686613a35613908565b6142a1565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613aa383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613848565b905092915050565b600080831415613abe5760009050613b2b565b6000828402905082848281613acf57fe5b0414613b26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061533e6021913960400191505060405180910390fd5b809150505b92915050565b6001601560146101000a81548160ff02191690831515021790555060008190506000479050613b5f8261432a565b6000613b748247613a6190919063ffffffff16565b9050613b7f816145d8565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051808381526020018281526020019250505060405180910390a15050506000601560146101000a81548160ff02191690831515021790555050565b80613bed57613bec614644565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c905750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ca557613ca0848484614687565b613edc565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d485750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d5d57613d588484846148e7565b613edb565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e015750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613e1657613e11848484614b47565b613eda565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613eb85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ecd57613ec8848484614d12565b613ed9565b613ed8848484614b47565b5b5b5b5b80613eea57613ee9615007565b5b50505050565b6000806000600c5490506000600b54905060005b60088054905081101561414457826003600060088481548110613f2357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061400a5750816004600060088481548110613fa257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561402157600c54600b549450945050505061417d565b6140aa600360006008848154811061403557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a6190919063ffffffff16565b925061413560046000600884815481106140c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a6190919063ffffffff16565b91508080600101915050613f04565b5061415c600b54600c5461393390919063ffffffff16565b82101561417457600c54600b5493509350505061417d565b81819350935050505b9091565b6000808311829061422d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141f25780820151818401526020810190506141d7565b50505050905090810190601f16801561421f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161423957fe5b049050809150509392505050565b6000806000806142568561501b565b905060006142638661504c565b9050600061428c8261427e858a613a6190919063ffffffff16565b613a6190919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806142ba8589613aab90919063ffffffff16565b905060006142d18689613aab90919063ffffffff16565b905060006142e88789613aab90919063ffffffff16565b90506000614311826143038587613a6190919063ffffffff16565b613a6190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561434457600080fd5b506040519080825280602002602001820160405280156143735781602001602082028036833780820191505090505b509050308160008151811061438457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561442457600080fd5b505afa158015614438573d6000803e3d6000fd5b505050506040513d602081101561444e57600080fd5b81019080805190602001909291905050508160018151811061446c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144d1307f000000000000000000000000000000000000000000000000000000000000000084613053565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614593578082015181840152602081019050614578565b505050509050019650505050505050600060405180830381600087803b1580156145bc57600080fd5b505af11580156145d0573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614640573d6000803e3d6000fd5b5050565b600060115414801561465857506000601354145b1561466257614685565b601154601281905550601354601481905550600060118190555060006013819055505b565b60008060008060008061469987613a05565b9550955095509550955095506146f787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061478c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061482185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061486d8161507d565b6148778483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806148f987613a05565b95509550955095509550955061495786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149ec83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a8185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614acd8161507d565b614ad78483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614b5987613a05565b955095509550955095509550614bb786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c4c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c988161507d565b614ca28483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614d2487613a05565b955095509550955095509550614d8287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e1786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614eac83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f4185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f8d8161507d565b614f978483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601181905550601454601381905550565b6000615045606461503760115485613aab90919063ffffffff16565b61393390919063ffffffff16565b9050919050565b6000615076606461506860135485613aab90919063ffffffff16565b61393390919063ffffffff16565b9050919050565b6000615087613908565b9050600061509e8284613aab90919063ffffffff16565b90506150f281600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561521d576151d983600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61523782600c54613a6190919063ffffffff16565b600c8190555061525281600d5461397d90919063ffffffff16565b600d81905550505056fe4f6e6c792044657620416464726573732063616e2064697361626c65206465762066656545524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2c6d9ff4a7fd18476130a12fc8c3c88d39c1e426fff54db4e000737ac48a6a164736f6c634300060c0033000000000000000000000000cfacaa2f162a7ce5d0ff1d2f175679938aab4726
Deployed Bytecode
0x6080604052600436106102345760003560e01c80635342acb41161012e578063a0c072d4116100ab578063c49b9a801161006f578063c49b9a8014610cc9578063d543dbeb14610d06578063dd62ed3e14610d41578063ea2f0b3714610dc6578063f2fde38b14610e175761023b565b8063a0c072d414610b02578063a457c2d714610b53578063a9059cbb14610bc4578063aae1157114610c35578063b425bac314610c885761023b565b80637ded4d6a116100f25780637ded4d6a1461093e57806388f820201461098f5780638da5cb5b146109f65780638ee88c5314610a3757806395d89b4114610a725761023b565b80635342acb4146108055780636bc87c3a1461086c57806370a0823114610897578063715018a6146108fc5780637d1db4a5146109135761023b565b80633685d419116101bc578063437823ec11610180578063437823ec1461069a5780634549b039146106eb57806349bd5a5e146107465780634a74bb021461078757806352390c02146107b45761023b565b80633685d4191461052157806339509351146105725780633b124fe7146105e35780633bd5d1731461060e5780634303443d146106495761023b565b80631694505e116102035780631694505e146103a757806318160ddd146103e857806323b872dd146104135780632d838119146104a4578063313ce567146104f35761023b565b8063061c82d01461024057806306fdde031461027b578063095ea7b31461030b57806313114a9d1461037c5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102796004803603602081101561026357600080fd5b8101908080359060200190929190505050610e68565b005b34801561028757600080fd5b50610290610f3a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d05780820151818401526020810190506102b5565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031757600080fd5b506103646004803603604081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b60405180821515815260200191505060405180910390f35b34801561038857600080fd5b50610391610ffa565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103bc611004565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f457600080fd5b506103fd611028565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611032565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b810190808035906020019092919050505061110b565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b5061050861118f565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b506105706004803603602081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111a6565b005b34801561057e57600080fd5b506105cb6004803603604081101561059557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b60405180821515815260200191505060405180910390f35b3480156105ef57600080fd5b506105f86115e3565b6040518082815260200191505060405180910390f35b34801561061a57600080fd5b506106476004803603602081101561063157600080fd5b81019080803590602001909291905050506115e9565b005b34801561065557600080fd5b506106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177a565b005b3480156106a657600080fd5b506106e9600480360360208110156106bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b005b3480156106f757600080fd5b506107306004803603604081101561070e57600080fd5b8101908080359060200190929190803515159060200190929190505050611b7c565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b5061075b611c33565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611c57565b60405180821515815260200191505060405180910390f35b3480156107c057600080fd5b50610803600480360360208110156107d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c68565b005b34801561081157600080fd5b506108546004803603602081101561082857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b60405180821515815260200191505060405180910390f35b34801561087857600080fd5b50610881611fd8565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108e6600480360360208110156108ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109116120c9565b005b34801561091f57600080fd5b5061092861224f565b6040518082815260200191505060405180910390f35b34801561094a57600080fd5b5061098d6004803603602081101561096157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612255565b005b34801561099b57600080fd5b506109de600480360360208110156109b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259a565b60405180821515815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b6125f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050612619565b005b348015610a7e57600080fd5b50610a876126eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ac7578082015181840152602081019050610aac565b50505050905090810190601f168015610af45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b0e57600080fd5b50610b5160048036036020811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278d565b005b348015610b5f57600080fd5b50610bac60048036036040811015610b7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612899565b60405180821515815260200191505060405180910390f35b348015610bd057600080fd5b50610c1d60048036036040811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612966565b60405180821515815260200191505060405180910390f35b348015610c4157600080fd5b50610c7060048036036020811015610c5857600080fd5b81019080803515159060200190929190505050612984565b60405180821515815260200191505060405180910390f35b348015610c9457600080fd5b50610c9d612a5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cd557600080fd5b50610d0460048036036020811015610cec57600080fd5b81019080803515159060200190929190505050612a80565b005b348015610d1257600080fd5b50610d3f60048036036020811015610d2957600080fd5b8101908080359060200190929190505050612b9d565b005b348015610d4d57600080fd5b50610db060048036036040811015610d6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c96565b6040518082815260200191505060405180910390f35b348015610dd257600080fd5b50610e1560048036036020811015610de957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d1d565b005b348015610e2357600080fd5b50610e6660048036036020811015610e3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e40565b005b610e7061304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fd25780601f10610fa757610100808354040283529160200191610fd2565b820191906000526020600020905b815481529060010190602001808311610fb557829003601f168201915b5050505050905090565b6000610ff0610fe961304b565b8484613053565b6001905092915050565b6000600d54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600b54905090565b600061103f84848461324a565b6111008461104b61304b565b6110fb8560405180606001604052806028815260200161535f60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110b161304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138489092919063ffffffff16565b613053565b600190509392505050565b6000600c54821115611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152a4602a913960400191505060405180910390fd5b6000611172613908565b9050611187818461393390919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b6111ae61304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561152c578173ffffffffffffffffffffffffffffffffffffffff166008828154811061136157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561151f576008600160088054905003815481106113bd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106113f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806114e557fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561152c565b8080600101915050611330565b5050565b60006115d961153d61304b565b846115d4856005600061154e61304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b613053565b6001905092915050565b60115481565b60006115f361304b565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061541d602c913960400191505060405180910390fd5b60006116a383613a05565b505050505090506116fc81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061175481600c54613a6190919063ffffffff16565b600c8190555061176f83600d5461397d90919063ffffffff16565b600d81905550505050565b61178261304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153b06024913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a6161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b54831115611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611c16576000611c0684613a05565b5050505050905080915050611c2d565b6000611c2184613a05565b50505050915050809150505b92915050565b7f00000000000000000000000014795a68a0f6015353affba51cebeb3fc6647b6d81565b60158054906101000a900460ff1681565b611c7061304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ec457611e80600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561207957600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506120c4565b6120c1600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110b565b90505b919050565b6120d161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b61225d61304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a80549050811015612596578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061241057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561258957600a6001600a80549050038154811061246c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106124a457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a80548061254f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612596565b80806001019150506123df565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61262161304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127835780601f1061275857610100808354040283529160200191612783565b820191906000526020600020905b81548152906001019060200180831161276657829003601f168201915b5050505050905090565b61279561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061295c6128a661304b565b846129578560405180606001604052806025815260200161544960259139600560006128d061304b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138489092919063ffffffff16565b613053565b6001905092915050565b600061297a61297361304b565b848461324a565b6001905092915050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061525d6024913960400191505060405180910390fd5b816015806101000a81548160ff02191690831515021790555060158054906101000a900460ff169050919050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a8861304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612ba561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c8d6064612c7f83600b54613aab90919063ffffffff16565b61393390919063ffffffff16565b60168190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d2561304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612e4861304b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152ce6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153f96024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561315f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152f46022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153d46025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152816023913960400191505060405180910390fd5b600081116133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153876029913960400191505060405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561346f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561352f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b6135f76125f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561366557506136356125f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136c6576016548111156136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153166028913960400191505060405180910390fd5b5b60006136d130611fde565b905060165481106136e25760165490505b600060175482101590508080156137065750601560149054906101000a900460ff16155b801561375e57507f00000000000000000000000014795a68a0f6015353affba51cebeb3fc6647b6d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015613774575060158054906101000a900460ff165b156137835761378282613b31565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061382a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561383457600090505b61384086868684613bdf565b505050505050565b60008383111582906138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138ba57808201518184015260208101905061389f565b50505050905090810190601f1680156138e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613915613ef0565b9150915061392c818361393390919063ffffffff16565b9250505090565b600061397583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614181565b905092915050565b6000808284019050838110156139fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613a1c8a614247565b9250925092506000806000613a3a8d8686613a35613908565b6142a1565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613aa383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613848565b905092915050565b600080831415613abe5760009050613b2b565b6000828402905082848281613acf57fe5b0414613b26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061533e6021913960400191505060405180910390fd5b809150505b92915050565b6001601560146101000a81548160ff02191690831515021790555060008190506000479050613b5f8261432a565b6000613b748247613a6190919063ffffffff16565b9050613b7f816145d8565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051808381526020018281526020019250505060405180910390a15050506000601560146101000a81548160ff02191690831515021790555050565b80613bed57613bec614644565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c905750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ca557613ca0848484614687565b613edc565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d485750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d5d57613d588484846148e7565b613edb565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e015750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613e1657613e11848484614b47565b613eda565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613eb85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ecd57613ec8848484614d12565b613ed9565b613ed8848484614b47565b5b5b5b5b80613eea57613ee9615007565b5b50505050565b6000806000600c5490506000600b54905060005b60088054905081101561414457826003600060088481548110613f2357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061400a5750816004600060088481548110613fa257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561402157600c54600b549450945050505061417d565b6140aa600360006008848154811061403557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a6190919063ffffffff16565b925061413560046000600884815481106140c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a6190919063ffffffff16565b91508080600101915050613f04565b5061415c600b54600c5461393390919063ffffffff16565b82101561417457600c54600b5493509350505061417d565b81819350935050505b9091565b6000808311829061422d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141f25780820151818401526020810190506141d7565b50505050905090810190601f16801561421f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161423957fe5b049050809150509392505050565b6000806000806142568561501b565b905060006142638661504c565b9050600061428c8261427e858a613a6190919063ffffffff16565b613a6190919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806142ba8589613aab90919063ffffffff16565b905060006142d18689613aab90919063ffffffff16565b905060006142e88789613aab90919063ffffffff16565b90506000614311826143038587613a6190919063ffffffff16565b613a6190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561434457600080fd5b506040519080825280602002602001820160405280156143735781602001602082028036833780820191505090505b509050308160008151811061438457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561442457600080fd5b505afa158015614438573d6000803e3d6000fd5b505050506040513d602081101561444e57600080fd5b81019080805190602001909291905050508160018151811061446c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144d1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613053565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614593578082015181840152602081019050614578565b505050509050019650505050505050600060405180830381600087803b1580156145bc57600080fd5b505af11580156145d0573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614640573d6000803e3d6000fd5b5050565b600060115414801561465857506000601354145b1561466257614685565b601154601281905550601354601481905550600060118190555060006013819055505b565b60008060008060008061469987613a05565b9550955095509550955095506146f787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061478c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061482185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061486d8161507d565b6148778483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806148f987613a05565b95509550955095509550955061495786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149ec83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a8185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614acd8161507d565b614ad78483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614b5987613a05565b955095509550955095509550614bb786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c4c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c988161507d565b614ca28483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614d2487613a05565b955095509550955095509550614d8287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e1786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a6190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614eac83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f4185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f8d8161507d565b614f978483615222565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601181905550601454601381905550565b6000615045606461503760115485613aab90919063ffffffff16565b61393390919063ffffffff16565b9050919050565b6000615076606461506860135485613aab90919063ffffffff16565b61393390919063ffffffff16565b9050919050565b6000615087613908565b9050600061509e8284613aab90919063ffffffff16565b90506150f281600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561521d576151d983600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61523782600c54613a6190919063ffffffff16565b600c8190555061525281600d5461397d90919063ffffffff16565b600d81905550505056fe4f6e6c792044657620416464726573732063616e2064697361626c65206465762066656545524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2c6d9ff4a7fd18476130a12fc8c3c88d39c1e426fff54db4e000737ac48a6a164736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cfacaa2f162a7ce5d0ff1d2f175679938aab4726
-----Decoded View---------------
Arg [0] : devWalletAddress (address): 0xCfacAa2F162A7CE5d0Ff1D2F175679938aab4726
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cfacaa2f162a7ce5d0ff1d2f175679938aab4726
Deployed Bytecode Sourcemap
24973:20067:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32914:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27579:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28761:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29882:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26102:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28126:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28930:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30806:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27765:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31522:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29251:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25868:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29977:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36558:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32669:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30362:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26160:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26239:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31067:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37829:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25951:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28229:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16322:148;;;;;;;;;;;;;:::i;:::-;;26292:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36918:500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29754:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15679:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33024:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27670:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33158:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29477:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28435:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27860:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26053:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33473:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33303:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28610:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32792:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16625:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32914:98;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32998:6:::1;32988:7;:16;;;;32914:98:::0;:::o;27579:83::-;27616:13;27649:5;27642:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27579:83;:::o;28761:161::-;28836:4;28853:39;28862:12;:10;:12::i;:::-;28876:7;28885:6;28853:8;:39::i;:::-;28910:4;28903:11;;28761:161;;;;:::o;29882:87::-;29924:7;29951:10;;29944:17;;29882:87;:::o;26102:51::-;;;:::o;28126:95::-;28179:7;28206;;28199:14;;28126:95;:::o;28930:313::-;29028:4;29045:36;29055:6;29063:9;29074:6;29045:9;:36::i;:::-;29092:121;29101:6;29109:12;:10;:12::i;:::-;29123:89;29161:6;29123:89;;;;;;;;;;;;;;;;;:11;:19;29135:6;29123:19;;;;;;;;;;;;;;;:33;29143:12;:10;:12::i;:::-;29123:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29092:8;:121::i;:::-;29231:4;29224:11;;28930:313;;;;;:::o;30806:253::-;30872:7;30911;;30900;:18;;30892:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30976:19;30999:10;:8;:10::i;:::-;30976:33;;31027:24;31039:11;31027:7;:11;;:24;;;;:::i;:::-;31020:31;;;30806:253;;;:::o;27765:83::-;27806:5;27831:9;;;;;;;;;;;27824:16;;27765:83;:::o;31522:479::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31604:11:::1;:20;31616:7;31604:20;;;;;;;;;;;;;;;;;;;;;;;;;31596:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31672:9;31667:327;31691:9;:16;;;;31687:1;:20;31667:327;;;31749:7;31733:23;;:9;31743:1;31733:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;31729:254;;;31792:9;31821:1;31802:9;:16;;;;:20;31792:31;;;;;;;;;;;;;;;;;;;;;;;;;31777:9;31787:1;31777:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31861:1;31842:7;:16;31850:7;31842:16;;;;;;;;;;;;;;;:20;;;;31904:5;31881:11;:20;31893:7;31881:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;31928:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31962:5;;31729:254;31709:3;;;;;;;31667:327;;;;31522:479:::0;:::o;29251:218::-;29339:4;29356:83;29365:12;:10;:12::i;:::-;29379:7;29388:50;29427:10;29388:11;:25;29400:12;:10;:12::i;:::-;29388:25;;;;;;;;;;;;;;;:34;29414:7;29388:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;29356:8;:83::i;:::-;29457:4;29450:11;;29251:218;;;;:::o;25868:26::-;;;;:::o;29977:377::-;30029:14;30046:12;:10;:12::i;:::-;30029:29;;30078:11;:19;30090:6;30078:19;;;;;;;;;;;;;;;;;;;;;;;;;30077:20;30069:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30158:15;30182:19;30193:7;30182:10;:19::i;:::-;30157:44;;;;;;;30230:28;30250:7;30230;:15;30238:6;30230:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30212:7;:15;30220:6;30212:15;;;;;;;;;;;;;;;:46;;;;30279:20;30291:7;30279;;:11;;:20;;;;:::i;:::-;30269:7;:30;;;;30323:23;30338:7;30323:10;;:14;;:23;;;;:::i;:::-;30310:10;:36;;;;29977:377;;;:::o;36558:352::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36653:42:::1;36642:53;;:7;:53;;;;36634:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36756:17;:26;36774:7;36756:26;;;;;;;;;;;;;;;;;;;;;;;;;36755:27;36747:70;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36857:4;36828:17;:26;36846:7;36828:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;36872:16;36894:7;36872:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36558:352:::0;:::o;32669:111::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32768:4:::1;32738:18;:27;32757:7;32738:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;32669:111:::0;:::o;30362:436::-;30452:7;30491;;30480;:18;;30472:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30550:17;30545:246;;30585:15;30609:19;30620:7;30609:10;:19::i;:::-;30584:44;;;;;;;30650:7;30643:14;;;;;30545:246;30692:23;30723:19;30734:7;30723:10;:19::i;:::-;30690:52;;;;;;;30764:15;30757:22;;;30362:436;;;;;:::o;26160:38::-;;;:::o;26239:40::-;;;;;;;;;;;;:::o;31067:447::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31264:11:::1;:20;31276:7;31264:20;;;;;;;;;;;;;;;;;;;;;;;;;31263:21;31255:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31349:1;31330:7;:16;31338:7;31330:16;;;;;;;;;;;;;;;;:20;31327:108;;;31386:37;31406:7;:16;31414:7;31406:16;;;;;;;;;;;;;;;;31386:19;:37::i;:::-;31367:7;:16;31375:7;31367:16;;;;;;;;;;;;;;;:56;;;;31327:108;31468:4;31445:11;:20;31457:7;31445:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;31483:9;31498:7;31483:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31067:447:::0;:::o;37829:123::-;37893:4;37917:18;:27;37936:7;37917:27;;;;;;;;;;;;;;;;;;;;;;;;;37910:34;;37829:123;;;:::o;25951:33::-;;;;:::o;28229:198::-;28295:7;28319:11;:20;28331:7;28319:20;;;;;;;;;;;;;;;;;;;;;;;;;28315:49;;;28348:7;:16;28356:7;28348:16;;;;;;;;;;;;;;;;28341:23;;;;28315:49;28382:37;28402:7;:16;28410:7;28402:16;;;;;;;;;;;;;;;;28382:19;:37::i;:::-;28375:44;;28229:198;;;;:::o;16322:148::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16429:1:::1;16392:40;;16413:6;::::0;::::1;;;;;;;;16392:40;;;;;;;;;;;;16460:1;16443:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16322:148::o:0;26292:53::-;;;;:::o;36918:500::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37007:17:::1;:26;37025:7;37007:26;;;;;;;;;;;;;;;;;;;;;;;;;36999:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37080:9;37075:336;37099:16;:23;;;;37095:1;:27;37075:336;;;37171:7;37148:30;;:16;37165:1;37148:19;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;37144:256;;;37221:16;37264:1;37238:16;:23;;;;:27;37221:45;;;;;;;;;;;;;;;;;;;;;;;;;37199:16;37216:1;37199:19;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;37314:5;37285:17;:26;37303:7;37285:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;37338:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37379:5;;37144:256;37124:3;;;;;;;37075:336;;;;36918:500:::0;:::o;29754:120::-;29822:4;29846:11;:20;29858:7;29846:20;;;;;;;;;;;;;;;;;;;;;;;;;29839:27;;29754:120;;;:::o;15679:79::-;15717:7;15744:6;;;;;;;;;;;15737:13;;15679:79;:::o;33024:122::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33126:12:::1;33110:13;:28;;;;33024:122:::0;:::o;27670:87::-;27709:13;27742:7;27735:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27670:87;:::o;33158:133::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33267:16:::1;33247:17;;:36;;;;;;;;;;;;;;;;;;33158:133:::0;:::o;29477:269::-;29570:4;29587:129;29596:12;:10;:12::i;:::-;29610:7;29619:96;29658:15;29619:96;;;;;;;;;;;;;;;;;:11;:25;29631:12;:10;:12::i;:::-;29619:25;;;;;;;;;;;;;;;:34;29645:7;29619:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;29587:8;:129::i;:::-;29734:4;29727:11;;29477:269;;;;:::o;28435:167::-;28513:4;28530:42;28540:12;:10;:12::i;:::-;28554:9;28565:6;28530:9;:42::i;:::-;28590:4;28583:11;;28435:167;;;;:::o;27860:258::-;27925:4;27963:17;;;;;;;;;;;27949:31;;:10;:31;;;27941:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28056:14;28032:21;;:38;;;;;;;;;;;;;;;;;;28088:21;;;;;;;;;;28081:29;;27860:258;;;:::o;26053:40::-;;;;;;;;;;;;;:::o;33473:171::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33574:8:::1;33550:21;::::0;:32:::1;;;;;;;;;;;;;;;;;;33598:38;33627:8;33598:38;;;;;;;;;;;;;;;;;;;;33473:171:::0;:::o;33303:162::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33397:60:::1;33441:5;33397:25;33409:12;33397:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;33382:12;:75;;;;33303:162:::0;:::o;28610:143::-;28691:7;28718:11;:18;28730:5;28718:18;;;;;;;;;;;;;;;:27;28737:7;28718:27;;;;;;;;;;;;;;;;28711:34;;28610:143;;;;:::o;32792:110::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32889:5:::1;32859:18;:27;32878:7;32859:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32792:110:::0;:::o;16625:244::-;15901:12;:10;:12::i;:::-;15891:22;;:6;;;;;;;;;;:22;;;15883:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16734:1:::1;16714:22;;:8;:22;;;;16706:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16824:8;16795:38;;16816:6;::::0;::::1;;;;;;;;16795:38;;;;;;;;;;;;16853:8;16844:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16625:244:::0;:::o;8087:106::-;8140:15;8175:10;8168:17;;8087:106;:::o;37960:337::-;38070:1;38053:19;;:5;:19;;;;38045:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38151:1;38132:21;;:7;:21;;;;38124:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38235:6;38205:11;:18;38217:5;38205:18;;;;;;;;;;;;;;;:27;38224:7;38205:27;;;;;;;;;;;;;;;:36;;;;38273:7;38257:32;;38266:5;38257:32;;;38282:6;38257:32;;;;;;;;;;;;;;;;;;37960:337;;;:::o;38305:1993::-;38443:1;38427:18;;:4;:18;;;;38419:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38520:1;38506:16;;:2;:16;;;;38498:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38590:1;38581:6;:10;38573:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38667:17;:21;38685:2;38667:21;;;;;;;;;;;;;;;;;;;;;;;;;38666:22;38658:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38736:17;:29;38754:10;38736:29;;;;;;;;;;;;;;;;;;;;;;;;;38735:30;38727:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38813:17;:23;38831:4;38813:23;;;;;;;;;;;;;;;;;;;;;;;;;38812:24;38804:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38906:7;:5;:7::i;:::-;38898:15;;:4;:15;;;;:32;;;;;38923:7;:5;:7::i;:::-;38917:13;;:2;:13;;;;38898:32;38895:125;;;38963:12;;38953:6;:22;;38945:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38895:125;39315:28;39346:24;39364:4;39346:9;:24::i;:::-;39315:55;;39418:12;;39394:20;:36;39391:112;;39479:12;;39456:35;;39391:112;39523:24;39574:29;;39550:20;:53;;39523:80;;39632:19;:53;;;;;39669:16;;;;;;;;;;;39668:17;39632:53;:91;;;;;39710:13;39702:21;;:4;:21;;;;39632:91;:129;;;;;39740:21;;;;;;;;;;39632:129;39614:251;;;39817:36;39832:20;39817:14;:36::i;:::-;39614:251;39946:12;39961:4;39946:19;;40073:18;:24;40092:4;40073:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;40101:18;:22;40120:2;40101:22;;;;;;;;;;;;;;;;;;;;;;;;;40073:50;40070:96;;;40149:5;40139:15;;40070:96;40252:38;40267:4;40272:2;40275:6;40282:7;40252:14;:38::i;:::-;38305:1993;;;;;;:::o;4497:192::-;4583:7;4616:1;4611;:6;;4619:12;4603:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4643:9;4659:1;4655;:5;4643:17;;4680:1;4673:8;;;4497:192;;;;;:::o;35107:163::-;35148:7;35169:15;35186;35205:19;:17;:19::i;:::-;35168:56;;;;35242:20;35254:7;35242;:11;;:20;;;;:::i;:::-;35235:27;;;;35107:163;:::o;5895:132::-;5953:7;5980:39;5984:1;5987;5980:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5973:46;;5895:132;;;;:::o;3594:181::-;3652:7;3672:9;3688:1;3684;:5;3672:17;;3713:1;3708;:6;;3700:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3766:1;3759:8;;;3594:181;;;;:::o;33905:419::-;33964:7;33973;33982;33991;34000;34009;34030:23;34055:12;34069:18;34091:20;34103:7;34091:11;:20::i;:::-;34029:82;;;;;;34123:15;34140:23;34165:12;34181:50;34193:7;34202:4;34208:10;34220;:8;:10::i;:::-;34181:11;:50::i;:::-;34122:109;;;;;;34250:7;34259:15;34276:4;34282:15;34299:4;34305:10;34242:74;;;;;;;;;;;;;;;;;;33905:419;;;;;;;:::o;4058:136::-;4116:7;4143:43;4147:1;4150;4143:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4136:50;;4058:136;;;;:::o;4948:471::-;5006:7;5256:1;5251;:6;5247:47;;;5281:1;5274:8;;;;5247:47;5306:9;5322:1;5318;:5;5306:17;;5351:1;5346;5342;:5;;;;;;:10;5334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5410:1;5403:8;;;4948:471;;;;;:::o;40306:915::-;26711:4;26692:16;;:23;;;;;;;;;;;;;;;;;;40442:20:::1;40465;40442:43;;40763:22;40788:21;40763:46;;40854:30;40871:12;40854:16;:30::i;:::-;41011:18;41032:41;41058:14;41032:21;:25;;:41;;;;:::i;:::-;41011:62;;41086:24;41099:10;41086:12;:24::i;:::-;41173:40;41188:12;41202:10;41173:40;;;;;;;;;;;;;;;;;;;;;;;;26726:1;;;26757:5:::0;26738:16;;:24;;;;;;;;;;;;;;;;;;40306:915;:::o;42525:834::-;42636:7;42632:40;;42658:14;:12;:14::i;:::-;42632:40;42697:11;:19;42709:6;42697:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;42721:11;:22;42733:9;42721:22;;;;;;;;;;;;;;;;;;;;;;;;;42720:23;42697:46;42693:597;;;42760:48;42782:6;42790:9;42801:6;42760:21;:48::i;:::-;42693:597;;;42831:11;:19;42843:6;42831:19;;;;;;;;;;;;;;;;;;;;;;;;;42830:20;:46;;;;;42854:11;:22;42866:9;42854:22;;;;;;;;;;;;;;;;;;;;;;;;;42830:46;42826:464;;;42893:46;42913:6;42921:9;42932:6;42893:19;:46::i;:::-;42826:464;;;42962:11;:19;42974:6;42962:19;;;;;;;;;;;;;;;;;;;;;;;;;42961:20;:47;;;;;42986:11;:22;42998:9;42986:22;;;;;;;;;;;;;;;;;;;;;;;;;42985:23;42961:47;42957:333;;;43025:44;43043:6;43051:9;43062:6;43025:17;:44::i;:::-;42957:333;;;43091:11;:19;43103:6;43091:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43114:11;:22;43126:9;43114:22;;;;;;;;;;;;;;;;;;;;;;;;;43091:45;43087:203;;;43153:48;43175:6;43183:9;43194:6;43153:21;:48::i;:::-;43087:203;;;43234:44;43252:6;43260:9;43271:6;43234:17;:44::i;:::-;43087:203;42957:333;42826:464;42693:597;43314:7;43310:41;;43336:15;:13;:15::i;:::-;43310:41;42525:834;;;;:::o;35278:561::-;35328:7;35337;35357:15;35375:7;;35357:25;;35393:15;35411:7;;35393:25;;35440:9;35435:289;35459:9;:16;;;;35455:1;:20;35435:289;;;35525:7;35501;:21;35509:9;35519:1;35509:12;;;;;;;;;;;;;;;;;;;;;;;;;35501:21;;;;;;;;;;;;;;;;:31;:66;;;;35560:7;35536;:21;35544:9;35554:1;35544:12;;;;;;;;;;;;;;;;;;;;;;;;;35536:21;;;;;;;;;;;;;;;;:31;35501:66;35497:97;;;35577:7;;35586;;35569:25;;;;;;;;;35497:97;35619:34;35631:7;:21;35639:9;35649:1;35639:12;;;;;;;;;;;;;;;;;;;;;;;;;35631:21;;;;;;;;;;;;;;;;35619:7;:11;;:34;;;;:::i;:::-;35609:44;;35678:34;35690:7;:21;35698:9;35708:1;35698:12;;;;;;;;;;;;;;;;;;;;;;;;;35690:21;;;;;;;;;;;;;;;;35678:7;:11;;:34;;;;:::i;:::-;35668:44;;35477:3;;;;;;;35435:289;;;;35748:20;35760:7;;35748;;:11;;:20;;;;:::i;:::-;35738:7;:30;35734:61;;;35778:7;;35787;;35770:25;;;;;;;;35734:61;35814:7;35823;35806:25;;;;;;35278:561;;;:::o;6523:278::-;6609:7;6641:1;6637;:5;6644:12;6629:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6668:9;6684:1;6680;:5;;;;;;6668:17;;6792:1;6785:8;;;6523:278;;;;;:::o;34332:330::-;34392:7;34401;34410;34430:12;34445:24;34461:7;34445:15;:24::i;:::-;34430:39;;34480:18;34501:30;34523:7;34501:21;:30::i;:::-;34480:51;;34542:23;34568:33;34590:10;34568:17;34580:4;34568:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;34542:59;;34620:15;34637:4;34643:10;34612:42;;;;;;;;;34332:330;;;;;:::o;34670:429::-;34785:7;34794;34803;34823:15;34841:24;34853:11;34841:7;:11;;:24;;;;:::i;:::-;34823:42;;34876:12;34891:21;34900:11;34891:4;:8;;:21;;;;:::i;:::-;34876:36;;34923:18;34944:27;34959:11;34944:10;:14;;:27;;;;:::i;:::-;34923:48;;34982:23;35008:33;35030:10;35008:17;35020:4;35008:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;34982:59;;35060:7;35069:15;35086:4;35052:39;;;;;;;;;;34670:429;;;;;;;;:::o;41334:589::-;41460:21;41498:1;41484:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41460:40;;41529:4;41511;41516:1;41511:7;;;;;;;;;;;;;:23;;;;;;;;;;;41555:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41545:4;41550:1;41545:7;;;;;;;;;;;;;:32;;;;;;;;;;;41590:62;41607:4;41622:15;41640:11;41590:8;:62::i;:::-;41691:15;:66;;;41772:11;41798:1;41842:4;41869;41889:15;41691:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41334:589;;:::o;41229:97::-;41284:17;;;;;;;;;;;:26;;:34;41311:6;41284:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41229:97;:::o;37430:250::-;37487:1;37476:7;;:12;:34;;;;;37509:1;37492:13;;:18;37476:34;37473:46;;;37512:7;;37473:46;37557:7;;37539:15;:25;;;;37599:13;;37575:21;:37;;;;37643:1;37633:7;:11;;;;37671:1;37655:13;:17;;;;37430:250;:::o;44471:566::-;44574:15;44591:23;44616:12;44630:23;44655:12;44669:18;44691:19;44702:7;44691:10;:19::i;:::-;44573:137;;;;;;;;;;;;44739:28;44759:7;44739;:15;44747:6;44739:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44721:7;:15;44729:6;44721:15;;;;;;;;;;;;;;;:46;;;;44796:28;44816:7;44796;:15;44804:6;44796:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44778:7;:15;44786:6;44778:15;;;;;;;;;;;;;;;:46;;;;44856:39;44879:15;44856:7;:18;44864:9;44856:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44835:7;:18;44843:9;44835:18;;;;;;;;;;;;;;;:60;;;;44909:26;44924:10;44909:14;:26::i;:::-;44946:23;44958:4;44964;44946:11;:23::i;:::-;45002:9;44985:44;;44994:6;44985:44;;;45013:15;44985:44;;;;;;;;;;;;;;;;;;44471:566;;;;;;;;;:::o;43877:586::-;43978:15;43995:23;44020:12;44034:23;44059:12;44073:18;44095:19;44106:7;44095:10;:19::i;:::-;43977:137;;;;;;;;;;;;44143:28;44163:7;44143;:15;44151:6;44143:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44125:7;:15;44133:6;44125:15;;;;;;;;;;;;;;;:46;;;;44203:39;44226:15;44203:7;:18;44211:9;44203:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44182:7;:18;44190:9;44182:18;;;;;;;;;;;;;;;:60;;;;44274:39;44297:15;44274:7;:18;44282:9;44274:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44253:7;:18;44261:9;44253:18;;;;;;;;;;;;;;;:60;;;;44335:26;44350:10;44335:14;:26::i;:::-;44372:23;44384:4;44390;44372:11;:23::i;:::-;44428:9;44411:44;;44420:6;44411:44;;;44439:15;44411:44;;;;;;;;;;;;;;;;;;43877:586;;;;;;;;;:::o;43367:502::-;43466:15;43483:23;43508:12;43522:23;43547:12;43561:18;43583:19;43594:7;43583:10;:19::i;:::-;43465:137;;;;;;;;;;;;43631:28;43651:7;43631;:15;43639:6;43631:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43613:7;:15;43621:6;43613:15;;;;;;;;;;;;;;;:46;;;;43691:39;43714:15;43691:7;:18;43699:9;43691:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43670:7;:18;43678:9;43670:18;;;;;;;;;;;;;;;:60;;;;43741:26;43756:10;43741:14;:26::i;:::-;43778:23;43790:4;43796;43778:11;:23::i;:::-;43834:9;43817:44;;43826:6;43817:44;;;43845:15;43817:44;;;;;;;;;;;;;;;;;;43367:502;;;;;;;;;:::o;32011:642::-;32114:15;32131:23;32156:12;32170:23;32195:12;32209:18;32231:19;32242:7;32231:10;:19::i;:::-;32113:137;;;;;;;;;;;;32279:28;32299:7;32279;:15;32287:6;32279:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32261:7;:15;32269:6;32261:15;;;;;;;;;;;;;;;:46;;;;32336:28;32356:7;32336;:15;32344:6;32336:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32318:7;:15;32326:6;32318:15;;;;;;;;;;;;;;;:46;;;;32396:39;32419:15;32396:7;:18;32404:9;32396:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32375:7;:18;32383:9;32375:18;;;;;;;;;;;;;;;:60;;;;32467:39;32490:15;32467:7;:18;32475:9;32467:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32446:7;:18;32454:9;32446:18;;;;;;;;;;;;;;;:60;;;;32525:26;32540:10;32525:14;:26::i;:::-;32562:23;32574:4;32580;32562:11;:23::i;:::-;32618:9;32601:44;;32610:6;32601:44;;;32629:15;32601:44;;;;;;;;;;;;;;;;;;32011:642;;;;;;;;;:::o;37692:125::-;37746:15;;37736:7;:25;;;;37788:21;;37772:13;:37;;;;37692:125::o;36218:154::-;36282:7;36309:55;36348:5;36309:20;36321:7;;36309;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;36302:62;;36218:154;;;:::o;36380:166::-;36450:7;36477:61;36522:5;36477:26;36489:13;;36477:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;36470:68;;36380:166;;;:::o;35851:355::-;35914:19;35937:10;:8;:10::i;:::-;35914:33;;35958:18;35979:27;35994:11;35979:10;:14;;:27;;;;:::i;:::-;35958:48;;36042:38;36069:10;36042:7;:22;36058:4;36042:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;36017:7;:22;36033:4;36017:22;;;;;;;;;;;;;;;:63;;;;36094:11;:26;36114:4;36094:26;;;;;;;;;;;;;;;;;;;;;;;;;36091:107;;;36160:38;36187:10;36160:7;:22;36176:4;36160:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;36135:7;:22;36151:4;36135:22;;;;;;;;;;;;;;;:63;;;;36091:107;35851:355;;;:::o;33750:147::-;33828:17;33840:4;33828:7;;:11;;:17;;;;:::i;:::-;33818:7;:27;;;;33869:20;33884:4;33869:10;;:14;;:20;;;;:::i;:::-;33856:10;:33;;;;33750:147;;:::o
Swarm Source
ipfs://b2c6d9ff4a7fd18476130a12fc8c3c88d39c1e426fff54db4e000737ac48a6a1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.