ERC-20
Overview
Max Total Supply
42,060,000 RHCP
Holders
95
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,372.865460669 RHCPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RHCP
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-11 */ // Welcome to RHCP - https://redhotchilipepe.com/ // https://t.me/redhotchilipepeportal 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; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // 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 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 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 RHCP 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 = 42060000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Red Hot Chili Pepe"; string private _symbol = "RHCP"; uint8 private _decimals = 9; uint256 public _taxFee = 1; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 1; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee = 1; uint256 private _previousMarketingFee = _marketingFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public burnAddress = 0x000000000000000000000000000000000000dEaD; address payable private _marketingWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 841200 * 10**9; uint256 private numTokensSellToAddToLiquidity = 210300 * 10**9; uint256 private _maxWalletSize = 841200 * 10**9; event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address marketingWallet) public { _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; _marketingWallet = payable(marketingWallet); //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 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 addBotToBlacklist (address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We cannot 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 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 setMarketingFeePercent(uint256 marketingFee) external onlyOwner() { _marketingFee = marketingFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setMarketingWallet(address payable newWallet) external onlyOwner { require(_marketingWallet != newWallet, "Wallet already set!"); _marketingWallet = payable(newWallet); } 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 _getMaxWalletSize() public view returns(uint256) { return _maxWalletSize; } 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.add(_marketingFee)).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousMarketingFee = _marketingFee; _taxFee = 0; _liquidityFee = 0; _marketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _marketingFee = _previousMarketingFee; } 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[from], "You are blacklisted"); require(!_isBlackListedBot[msg.sender], "You are blacklisted"); require(!_isBlackListedBot[tx.origin], "You are blacklisted"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(from != owner() && to != owner() && to != uniswapV2Pair && to != address(0xdead)) { uint256 tokenBalanceRecipient = balanceOf(to); require(tokenBalanceRecipient + amount <= _maxWalletSize, "Recipient exceeds max wallet size."); } // 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 ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { if (_marketingFee + _liquidityFee == 0) return; uint256 toMarketing = contractTokenBalance.mul(_marketingFee).div(_marketingFee.add(_liquidityFee)); uint256 toLiquify = contractTokenBalance.sub(toMarketing); // split the contract balance into halves uint256 half = toLiquify.div(2); uint256 otherHalf = toLiquify.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH uint256 toSwapForEth = half.add(toMarketing); swapTokensForEth(toSwapForEth); // how much ETH did we just swap into? uint256 fromSwap = address(this).balance.sub(initialBalance); uint256 liquidityBalance = fromSwap.mul(half).div(toSwapForEth); addLiquidity(otherHalf, liquidityBalance); emit SwapAndLiquify(half, liquidityBalance, otherHalf); _marketingWallet.transfer(fromSwap.sub(liquidityBalance)); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0x6d4E7523218Fc699C871AB0aB968B06b6100a868), 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); } function setSwapThresholdAmount(uint256 SwapThresholdAmount) external onlyOwner() { numTokensSellToAddToLiquidity = SwapThresholdAmount * 10**9; } function _setMaxWalletSize (uint256 maxWalletSize) external onlyOwner() { _maxWalletSize = maxWalletSize; } function claimOtherTokens(IERC20 tokenAddress, address walletaddress) external onlyOwner() { tokenAddress.transfer(walletaddress, tokenAddress.balanceOf(address(this))); } function clearStuckBalance (address payable walletaddress) external onlyOwner() { walletaddress.transfer(address(this).balance); } function setburnAddress(address walletAddress) public onlyOwner { burnAddress = walletAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"marketingWallet","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"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"_getMaxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","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":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSize","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":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletaddress","type":"address"}],"name":"claimOtherTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletaddress","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setMarketingWallet","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":"SwapThresholdAmount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setburnAddress","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"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
66956d58df40c000600b55667c28f11bbbbfff19600c55610100604052601260c08190527152656420486f74204368696c69205065706560701b60e09081526200004d91600e91906200041e565b50604080518082019091526004808252630524843560e41b60209092019182526200007b91600f916200041e565b506010805460ff19166009179055600160118190556012819055601381905560148190556015819055601655601780546001600160a01b03191661dead1790556018805460ff60a81b1916600160a81b1790556602fd11232f6000601981905565bf4448cbd800601a55601b55348015620000f557600080fd5b5060405162003c7c38038062003c7c833981810160405260208110156200011b57600080fd5b50516000620001296200040b565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c5460036000620001846200040b565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fb57600080fd5b505afa15801562000210573d6000803e3d6000fd5b505050506040513d60208110156200022757600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200027857600080fd5b505afa1580156200028d573d6000803e3d6000fd5b505050506040513d6020811015620002a457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050506040513d60208110156200032357600080fd5b5051606090811b6001600160601b031990811660a0529082901b16608052601880546001600160a01b0319166001600160a01b0384161790556001600660006200036c6200040f565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055620003b66200040b565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a35050620004ba565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200046157805160ff191683800117855562000491565b8280016001018555821562000491579182015b828111156200049157825182559160200191906001019062000474565b506200049f929150620004a3565b5090565b5b808211156200049f5760008155600101620004a4565b60805160601c60a05160601c61377562000507600039806114f352806124f252806125d7525080610c2c5280612e495280612f015280612f28528061300e528061308852506137756000f3fe6080604052600436106102b25760003560e01c80635d098b38116101755780639e6c7529116100dc578063c49b9a8011610095578063dd62ed3e1161006f578063dd62ed3e14610a5d578063e1cee22114610a98578063ea2f0b3714610aad578063f2fde38b14610ae0576102b9565b8063c49b9a80146109dd578063d543dbeb14610a09578063dd46706414610a33576102b9565b80639e6c7529146108e4578063a457c2d71461090e578063a69df4b514610947578063a9059cbb1461095c578063b030b34a14610995578063b6c52324146109c8576102b9565b8063764d72bf1161012e578063764d72bf146108155780637d1db4a51461084857806388f820201461085d5780638da5cb5b146108905780638ee88c53146108a557806395d89b41146108cf576102b9565b80635d098b381461073d5780636bc87c3a1461077057806370a082311461078557806370d5ae05146107b8578063715018a6146107cd5780637558a8c8146107e2576102b9565b80633685d419116102195780634549b039116101d25780634549b03914610651578063457c194c1461068357806349bd5a5e146106ad5780634a74bb02146106c257806352390c02146106d75780635342acb41461070a576102b9565b80633685d41914610538578063395093511461056b5780633ae7dc20146105a45780633b124fe7146105df5780633bd5d173146105f4578063437823ec1461061e576102b9565b80631d7ef8791161026b5780631d7ef8791461042e57806322976e0d1461046157806323b872dd1461047657806329e04b4a146104b95780632d838119146104e3578063313ce5671461050d576102b9565b8063061c82d0146102be57806306fdde03146102ea578063095ea7b31461037457806313114a9d146103c15780631694505e146103e857806318160ddd14610419576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e8600480360360208110156102e157600080fd5b5035610b13565b005b3480156102f657600080fd5b506102ff610b70565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610339578181015183820152602001610321565b50505050905090810190601f1680156103665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038057600080fd5b506103ad6004803603604081101561039757600080fd5b506001600160a01b038135169060200135610c06565b604080519115158252519081900360200190f35b3480156103cd57600080fd5b506103d6610c24565b60408051918252519081900360200190f35b3480156103f457600080fd5b506103fd610c2a565b604080516001600160a01b039092168252519081900360200190f35b34801561042557600080fd5b506103d6610c4e565b34801561043a57600080fd5b506102e86004803603602081101561045157600080fd5b50356001600160a01b0316610c54565b34801561046d57600080fd5b506103d6610ddc565b34801561048257600080fd5b506103ad6004803603606081101561049957600080fd5b506001600160a01b03813581169160208101359091169060400135610de2565b3480156104c557600080fd5b506102e8600480360360208110156104dc57600080fd5b5035610e69565b3480156104ef57600080fd5b506103d66004803603602081101561050657600080fd5b5035610ecc565b34801561051957600080fd5b50610522610f2e565b6040805160ff9092168252519081900360200190f35b34801561054457600080fd5b506102e86004803603602081101561055b57600080fd5b50356001600160a01b0316610f37565b34801561057757600080fd5b506103ad6004803603604081101561058e57600080fd5b506001600160a01b0381351690602001356110f8565b3480156105b057600080fd5b506102e8600480360360408110156105c757600080fd5b506001600160a01b0381358116916020013516611146565b3480156105eb57600080fd5b506103d66112a6565b34801561060057600080fd5b506102e86004803603602081101561061757600080fd5b50356112ac565b34801561062a57600080fd5b506102e86004803603602081101561064157600080fd5b50356001600160a01b0316611386565b34801561065d57600080fd5b506103d66004803603604081101561067457600080fd5b50803590602001351515611402565b34801561068f57600080fd5b506102e8600480360360208110156106a657600080fd5b5035611494565b3480156106b957600080fd5b506103fd6114f1565b3480156106ce57600080fd5b506103ad611515565b3480156106e357600080fd5b506102e8600480360360208110156106fa57600080fd5b50356001600160a01b0316611525565b34801561071657600080fd5b506103ad6004803603602081101561072d57600080fd5b50356001600160a01b03166116ab565b34801561074957600080fd5b506102e86004803603602081101561076057600080fd5b50356001600160a01b03166116c9565b34801561077c57600080fd5b506103d661179c565b34801561079157600080fd5b506103d6600480360360208110156107a857600080fd5b50356001600160a01b03166117a2565b3480156107c457600080fd5b506103fd611804565b3480156107d957600080fd5b506102e8611813565b3480156107ee57600080fd5b506102e86004803603602081101561080557600080fd5b50356001600160a01b03166118a3565b34801561082157600080fd5b506102e86004803603602081101561083857600080fd5b50356001600160a01b031661191d565b34801561085457600080fd5b506103d66119aa565b34801561086957600080fd5b506103ad6004803603602081101561088057600080fd5b50356001600160a01b03166119b0565b34801561089c57600080fd5b506103fd6119ce565b3480156108b157600080fd5b506102e8600480360360208110156108c857600080fd5b50356119dd565b3480156108db57600080fd5b506102ff611a3a565b3480156108f057600080fd5b506102e86004803603602081101561090757600080fd5b5035611a9b565b34801561091a57600080fd5b506103ad6004803603604081101561093157600080fd5b506001600160a01b038135169060200135611af8565b34801561095357600080fd5b506102e8611b60565b34801561096857600080fd5b506103ad6004803603604081101561097f57600080fd5b506001600160a01b038135169060200135611c4e565b3480156109a157600080fd5b506102e8600480360360208110156109b857600080fd5b50356001600160a01b0316611c62565b3480156109d457600080fd5b506103d6611def565b3480156109e957600080fd5b506102e860048036036020811015610a0057600080fd5b50351515611df5565b348015610a1557600080fd5b506102e860048036036020811015610a2c57600080fd5b5035611ea0565b348015610a3f57600080fd5b506102e860048036036020811015610a5657600080fd5b5035611f1e565b348015610a6957600080fd5b506103d660048036036040811015610a8057600080fd5b506001600160a01b0381358116916020013516611fbc565b348015610aa457600080fd5b506103d6611fe7565b348015610ab957600080fd5b506102e860048036036020811015610ad057600080fd5b50356001600160a01b0316611fed565b348015610aec57600080fd5b506102e860048036036020811015610b0357600080fd5b50356001600160a01b0316612066565b610b1b61214c565b6000546001600160a01b03908116911614610b6b576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601155565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bfc5780601f10610bd157610100808354040283529160200191610bfc565b820191906000526020600020905b815481529060010190602001808311610bdf57829003601f168201915b5050505050905090565b6000610c1a610c1361214c565b8484612150565b5060015b92915050565b600d5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5490565b610c5c61214c565b6000546001600160a01b03908116911614610cac576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d085760405162461bcd60e51b81526004018080602001828103825260228152602001806135d06022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610d76576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b60155481565b6000610def84848461223c565b610e5f84610dfb61214c565b610e5a856040518060600160405280602881526020016135f2602891396001600160a01b038a16600090815260056020526040812090610e3961214c565b6001600160a01b031681526020810191909152604001600020549190612693565b612150565b5060019392505050565b610e7161214c565b6000546001600160a01b03908116911614610ec1576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b633b9aca0002601a55565b6000600c54821115610f0f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806134f3602a913960400191505060405180910390fd5b6000610f1961272a565b9050610f25838261274d565b9150505b919050565b60105460ff1690565b610f3f61214c565b6000546001600160a01b03908116911614610f8f576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ffc576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6008548110156110f457816001600160a01b03166008828154811061102057fe5b6000918252602090912001546001600160a01b031614156110ec5760088054600019810190811061104d57fe5b600091825260209091200154600880546001600160a01b03909216918390811061107357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806110c557fe5b600082815260209020810160001990810180546001600160a01b03191690550190556110f4565b600101610fff565b5050565b6000610c1a61110561214c565b84610e5a856005600061111661214c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612796565b61114e61214c565b6000546001600160a01b0390811691161461119e576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156111fb57600080fd5b505afa15801561120f573d6000803e3d6000fd5b505050506040513d602081101561122557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b505050506040513d60208110156112a057600080fd5b50505050565b60115481565b60006112b661214c565b6001600160a01b03811660009081526007602052604090205490915060ff16156113115760405162461bcd60e51b815260040180806020018281038252602c8152602001806136cc602c913960400191505060405180910390fd5b600061131c836127f0565b505050506001600160a01b0384166000908152600360205260409020549192506113489190508261283f565b6001600160a01b038316600090815260036020526040902055600c5461136e908261283f565b600c55600d5461137e9084612796565b600d55505050565b61138e61214c565b6000546001600160a01b039081169116146113de576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600b5483111561145b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161147a57600061146b846127f0565b50939550610c1e945050505050565b6000611485846127f0565b50929550610c1e945050505050565b61149c61214c565b6000546001600160a01b039081169116146114ec576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601555565b7f000000000000000000000000000000000000000000000000000000000000000081565b601854600160a81b900460ff1681565b61152d61214c565b6000546001600160a01b0390811691161461157d576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16156115eb576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611645576001600160a01b03811660009081526003602052604090205461162b90610ecc565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b6116d161214c565b6000546001600160a01b03908116911614611721576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6018546001600160a01b038281169116141561177a576040805162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60135481565b6001600160a01b03811660009081526007602052604081205460ff16156117e257506001600160a01b038116600090815260046020526040902054610f29565b6001600160a01b038216600090815260036020526040902054610c1e90610ecc565b6017546001600160a01b031681565b61181b61214c565b6000546001600160a01b0390811691161461186b576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b039091169060008051602061363a833981519152908390a3600080546001600160a01b0319169055565b6118ab61214c565b6000546001600160a01b039081169116146118fb576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b61192561214c565b6000546001600160a01b03908116911614611975576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156110f4573d6000803e3d6000fd5b60195481565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b6119e561214c565b6000546001600160a01b03908116911614611a35576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601355565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bfc5780601f10610bd157610100808354040283529160200191610bfc565b611aa361214c565b6000546001600160a01b03908116911614611af3576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601b55565b6000610c1a611b0561214c565b84610e5a8560405180606001604052806025815260200161371b6025913960056000611b2f61214c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612693565b6001546001600160a01b03163314611ba95760405162461bcd60e51b81526004018080602001828103825260238152602001806136f86023913960400191505060405180910390fd5b6002544211611bff576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b03938416939091169160008051602061363a83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1a611c5b61214c565b848461223c565b611c6a61214c565b6000546001600160a01b03908116911614611cba576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16611d27576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a548110156110f457816001600160a01b0316600a8281548110611d4b57fe5b6000918252602090912001546001600160a01b03161415611de757600a80546000198101908110611d7857fe5b600091825260209091200154600a80546001600160a01b039092169183908110611d9e57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a8054806110c557fe5b600101611d2a565b60025490565b611dfd61214c565b6000546001600160a01b03908116911614611e4d576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b60188054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611ea861214c565b6000546001600160a01b03908116911614611ef8576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b611f186064611f1283600b5461288190919063ffffffff16565b9061274d565b60195550565b611f2661214c565b6000546001600160a01b03908116911614611f76576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b03841617909155168155428201600255604051819060008051602061363a833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b601b5490565b611ff561214c565b6000546001600160a01b03908116911614612045576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b61206e61214c565b6000546001600160a01b039081169116146120be576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b0381166121035760405162461bcd60e51b815260040180806020018281038252602681526020018061351d6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061363a83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166121955760405162461bcd60e51b81526004018080602001828103825260248152602001806136a86024913960400191505060405180910390fd5b6001600160a01b0382166121da5760405162461bcd60e51b81526004018080602001828103825260228152602001806135436022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122815760405162461bcd60e51b81526004018080602001828103825260258152602001806136836025913960400191505060405180910390fd5b6001600160a01b0382166122c65760405162461bcd60e51b81526004018080602001828103825260238152602001806134d06023913960400191505060405180910390fd5b600081116123055760405162461bcd60e51b815260040180806020018281038252602981526020018061365a6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615612369576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff16156123c4576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff161561241f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6124276119ce565b6001600160a01b0316836001600160a01b031614158015612461575061244b6119ce565b6001600160a01b0316826001600160a01b031614155b156124a7576019548111156124a75760405162461bcd60e51b81526004018080602001828103825260288152602001806135876028913960400191505060405180910390fd5b6124af6119ce565b6001600160a01b0316836001600160a01b0316141580156124e957506124d36119ce565b6001600160a01b0316826001600160a01b031614155b801561252757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561253e57506001600160a01b03821661dead14155b1561259557600061254e836117a2565b9050601b5482820111156125935760405162461bcd60e51b81526004018080602001828103825260228152602001806135656022913960400191505060405180910390fd5b505b60006125a0306117a2565b905060195481106125b057506019545b601a54811080159081906125ce5750601854600160a01b900460ff16155b801561260c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156126215750601854600160a81b900460ff165b1561263457601a549150612634826128da565b6001600160a01b03851660009081526006602052604090205460019060ff168061267657506001600160a01b03851660009081526006602052604090205460ff165b1561267f575060005b61268b86868684612a31565b505050505050565b600081848411156127225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126e75781810151838201526020016126cf565b50505050905090810190601f1680156127145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612737612b9f565b9092509050612746828261274d565b9250505090565b600061278f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d02565b9392505050565b60008282018381101561278f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128078a612d67565b92509250925060008060006128258d868661282061272a565b612da9565b919f909e50909c50959a5093985091965092945050505050565b600061278f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612693565b60008261289057506000610c1e565b8282028284828161289d57fe5b041461278f5760405162461bcd60e51b81526004018080602001828103825260218152602001806135af6021913960400191505060405180910390fd5b6018805460ff60a01b1916600160a01b179055601354601554016128fd57612a21565b600061292761291960135460155461279690919063ffffffff16565b601554611f12908590612881565b90506000612935838361283f565b9050600061294482600261274d565b90506000612952838361283f565b90504760006129618487612796565b905061296c81612df9565b6000612978478461283f565b9050600061298a83611f128489612881565b90506129968582613008565b604080518781526020810183905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a16018546001600160a01b03166108fc6129ef848461283f565b6040518115909202916000818181858888f19350505050158015612a17573d6000803e3d6000fd5b5050505050505050505b506018805460ff60a01b19169055565b80612a3e57612a3e6130fd565b6001600160a01b03841660009081526007602052604090205460ff168015612a7f57506001600160a01b03831660009081526007602052604090205460ff16155b15612a9457612a8f848484613146565b612b92565b6001600160a01b03841660009081526007602052604090205460ff16158015612ad557506001600160a01b03831660009081526007602052604090205460ff165b15612ae557612a8f84848461326a565b6001600160a01b03841660009081526007602052604090205460ff16158015612b2757506001600160a01b03831660009081526007602052604090205460ff16155b15612b3757612a8f848484613313565b6001600160a01b03841660009081526007602052604090205460ff168015612b7757506001600160a01b03831660009081526007602052604090205460ff165b15612b8757612a8f848484613357565b612b92848484613313565b806112a0576112a06133ca565b600c54600b546000918291825b600854811015612cd057826003600060088481548110612bc857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c2d5750816004600060088481548110612c0657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612c4457600c54600b5494509450505050612cfe565b612c846003600060088481548110612c5857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061283f565b9250612cc66004600060088481548110612c9a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061283f565b9150600101612bac565b50600b54600c54612ce09161274d565b821015612cf857600c54600b54935093505050612cfe565b90925090505b9091565b60008183612d515760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126e75781810151838201526020016126cf565b506000838581612d5d57fe5b0495945050505050565b600080600080612d76856133de565b90506000612d83866133fa565b90506000612d9b82612d95898661283f565b9061283f565b979296509094509092505050565b6000808080612db88886612881565b90506000612dc68887612881565b90506000612dd48888612881565b90506000612de682612d95868661283f565b939b939a50919850919650505050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612e2757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ea057600080fd5b505afa158015612eb4573d6000803e3d6000fd5b505050506040513d6020811015612eca57600080fd5b5051815182906001908110612edb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f26307f000000000000000000000000000000000000000000000000000000000000000084612150565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612fcb578181015183820152602001612fb3565b505050509050019650505050505050600060405180830381600087803b158015612ff457600080fd5b505af115801561268b573d6000803e3d6000fd5b613033307f000000000000000000000000000000000000000000000000000000000000000084612150565b6040805163f305d71960e01b8152306004820152602481018490526000604482018190526064820152736d4e7523218fc699c871ab0ab968b06b6100a86860848201524260a482015290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163f305d71991849160c48082019260609290919082900301818588803b1580156130d257600080fd5b505af11580156130e6573d6000803e3d6000fd5b50505050506040513d60608110156112a057600080fd5b60115415801561310d5750601354155b80156131195750601554155b1561312357613144565b60118054601255601380546014556015805460165560009283905590829055555b565b600080600080600080613158876127f0565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061318a908861283f565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546131b9908761283f565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546131e89086612796565b6001600160a01b03891660009081526003602052604090205561320a81613422565b61321484836134ab565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061327c876127f0565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132ae908761283f565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546132e49084612796565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546131e89086612796565b600080600080600080613325876127f0565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506131b9908761283f565b600080600080600080613369876127f0565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061339b908861283f565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132ae908761283f565b601254601155601454601355601654601555565b6000610c1e6064611f126011548561288190919063ffffffff16565b6000610c1e6064611f1261341b60155460135461279690919063ffffffff16565b8590612881565b600061342c61272a565b9050600061343a8383612881565b306000908152600360205260409020549091506134579082612796565b3060009081526003602090815260408083209390935560079052205460ff16156134a657306000908152600460205260409020546134959084612796565b306000908152600460205260409020555b505050565b600c546134b8908361283f565b600c55600d546134c89082612796565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122069e549cba0aadb0e0244f84689c999f5e97bfd36c5914f875d2aa9a9fe2a09c364736f6c634300060c0033000000000000000000000000c547cbd3bd47966d76c8fc9331c7a2b944a09166
Deployed Bytecode
0x6080604052600436106102b25760003560e01c80635d098b38116101755780639e6c7529116100dc578063c49b9a8011610095578063dd62ed3e1161006f578063dd62ed3e14610a5d578063e1cee22114610a98578063ea2f0b3714610aad578063f2fde38b14610ae0576102b9565b8063c49b9a80146109dd578063d543dbeb14610a09578063dd46706414610a33576102b9565b80639e6c7529146108e4578063a457c2d71461090e578063a69df4b514610947578063a9059cbb1461095c578063b030b34a14610995578063b6c52324146109c8576102b9565b8063764d72bf1161012e578063764d72bf146108155780637d1db4a51461084857806388f820201461085d5780638da5cb5b146108905780638ee88c53146108a557806395d89b41146108cf576102b9565b80635d098b381461073d5780636bc87c3a1461077057806370a082311461078557806370d5ae05146107b8578063715018a6146107cd5780637558a8c8146107e2576102b9565b80633685d419116102195780634549b039116101d25780634549b03914610651578063457c194c1461068357806349bd5a5e146106ad5780634a74bb02146106c257806352390c02146106d75780635342acb41461070a576102b9565b80633685d41914610538578063395093511461056b5780633ae7dc20146105a45780633b124fe7146105df5780633bd5d173146105f4578063437823ec1461061e576102b9565b80631d7ef8791161026b5780631d7ef8791461042e57806322976e0d1461046157806323b872dd1461047657806329e04b4a146104b95780632d838119146104e3578063313ce5671461050d576102b9565b8063061c82d0146102be57806306fdde03146102ea578063095ea7b31461037457806313114a9d146103c15780631694505e146103e857806318160ddd14610419576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e8600480360360208110156102e157600080fd5b5035610b13565b005b3480156102f657600080fd5b506102ff610b70565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610339578181015183820152602001610321565b50505050905090810190601f1680156103665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038057600080fd5b506103ad6004803603604081101561039757600080fd5b506001600160a01b038135169060200135610c06565b604080519115158252519081900360200190f35b3480156103cd57600080fd5b506103d6610c24565b60408051918252519081900360200190f35b3480156103f457600080fd5b506103fd610c2a565b604080516001600160a01b039092168252519081900360200190f35b34801561042557600080fd5b506103d6610c4e565b34801561043a57600080fd5b506102e86004803603602081101561045157600080fd5b50356001600160a01b0316610c54565b34801561046d57600080fd5b506103d6610ddc565b34801561048257600080fd5b506103ad6004803603606081101561049957600080fd5b506001600160a01b03813581169160208101359091169060400135610de2565b3480156104c557600080fd5b506102e8600480360360208110156104dc57600080fd5b5035610e69565b3480156104ef57600080fd5b506103d66004803603602081101561050657600080fd5b5035610ecc565b34801561051957600080fd5b50610522610f2e565b6040805160ff9092168252519081900360200190f35b34801561054457600080fd5b506102e86004803603602081101561055b57600080fd5b50356001600160a01b0316610f37565b34801561057757600080fd5b506103ad6004803603604081101561058e57600080fd5b506001600160a01b0381351690602001356110f8565b3480156105b057600080fd5b506102e8600480360360408110156105c757600080fd5b506001600160a01b0381358116916020013516611146565b3480156105eb57600080fd5b506103d66112a6565b34801561060057600080fd5b506102e86004803603602081101561061757600080fd5b50356112ac565b34801561062a57600080fd5b506102e86004803603602081101561064157600080fd5b50356001600160a01b0316611386565b34801561065d57600080fd5b506103d66004803603604081101561067457600080fd5b50803590602001351515611402565b34801561068f57600080fd5b506102e8600480360360208110156106a657600080fd5b5035611494565b3480156106b957600080fd5b506103fd6114f1565b3480156106ce57600080fd5b506103ad611515565b3480156106e357600080fd5b506102e8600480360360208110156106fa57600080fd5b50356001600160a01b0316611525565b34801561071657600080fd5b506103ad6004803603602081101561072d57600080fd5b50356001600160a01b03166116ab565b34801561074957600080fd5b506102e86004803603602081101561076057600080fd5b50356001600160a01b03166116c9565b34801561077c57600080fd5b506103d661179c565b34801561079157600080fd5b506103d6600480360360208110156107a857600080fd5b50356001600160a01b03166117a2565b3480156107c457600080fd5b506103fd611804565b3480156107d957600080fd5b506102e8611813565b3480156107ee57600080fd5b506102e86004803603602081101561080557600080fd5b50356001600160a01b03166118a3565b34801561082157600080fd5b506102e86004803603602081101561083857600080fd5b50356001600160a01b031661191d565b34801561085457600080fd5b506103d66119aa565b34801561086957600080fd5b506103ad6004803603602081101561088057600080fd5b50356001600160a01b03166119b0565b34801561089c57600080fd5b506103fd6119ce565b3480156108b157600080fd5b506102e8600480360360208110156108c857600080fd5b50356119dd565b3480156108db57600080fd5b506102ff611a3a565b3480156108f057600080fd5b506102e86004803603602081101561090757600080fd5b5035611a9b565b34801561091a57600080fd5b506103ad6004803603604081101561093157600080fd5b506001600160a01b038135169060200135611af8565b34801561095357600080fd5b506102e8611b60565b34801561096857600080fd5b506103ad6004803603604081101561097f57600080fd5b506001600160a01b038135169060200135611c4e565b3480156109a157600080fd5b506102e8600480360360208110156109b857600080fd5b50356001600160a01b0316611c62565b3480156109d457600080fd5b506103d6611def565b3480156109e957600080fd5b506102e860048036036020811015610a0057600080fd5b50351515611df5565b348015610a1557600080fd5b506102e860048036036020811015610a2c57600080fd5b5035611ea0565b348015610a3f57600080fd5b506102e860048036036020811015610a5657600080fd5b5035611f1e565b348015610a6957600080fd5b506103d660048036036040811015610a8057600080fd5b506001600160a01b0381358116916020013516611fbc565b348015610aa457600080fd5b506103d6611fe7565b348015610ab957600080fd5b506102e860048036036020811015610ad057600080fd5b50356001600160a01b0316611fed565b348015610aec57600080fd5b506102e860048036036020811015610b0357600080fd5b50356001600160a01b0316612066565b610b1b61214c565b6000546001600160a01b03908116911614610b6b576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601155565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bfc5780601f10610bd157610100808354040283529160200191610bfc565b820191906000526020600020905b815481529060010190602001808311610bdf57829003601f168201915b5050505050905090565b6000610c1a610c1361214c565b8484612150565b5060015b92915050565b600d5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b5490565b610c5c61214c565b6000546001600160a01b03908116911614610cac576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d085760405162461bcd60e51b81526004018080602001828103825260228152602001806135d06022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610d76576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b60155481565b6000610def84848461223c565b610e5f84610dfb61214c565b610e5a856040518060600160405280602881526020016135f2602891396001600160a01b038a16600090815260056020526040812090610e3961214c565b6001600160a01b031681526020810191909152604001600020549190612693565b612150565b5060019392505050565b610e7161214c565b6000546001600160a01b03908116911614610ec1576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b633b9aca0002601a55565b6000600c54821115610f0f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806134f3602a913960400191505060405180910390fd5b6000610f1961272a565b9050610f25838261274d565b9150505b919050565b60105460ff1690565b610f3f61214c565b6000546001600160a01b03908116911614610f8f576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ffc576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6008548110156110f457816001600160a01b03166008828154811061102057fe5b6000918252602090912001546001600160a01b031614156110ec5760088054600019810190811061104d57fe5b600091825260209091200154600880546001600160a01b03909216918390811061107357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806110c557fe5b600082815260209020810160001990810180546001600160a01b03191690550190556110f4565b600101610fff565b5050565b6000610c1a61110561214c565b84610e5a856005600061111661214c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612796565b61114e61214c565b6000546001600160a01b0390811691161461119e576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156111fb57600080fd5b505afa15801561120f573d6000803e3d6000fd5b505050506040513d602081101561122557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b505050506040513d60208110156112a057600080fd5b50505050565b60115481565b60006112b661214c565b6001600160a01b03811660009081526007602052604090205490915060ff16156113115760405162461bcd60e51b815260040180806020018281038252602c8152602001806136cc602c913960400191505060405180910390fd5b600061131c836127f0565b505050506001600160a01b0384166000908152600360205260409020549192506113489190508261283f565b6001600160a01b038316600090815260036020526040902055600c5461136e908261283f565b600c55600d5461137e9084612796565b600d55505050565b61138e61214c565b6000546001600160a01b039081169116146113de576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600b5483111561145b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161147a57600061146b846127f0565b50939550610c1e945050505050565b6000611485846127f0565b50929550610c1e945050505050565b61149c61214c565b6000546001600160a01b039081169116146114ec576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601555565b7f000000000000000000000000a41cd47c5a7025ded7c1ab30190070048f268b3381565b601854600160a81b900460ff1681565b61152d61214c565b6000546001600160a01b0390811691161461157d576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16156115eb576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611645576001600160a01b03811660009081526003602052604090205461162b90610ecc565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b6116d161214c565b6000546001600160a01b03908116911614611721576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6018546001600160a01b038281169116141561177a576040805162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60135481565b6001600160a01b03811660009081526007602052604081205460ff16156117e257506001600160a01b038116600090815260046020526040902054610f29565b6001600160a01b038216600090815260036020526040902054610c1e90610ecc565b6017546001600160a01b031681565b61181b61214c565b6000546001600160a01b0390811691161461186b576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b039091169060008051602061363a833981519152908390a3600080546001600160a01b0319169055565b6118ab61214c565b6000546001600160a01b039081169116146118fb576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b61192561214c565b6000546001600160a01b03908116911614611975576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156110f4573d6000803e3d6000fd5b60195481565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b6119e561214c565b6000546001600160a01b03908116911614611a35576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601355565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bfc5780601f10610bd157610100808354040283529160200191610bfc565b611aa361214c565b6000546001600160a01b03908116911614611af3576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b601b55565b6000610c1a611b0561214c565b84610e5a8560405180606001604052806025815260200161371b6025913960056000611b2f61214c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612693565b6001546001600160a01b03163314611ba95760405162461bcd60e51b81526004018080602001828103825260238152602001806136f86023913960400191505060405180910390fd5b6002544211611bff576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b03938416939091169160008051602061363a83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1a611c5b61214c565b848461223c565b611c6a61214c565b6000546001600160a01b03908116911614611cba576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16611d27576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a548110156110f457816001600160a01b0316600a8281548110611d4b57fe5b6000918252602090912001546001600160a01b03161415611de757600a80546000198101908110611d7857fe5b600091825260209091200154600a80546001600160a01b039092169183908110611d9e57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a8054806110c557fe5b600101611d2a565b60025490565b611dfd61214c565b6000546001600160a01b03908116911614611e4d576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b60188054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611ea861214c565b6000546001600160a01b03908116911614611ef8576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b611f186064611f1283600b5461288190919063ffffffff16565b9061274d565b60195550565b611f2661214c565b6000546001600160a01b03908116911614611f76576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b03841617909155168155428201600255604051819060008051602061363a833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b601b5490565b611ff561214c565b6000546001600160a01b03908116911614612045576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b61206e61214c565b6000546001600160a01b039081169116146120be576040805162461bcd60e51b8152602060048201819052602482015260008051602061361a833981519152604482015290519081900360640190fd5b6001600160a01b0381166121035760405162461bcd60e51b815260040180806020018281038252602681526020018061351d6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061363a83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166121955760405162461bcd60e51b81526004018080602001828103825260248152602001806136a86024913960400191505060405180910390fd5b6001600160a01b0382166121da5760405162461bcd60e51b81526004018080602001828103825260228152602001806135436022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122815760405162461bcd60e51b81526004018080602001828103825260258152602001806136836025913960400191505060405180910390fd5b6001600160a01b0382166122c65760405162461bcd60e51b81526004018080602001828103825260238152602001806134d06023913960400191505060405180910390fd5b600081116123055760405162461bcd60e51b815260040180806020018281038252602981526020018061365a6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615612369576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff16156123c4576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff161561241f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6124276119ce565b6001600160a01b0316836001600160a01b031614158015612461575061244b6119ce565b6001600160a01b0316826001600160a01b031614155b156124a7576019548111156124a75760405162461bcd60e51b81526004018080602001828103825260288152602001806135876028913960400191505060405180910390fd5b6124af6119ce565b6001600160a01b0316836001600160a01b0316141580156124e957506124d36119ce565b6001600160a01b0316826001600160a01b031614155b801561252757507f000000000000000000000000a41cd47c5a7025ded7c1ab30190070048f268b336001600160a01b0316826001600160a01b031614155b801561253e57506001600160a01b03821661dead14155b1561259557600061254e836117a2565b9050601b5482820111156125935760405162461bcd60e51b81526004018080602001828103825260228152602001806135656022913960400191505060405180910390fd5b505b60006125a0306117a2565b905060195481106125b057506019545b601a54811080159081906125ce5750601854600160a01b900460ff16155b801561260c57507f000000000000000000000000a41cd47c5a7025ded7c1ab30190070048f268b336001600160a01b0316856001600160a01b031614155b80156126215750601854600160a81b900460ff165b1561263457601a549150612634826128da565b6001600160a01b03851660009081526006602052604090205460019060ff168061267657506001600160a01b03851660009081526006602052604090205460ff165b1561267f575060005b61268b86868684612a31565b505050505050565b600081848411156127225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126e75781810151838201526020016126cf565b50505050905090810190601f1680156127145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612737612b9f565b9092509050612746828261274d565b9250505090565b600061278f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d02565b9392505050565b60008282018381101561278f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128078a612d67565b92509250925060008060006128258d868661282061272a565b612da9565b919f909e50909c50959a5093985091965092945050505050565b600061278f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612693565b60008261289057506000610c1e565b8282028284828161289d57fe5b041461278f5760405162461bcd60e51b81526004018080602001828103825260218152602001806135af6021913960400191505060405180910390fd5b6018805460ff60a01b1916600160a01b179055601354601554016128fd57612a21565b600061292761291960135460155461279690919063ffffffff16565b601554611f12908590612881565b90506000612935838361283f565b9050600061294482600261274d565b90506000612952838361283f565b90504760006129618487612796565b905061296c81612df9565b6000612978478461283f565b9050600061298a83611f128489612881565b90506129968582613008565b604080518781526020810183905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a16018546001600160a01b03166108fc6129ef848461283f565b6040518115909202916000818181858888f19350505050158015612a17573d6000803e3d6000fd5b5050505050505050505b506018805460ff60a01b19169055565b80612a3e57612a3e6130fd565b6001600160a01b03841660009081526007602052604090205460ff168015612a7f57506001600160a01b03831660009081526007602052604090205460ff16155b15612a9457612a8f848484613146565b612b92565b6001600160a01b03841660009081526007602052604090205460ff16158015612ad557506001600160a01b03831660009081526007602052604090205460ff165b15612ae557612a8f84848461326a565b6001600160a01b03841660009081526007602052604090205460ff16158015612b2757506001600160a01b03831660009081526007602052604090205460ff16155b15612b3757612a8f848484613313565b6001600160a01b03841660009081526007602052604090205460ff168015612b7757506001600160a01b03831660009081526007602052604090205460ff165b15612b8757612a8f848484613357565b612b92848484613313565b806112a0576112a06133ca565b600c54600b546000918291825b600854811015612cd057826003600060088481548110612bc857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c2d5750816004600060088481548110612c0657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612c4457600c54600b5494509450505050612cfe565b612c846003600060088481548110612c5857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061283f565b9250612cc66004600060088481548110612c9a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061283f565b9150600101612bac565b50600b54600c54612ce09161274d565b821015612cf857600c54600b54935093505050612cfe565b90925090505b9091565b60008183612d515760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126e75781810151838201526020016126cf565b506000838581612d5d57fe5b0495945050505050565b600080600080612d76856133de565b90506000612d83866133fa565b90506000612d9b82612d95898661283f565b9061283f565b979296509094509092505050565b6000808080612db88886612881565b90506000612dc68887612881565b90506000612dd48888612881565b90506000612de682612d95868661283f565b939b939a50919850919650505050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612e2757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ea057600080fd5b505afa158015612eb4573d6000803e3d6000fd5b505050506040513d6020811015612eca57600080fd5b5051815182906001908110612edb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f26307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612150565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612fcb578181015183820152602001612fb3565b505050509050019650505050505050600060405180830381600087803b158015612ff457600080fd5b505af115801561268b573d6000803e3d6000fd5b613033307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612150565b6040805163f305d71960e01b8152306004820152602481018490526000604482018190526064820152736d4e7523218fc699c871ab0ab968b06b6100a86860848201524260a482015290516001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169163f305d71991849160c48082019260609290919082900301818588803b1580156130d257600080fd5b505af11580156130e6573d6000803e3d6000fd5b50505050506040513d60608110156112a057600080fd5b60115415801561310d5750601354155b80156131195750601554155b1561312357613144565b60118054601255601380546014556015805460165560009283905590829055555b565b600080600080600080613158876127f0565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061318a908861283f565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546131b9908761283f565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546131e89086612796565b6001600160a01b03891660009081526003602052604090205561320a81613422565b61321484836134ab565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061327c876127f0565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132ae908761283f565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546132e49084612796565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546131e89086612796565b600080600080600080613325876127f0565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506131b9908761283f565b600080600080600080613369876127f0565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061339b908861283f565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132ae908761283f565b601254601155601454601355601654601555565b6000610c1e6064611f126011548561288190919063ffffffff16565b6000610c1e6064611f1261341b60155460135461279690919063ffffffff16565b8590612881565b600061342c61272a565b9050600061343a8383612881565b306000908152600360205260409020549091506134579082612796565b3060009081526003602090815260408083209390935560079052205460ff16156134a657306000908152600460205260409020546134959084612796565b306000908152600460205260409020555b505050565b600c546134b8908361283f565b600c55600d546134c89082612796565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122069e549cba0aadb0e0244f84689c999f5e97bfd36c5914f875d2aa9a9fe2a09c364736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c547cbd3bd47966d76c8fc9331c7a2b944a09166
-----Decoded View---------------
Arg [0] : marketingWallet (address): 0xC547CBD3bd47966d76c8Fc9331c7A2B944A09166
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c547cbd3bd47966d76c8fc9331c7a2b944a09166
Deployed Bytecode Sourcemap
25566:22138:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34499:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34499:98:0;;:::i;:::-;;28501:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29413:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29413:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;30534:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;26723:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;26723:51:0;;;;;;;;;;;;;;28778:95;;;;;;;;;;;;;:::i;31723:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31723:368:0;-1:-1:-1;;;;;31723:368:0;;:::i;26618:32::-;;;;;;;;;;;;;:::i;29582:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29582:313:0;;;;;;;;;;;;;;;;;:::i;46929:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46929:160:0;;:::i;31458:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31458:253:0;;:::i;28687:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33107:479;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33107:479:0;-1:-1:-1;;;;;33107:479:0;;:::i;29903:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29903:218:0;;;;;;;;:::i;47236:185::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;47236:185:0;;;;;;;;;;:::i;26430:26::-;;;;;;;;;;;;;:::i;30629:377::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30629:377:0;;:::i;34254:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34254:111:0;-1:-1:-1;;;;;34254:111:0;;:::i;31014:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31014:436:0;;;;;;;;;:::i;34739:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34739:122:0;;:::i;26781:38::-;;;;;;;;;;;;;:::i;26987:40::-;;;;;;;;;;;;;:::i;32652:447::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32652:447:0;-1:-1:-1;;;;;32652:447:0;;:::i;39047:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39047:123:0;-1:-1:-1;;;;;39047:123:0;;:::i;35050:202::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35050:202:0;-1:-1:-1;;;;;35050:202:0;;:::i;26517:32::-;;;;;;;;;;;;;:::i;28881:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28881:198:0;-1:-1:-1;;;;;28881:198:0;;:::i;26832:71::-;;;;;;;;;;;;;:::i;16302:148::-;;;;;;;;;;;;;:::i;47589:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47589:110:0;-1:-1:-1;;;;;47589:110:0;;:::i;47433:144::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47433:144:0;-1:-1:-1;;;;;47433:144:0;;:::i;27040:44::-;;;;;;;;;;;;;:::i;30406:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30406:120:0;-1:-1:-1;;;;;30406:120:0;;:::i;15659:79::-;;;;;;;;;;;;;:::i;34609:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34609:122:0;;:::i;28592:87::-;;;;;;;;;;;;;:::i;47101:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47101:127:0;;:::i;30129:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30129:269:0;;;;;;;;:::i;17312:293::-;;;;;;;;;;;;;:::i;29087:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29087:167:0;;;;;;;;:::i;32103:541::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32103:541:0;-1:-1:-1;;;;;32103:541:0;;:::i;16857:89::-;;;;;;;;;;;;;:::i;35270:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35270:171:0;;;;:::i;34880:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34880:162:0;;:::i;17022:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17022:214:0;;:::i;29262:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29262:143:0;;;;;;;;;;:::i;37079:102::-;;;;;;;;;;;;;:::i;34377:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34377:110:0;-1:-1:-1;;;;;34377:110:0;;:::i;16605:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16605:244:0;-1:-1:-1;;;;;16605:244:0;;:::i;34499:98::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;34573:7:::1;:16:::0;34499:98::o;28501:83::-;28571:5;28564:12;;;;;;;;-1:-1:-1;;28564:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28538:13;;28564:12;;28571:5;;28564:12;;28571:5;28564:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28501:83;:::o;29413:161::-;29488:4;29505:39;29514:12;:10;:12::i;:::-;29528:7;29537:6;29505:8;:39::i;:::-;-1:-1:-1;29562:4:0;29413:161;;;;;:::o;30534:87::-;30603:10;;30534:87;:::o;26723:51::-;;;:::o;28778:95::-;28858:7;;28778:95;:::o;31723:368::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;31822:42:::1;-1:-1:-1::0;;;;;31811:53:0;::::1;;;31803:100;;;;-1:-1:-1::0;;;31803:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;31927:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;31926:27;31917:71;;;::::0;;-1:-1:-1;;;31917:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32002:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;32002:33:0::1;32031:4;32002:33:::0;;::::1;::::0;;;32049:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;32049:30:0::1;::::0;;::::1;::::0;;31723:368::o;26618:32::-;;;;:::o;29582:313::-;29680:4;29697:36;29707:6;29715:9;29726:6;29697:9;:36::i;:::-;29744:121;29753:6;29761:12;:10;:12::i;:::-;29775:89;29813:6;29775:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29775:19:0;;;;;;:11;:19;;;;;;29795:12;:10;:12::i;:::-;-1:-1:-1;;;;;29775:33:0;;;;;;;;;;;;-1:-1:-1;29775:33:0;;;:89;:37;:89::i;:::-;29744:8;:121::i;:::-;-1:-1:-1;29883:4:0;29582:313;;;;;:::o;46929:160::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;47076:5:::1;47054:27;47022:29;:59:::0;46929:160::o;31458:253::-;31524:7;31563;;31552;:18;;31544:73;;;;-1:-1:-1;;;31544:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31628:19;31651:10;:8;:10::i;:::-;31628:33;-1:-1:-1;31679:24:0;:7;31628:33;31679:11;:24::i;:::-;31672:31;;;31458:253;;;;:::o;28687:83::-;28753:9;;;;28687:83;:::o;33107:479::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33189:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33181:60;;;::::0;;-1:-1:-1;;;33181:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33257:9;33252:327;33276:9;:16:::0;33272:20;::::1;33252:327;;;33334:7;-1:-1:-1::0;;;;;33318:23:0::1;:9;33328:1;33318:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;33318:12:0::1;:23;33314:254;;;33377:9;33387:16:::0;;-1:-1:-1;;33387:20:0;;;33377:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;33362:9:::1;:12:::0;;-1:-1:-1;;;;;33377:31:0;;::::1;::::0;33372:1;;33362:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;33362:46:0::1;-1:-1:-1::0;;;;;33362:46:0;;::::1;;::::0;;33427:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;33466:11:::1;:20:::0;;;;:28;;-1:-1:-1;;33466:28:0::1;::::0;;33513:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;33513:15:0;;;;;-1:-1:-1;;;;;;33513:15:0::1;::::0;;;;;33547:5:::1;;33314:254;33294:3;;33252:327;;;;33107:479:::0;:::o;29903:218::-;29991:4;30008:83;30017:12;:10;:12::i;:::-;30031:7;30040:50;30079:10;30040:11;:25;30052:12;:10;:12::i;:::-;-1:-1:-1;;;;;30040:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30040:25:0;;;:34;;;;;;;;;;;:38;:50::i;47236:185::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;47338:12:::1;-1:-1:-1::0;;;;;47338:21:0::1;;47360:13;47375:12;-1:-1:-1::0;;;;;47375:22:0::1;;47406:4;47375:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;47375:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;47375:37:0;47338:75:::1;::::0;;-1:-1:-1;;;;;;47338:75:0::1;::::0;;;;;;-1:-1:-1;;;;;47338:75:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;47375:37:::1;::::0;47338:75;;;;;;;-1:-1:-1;47338:75:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;47236:185:0:o;26430:26::-;;;;:::o;30629:377::-;30681:14;30698:12;:10;:12::i;:::-;-1:-1:-1;;;;;30730:19:0;;;;;;:11;:19;;;;;;30681:29;;-1:-1:-1;30730:19:0;;30729:20;30721:77;;;;-1:-1:-1;;;30721:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30810:15;30834:19;30845:7;30834:10;:19::i;:::-;-1:-1:-1;;;;;;;;;30882:15:0;;;;;;:7;:15;;;;;;30809:44;;-1:-1:-1;30882:28:0;;:15;-1:-1:-1;30809:44:0;30882:19;:28::i;:::-;-1:-1:-1;;;;;30864:15:0;;;;;;:7;:15;;;;;:46;30931:7;;:20;;30943:7;30931:11;:20::i;:::-;30921:7;:30;30975:10;;:23;;30990:7;30975:14;:23::i;:::-;30962:10;:36;-1:-1:-1;;;30629:377:0:o;34254:111::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34323:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34323:34:0::1;34353:4;34323:34;::::0;;34254:111::o;31014:436::-;31104:7;31143;;31132;:18;;31124:62;;;;;-1:-1:-1;;;31124:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31202:17;31197:246;;31237:15;31261:19;31272:7;31261:10;:19::i;:::-;-1:-1:-1;31236:44:0;;-1:-1:-1;31295:14:0;;-1:-1:-1;;;;;31295:14:0;31197:246;31344:23;31375:19;31386:7;31375:10;:19::i;:::-;-1:-1:-1;31342:52:0;;-1:-1:-1;31409:22:0;;-1:-1:-1;;;;;31409:22:0;34739:122;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;34825:13:::1;:28:::0;34739:122::o;26781:38::-;;;:::o;26987:40::-;;;-1:-1:-1;;;26987:40:0;;;;;:::o;32652:447::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32849:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;32848:21;32840:61;;;::::0;;-1:-1:-1;;;32840:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32915:16:0;::::1;32934:1;32915:16:::0;;;:7:::1;:16;::::0;;;;;:20;32912:108:::1;;-1:-1:-1::0;;;;;32991:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;32971:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;32952:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;32912:108:::1;-1:-1:-1::0;;;;;33030:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;33030:27:0::1;33053:4;33030:27:::0;;::::1;::::0;;;33068:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;33068:23:0::1;::::0;;::::1;::::0;;32652:447::o;39047:123::-;-1:-1:-1;;;;;39135:27:0;39111:4;39135:27;;;:18;:27;;;;;;;;;39047:123::o;35050:202::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;35143:16:::1;::::0;-1:-1:-1;;;;;35143:29:0;;::::1;:16:::0;::::1;:29;;35135:61;;;::::0;;-1:-1:-1;;;35135:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;35135:61:0;;;;;;;;;;;;;::::1;;35207:16;:37:::0;;-1:-1:-1;;;;;;35207:37:0::1;-1:-1:-1::0;;;;;35207:37:0;;;::::1;::::0;;;::::1;::::0;;35050:202::o;26517:32::-;;;;:::o;28881:198::-;-1:-1:-1;;;;;28971:20:0;;28947:7;28971:20;;;:11;:20;;;;;;;;28967:49;;;-1:-1:-1;;;;;;29000:16:0;;;;;;:7;:16;;;;;;28993:23;;28967:49;-1:-1:-1;;;;;29054:16:0;;;;;;:7;:16;;;;;;29034:37;;:19;:37::i;26832:71::-;;;-1:-1:-1;;;;;26832:71:0;;:::o;16302:148::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;16409:1:::1;16393:6:::0;;16372:40:::1;::::0;-1:-1:-1;;;;;16393:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16372:40:0;16409:1;;16372:40:::1;16440:1;16423:19:::0;;-1:-1:-1;;;;;;16423:19:0::1;::::0;;16302:148::o;47589:110::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;47664:11:::1;:27:::0;;-1:-1:-1;;;;;;47664:27:0::1;-1:-1:-1::0;;;;;47664:27:0;;;::::1;::::0;;;::::1;::::0;;47589:110::o;47433:144::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;47524:45:::1;::::0;-1:-1:-1;;;;;47524:22:0;::::1;::::0;47547:21:::1;47524:45:::0;::::1;;;::::0;::::1;::::0;;;47547:21;47524:22;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;27040:44:::0;;;;:::o;30406:120::-;-1:-1:-1;;;;;30498:20:0;30474:4;30498:20;;;:11;:20;;;;;;;;;30406:120::o;15659:79::-;15697:7;15724:6;-1:-1:-1;;;;;15724:6:0;15659:79;:::o;34609:122::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;34695:13:::1;:28:::0;34609:122::o;28592:87::-;28664:7;28657:14;;;;;;;;-1:-1:-1;;28657:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28631:13;;28657:14;;28664:7;;28657:14;;28664:7;28657:14;;;;;;;;;;;;;;;;;;;;;;;;47101:127;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;47186:14:::1;:30:::0;47101:127::o;30129:269::-;30222:4;30239:129;30248:12;:10;:12::i;:::-;30262:7;30271:96;30310:15;30271:96;;;;;;;;;;;;;;;;;:11;:25;30283:12;:10;:12::i;:::-;-1:-1:-1;;;;;30271:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30271:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;17312:293::-;17364:14;;-1:-1:-1;;;;;17364:14:0;17382:10;17364:28;17356:76;;;;-1:-1:-1;;;17356:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17457:9;;17451:3;:15;17443:60;;;;;-1:-1:-1;;;17443:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17548:14;;;17540:6;;17519:44;;-1:-1:-1;;;;;17548:14:0;;;;17540:6;;;;-1:-1:-1;;;;;;;;;;;17519:44:0;;17583:14;;;17574:23;;-1:-1:-1;;;;;;17574:23:0;-1:-1:-1;;;;;17583:14:0;;;17574:23;;;;;;17312:293::o;29087:167::-;29165:4;29182:42;29192:12;:10;:12::i;:::-;29206:9;29217:6;29182:9;:42::i;32103:541::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32195:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;32186:66;;;::::0;;-1:-1:-1;;;32186:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32270:9;32265:369;32289:16;:23:::0;32285:27;::::1;32265:369;;;32366:7;-1:-1:-1::0;;;;;32343:30:0::1;:16;32360:1;32343:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;32343:19:0::1;:30;32339:281;;;32421:16;32438:23:::0;;-1:-1:-1;;32438:27:0;;;32421:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;32399:16:::1;:19:::0;;-1:-1:-1;;;;;32421:45:0;;::::1;::::0;32416:1;;32399:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;32399:67:0::1;-1:-1:-1::0;;;;;32399:67:0;;::::1;;::::0;;32490:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;32490:34:0::1;::::0;;32548:16:::1;:22:::0;;;::::1;;;32339:281;32314:3;;32265:369;;16857:89:::0;16929:9;;16857:89;:::o;35270:171::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;35347:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;35347:32:0;::::1;-1:-1:-1::0;;;;35347:32:0;;::::1;::::0;;;::::1;::::0;;;35395:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;35270:171:::0;:::o;34880:162::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;34974:60:::1;35018:5;34974:25;34986:12;34974:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:60::i;:::-;34959:12;:75:::0;-1:-1:-1;34880:162:0:o;17022:214::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;17103:6:::1;::::0;;;17086:23;;-1:-1:-1;;;;;;17086:23:0;;::::1;-1:-1:-1::0;;;;;17103:6:0;::::1;17086:23;::::0;;;17120:19:::1;::::0;;17162:3:::1;:10:::0;::::1;17150:9;:22:::0;17188:40:::1;::::0;17103:6;;-1:-1:-1;;;;;;;;;;;17188:40:0;17103:6;;17188:40:::1;17022:214:::0;:::o;29262:143::-;-1:-1:-1;;;;;29370:18:0;;;29343:7;29370:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;29262:143::o;37079:102::-;37159:14;;37079:102;:::o;34377:110::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34444:27:0::1;34474:5;34444:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34444:35:0::1;::::0;;34377:110::o;16605:244::-;15881:12;:10;:12::i;:::-;15871:6;;-1:-1:-1;;;;;15871:6:0;;;:22;;;15863:67;;;;;-1:-1:-1;;;15863:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15863:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16694:22:0;::::1;16686:73;;;;-1:-1:-1::0;;;16686:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16796:6;::::0;;16775:38:::1;::::0;-1:-1:-1;;;;;16775:38:0;;::::1;::::0;16796:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;16775:38:0;::::1;16824:6;:17:::0;;-1:-1:-1;;;;;;16824:17:0::1;-1:-1:-1::0;;;;;16824:17:0;;;::::1;::::0;;;::::1;::::0;;16605:244::o;8067:106::-;8155:10;8067:106;:::o;39178:337::-;-1:-1:-1;;;;;39271:19:0;;39263:68;;;;-1:-1:-1;;;39263:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39350:21:0;;39342:68;;;;-1:-1:-1;;;39342:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39423:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;39475:32;;;;;;;;;;;;;;;;;39178:337;;;:::o;39523:2320::-;-1:-1:-1;;;;;39645:18:0;;39637:68;;;;-1:-1:-1;;;39637:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39724:16:0;;39716:64;;;;-1:-1:-1;;;39716:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39808:1;39799:6;:10;39791:64;;;;-1:-1:-1;;;39791:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39875:23:0;;;;;;:17;:23;;;;;;;;39874:24;39866:56;;;;;-1:-1:-1;;;39866:56:0;;;;;;;;;;;;-1:-1:-1;;;39866:56:0;;;;;;;;;;;;;;;39960:10;39942:29;;;;:17;:29;;;;;;;;39941:30;39933:62;;;;;-1:-1:-1;;;39933:62:0;;;;;;;;;;;;-1:-1:-1;;;39933:62:0;;;;;;;;;;;;;;;40033:9;40015:28;;;;:17;:28;;;;;;;;40014:29;40006:61;;;;;-1:-1:-1;;;40006:61:0;;;;;;;;;;;;-1:-1:-1;;;40006:61:0;;;;;;;;;;;;;;;40089:7;:5;:7::i;:::-;-1:-1:-1;;;;;40081:15:0;:4;-1:-1:-1;;;;;40081:15:0;;;:32;;;;;40106:7;:5;:7::i;:::-;-1:-1:-1;;;;;40100:13:0;:2;-1:-1:-1;;;;;40100:13:0;;;40081:32;40078:125;;;40146:12;;40136:6;:22;;40128:75;;;;-1:-1:-1;;;40128:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40245:7;:5;:7::i;:::-;-1:-1:-1;;;;;40237:15:0;:4;-1:-1:-1;;;;;40237:15:0;;;:32;;;;;40262:7;:5;:7::i;:::-;-1:-1:-1;;;;;40256:13:0;:2;-1:-1:-1;;;;;40256:13:0;;;40237:32;:55;;;;;40279:13;-1:-1:-1;;;;;40273:19:0;:2;-1:-1:-1;;;;;40273:19:0;;;40237:55;:80;;;;-1:-1:-1;;;;;;40296:21:0;;40310:6;40296:21;;40237:80;40234:267;;;40334:29;40366:13;40376:2;40366:9;:13::i;:::-;40334:45;;40436:14;;40426:6;40402:21;:30;:48;;40394:95;;;;-1:-1:-1;;;40394:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40234:267;;40793:28;40824:24;40842:4;40824:9;:24::i;:::-;40793:55;;40896:12;;40872:20;:36;40869:112;;-1:-1:-1;40957:12:0;;40869:112;41052:29;;41028:53;;;;;;;41110;;-1:-1:-1;41147:16:0;;-1:-1:-1;;;41147:16:0;;;;41146:17;41110:53;:91;;;;;41188:13;-1:-1:-1;;;;;41180:21:0;:4;-1:-1:-1;;;;;41180:21:0;;;41110:91;:129;;;;-1:-1:-1;41218:21:0;;-1:-1:-1;;;41218:21:0;;;;41110:129;41092:318;;;41289:29;;41266:52;;41362:36;41377:20;41362:14;:36::i;:::-;-1:-1:-1;;;;;41618:24:0;;41491:12;41618:24;;;:18;:24;;;;;;41506:4;;41618:24;;;:50;;-1:-1:-1;;;;;;41646:22:0;;;;;;:18;:22;;;;;;;;41618:50;41615:96;;;-1:-1:-1;41694:5:0;41615:96;41797:38;41812:4;41817:2;41820:6;41827:7;41797:14;:38::i;:::-;39523:2320;;;;;;:::o;4477:192::-;4563:7;4599:12;4591:6;;;;4583:29;;;;-1:-1:-1;;;4583:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4635:5:0;;;4477:192::o;36904:163::-;36945:7;36966:15;36983;37002:19;:17;:19::i;:::-;36965:56;;-1:-1:-1;36965:56:0;-1:-1:-1;37039:20:0;36965:56;;37039:11;:20::i;:::-;37032:27;;;;36904:163;:::o;5875:132::-;5933:7;5960:39;5964:1;5967;5960:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5953:46;5875:132;-1:-1:-1;;;5875:132:0:o;3574:181::-;3632:7;3664:5;;;3688:6;;;;3680:46;;;;;-1:-1:-1;;;3680:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35702:419;35761:7;35770;35779;35788;35797;35806;35827:23;35852:12;35866:18;35888:20;35900:7;35888:11;:20::i;:::-;35826:82;;;;;;35920:15;35937:23;35962:12;35978:50;35990:7;35999:4;36005:10;36017;:8;:10::i;:::-;35978:11;:50::i;:::-;35919:109;;;;-1:-1:-1;35919:109:0;;-1:-1:-1;36079:15:0;;-1:-1:-1;36096:4:0;;-1:-1:-1;36102:10:0;;-1:-1:-1;35702:419:0;;-1:-1:-1;;;;;35702:419:0:o;4038:136::-;4096:7;4123:43;4127:1;4130;4123:43;;;;;;;;;;;;;;;;;:3;:43::i;4928:471::-;4986:7;5231:6;5227:47;;-1:-1:-1;5261:1:0;5254:8;;5227:47;5298:5;;;5302:1;5298;:5;:1;5322:5;;;;;:10;5314:56;;;;-1:-1:-1;;;5314:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41851:1315;27617:16;:23;;-1:-1:-1;;;;27617:23:0;-1:-1:-1;;;27617:23:0;;;41956:13:::1;::::0;41940::::1;::::0;:29:::1;41936:60;;41989:7;;41936:60;42006:19;42028:77;42072:32;42090:13;;42072;;:17;;:32;;;;:::i;:::-;42053:13;::::0;42028:39:::1;::::0;:20;;:24:::1;:39::i;:77::-;42006:99:::0;-1:-1:-1;42116:17:0::1;42136:37;:20:::0;42006:99;42136:24:::1;:37::i;:::-;42116:57:::0;-1:-1:-1;42237:12:0::1;42252:16;42116:57:::0;42266:1:::1;42252:13;:16::i;:::-;42237:31:::0;-1:-1:-1;42279:17:0::1;42299:19;:9:::0;42237:31;42299:13:::1;:19::i;:::-;42279:39:::0;-1:-1:-1;42621:21:0::1;42596:22;42710:21;:4:::0;42719:11;42710:8:::1;:21::i;:::-;42687:44;;42742:30;42759:12;42742:16;:30::i;:::-;42833:16;42852:41;:21;42878:14:::0;42852:25:::1;:41::i;:::-;42833:60:::0;-1:-1:-1;42904:24:0::1;42931:36;42954:12:::0;42931:18:::1;42833:60:::0;42944:4;42931:12:::1;:18::i;:36::-;42904:63;;42980:41;42993:9;43004:16;42980:12;:41::i;:::-;43039:49;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;43101:16;::::0;-1:-1:-1;;;;;43101:16:0::1;:57;43127:30;:8:::0;43140:16;43127:12:::1;:30::i;:::-;43101:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27651:1;;;;;;;;;-1:-1:-1::0;27663:16:0;:24;;-1:-1:-1;;;;27663:24:0;;;41851:1315::o;44409:834::-;44520:7;44516:40;;44542:14;:12;:14::i;:::-;-1:-1:-1;;;;;44581:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;44605:22:0;;;;;;:11;:22;;;;;;;;44604:23;44581:46;44577:597;;;44644:48;44666:6;44674:9;44685:6;44644:21;:48::i;:::-;44577:597;;;-1:-1:-1;;;;;44715:19:0;;;;;;:11;:19;;;;;;;;44714:20;:46;;;;-1:-1:-1;;;;;;44738:22:0;;;;;;:11;:22;;;;;;;;44714:46;44710:464;;;44777:46;44797:6;44805:9;44816:6;44777:19;:46::i;44710:464::-;-1:-1:-1;;;;;44846:19:0;;;;;;:11;:19;;;;;;;;44845:20;:47;;;;-1:-1:-1;;;;;;44870:22:0;;;;;;:11;:22;;;;;;;;44869:23;44845:47;44841:333;;;44909:44;44927:6;44935:9;44946:6;44909:17;:44::i;44841:333::-;-1:-1:-1;;;;;44975:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;44998:22:0;;;;;;:11;:22;;;;;;;;44975:45;44971:203;;;45037:48;45059:6;45067:9;45078:6;45037:21;:48::i;44971:203::-;45118:44;45136:6;45144:9;45155:6;45118:17;:44::i;:::-;45198:7;45194:41;;45220:15;:13;:15::i;37193:561::-;37290:7;;37326;;37243;;;;;37350:289;37374:9;:16;37370:20;;37350:289;;;37440:7;37416;:21;37424:9;37434:1;37424:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37424:12:0;37416:21;;;;;;;;;;;;;:31;;:66;;;37475:7;37451;:21;37459:9;37469:1;37459:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37459:12:0;37451:21;;;;;;;;;;;;;:31;37416:66;37412:97;;;37492:7;;37501;;37484:25;;;;;;;;;37412:97;37534:34;37546:7;:21;37554:9;37564:1;37554:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37554:12:0;37546:21;;;;;;;;;;;;;37534:7;;:11;:34::i;:::-;37524:44;;37593:34;37605:7;:21;37613:9;37623:1;37613:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37613:12:0;37605:21;;;;;;;;;;;;;37593:7;;:11;:34::i;:::-;37583:44;-1:-1:-1;37392:3:0;;37350:289;;;-1:-1:-1;37675:7:0;;37663;;:20;;:11;:20::i;:::-;37653:7;:30;37649:61;;;37693:7;;37702;;37685:25;;;;;;;;37649:61;37729:7;;-1:-1:-1;37738:7:0;-1:-1:-1;37193:561:0;;;:::o;6503:278::-;6589:7;6624:12;6617:5;6609:28;;;;-1:-1:-1;;;6609:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:9;6664:1;6660;:5;;;;;;;6503:278;-1:-1:-1;;;;;6503:278:0:o;36129:330::-;36189:7;36198;36207;36227:12;36242:24;36258:7;36242:15;:24::i;:::-;36227:39;;36277:18;36298:30;36320:7;36298:21;:30::i;:::-;36277:51;-1:-1:-1;36339:23:0;36365:33;36277:51;36365:17;:7;36377:4;36365:11;:17::i;:::-;:21;;:33::i;:::-;36339:59;36434:4;;-1:-1:-1;36440:10:0;;-1:-1:-1;36129:330:0;;-1:-1:-1;;;36129:330:0:o;36467:429::-;36582:7;;;;36638:24;:7;36650:11;36638;:24::i;:::-;36620:42;-1:-1:-1;36673:12:0;36688:21;:4;36697:11;36688:8;:21::i;:::-;36673:36;-1:-1:-1;36720:18:0;36741:27;:10;36756:11;36741:14;:27::i;:::-;36720:48;-1:-1:-1;36779:23:0;36805:33;36720:48;36805:17;:7;36817:4;36805:11;:17::i;:33::-;36857:7;;;;-1:-1:-1;36883:4:0;;-1:-1:-1;36467:429:0;;-1:-1:-1;;;;;;;36467:429:0:o;43174:589::-;43324:16;;;43338:1;43324:16;;;43300:21;43324:16;;;;;43300:21;43324:16;;;;;;;;;;-1:-1:-1;43324:16:0;43300:40;;43369:4;43351;43356:1;43351:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;43351:23:0;;;-1:-1:-1;;;;;43351:23:0;;;;;43395:15;-1:-1:-1;;;;;43395:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43395:22:0;43385:7;;:4;;43390:1;;43385:7;;;;;;;;;;;:32;-1:-1:-1;;;;;43385:32:0;;;-1:-1:-1;;;;;43385:32:0;;;;;43430:62;43447:4;43462:15;43480:11;43430:8;:62::i;:::-;43531:15;-1:-1:-1;;;;;43531:66:0;;43612:11;43638:1;43682:4;43709;43729:15;43531:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43531:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43771:557;43919:62;43936:4;43951:15;43969:11;43919:8;:62::i;:::-;44024:296;;;-1:-1:-1;;;44024:296:0;;44096:4;44024:296;;;;;;;;;;44142:1;44024:296;;;;;;;;;;44236:42;44024:296;;;;44294:15;44024:296;;;;;;-1:-1:-1;;;;;44024:15:0;:31;;;;44063:9;;44024:296;;;;;;;;;;;;;;;44063:9;44024:31;:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38492:358;38538:7;;:12;:34;;;;-1:-1:-1;38554:13:0;;:18;38538:34;:56;;;;-1:-1:-1;38576:13:0;;:18;38538:56;38535:68;;;38596:7;;38535:68;38641:7;;;38623:15;:25;38683:13;;;38659:21;:37;38731:13;;;38707:21;:37;-1:-1:-1;38765:11:0;;;;38787:17;;;;38815;38492:358;:::o;46355:566::-;46458:15;46475:23;46500:12;46514:23;46539:12;46553:18;46575:19;46586:7;46575:10;:19::i;:::-;-1:-1:-1;;;;;46623:15:0;;;;;;:7;:15;;;;;;46457:137;;-1:-1:-1;46457:137:0;;-1:-1:-1;46457:137:0;;-1:-1:-1;46457:137:0;-1:-1:-1;46457:137:0;-1:-1:-1;46457:137:0;-1:-1:-1;46623:28:0;;46643:7;46623:19;:28::i;:::-;-1:-1:-1;;;;;46605:15:0;;;;;;:7;:15;;;;;;;;:46;;;;46680:7;:15;;;;:28;;46700:7;46680:19;:28::i;:::-;-1:-1:-1;;;;;46662:15:0;;;;;;;:7;:15;;;;;;:46;;;;46740:18;;;;;;;:39;;46763:15;46740:22;:39::i;:::-;-1:-1:-1;;;;;46719:18:0;;;;;;:7;:18;;;;;:60;46793:26;46808:10;46793:14;:26::i;:::-;46830:23;46842:4;46848;46830:11;:23::i;:::-;46886:9;-1:-1:-1;;;;;46869:44:0;46878:6;-1:-1:-1;;;;;46869:44:0;;46897:15;46869:44;;;;;;;;;;;;;;;;;;46355:566;;;;;;;;;:::o;45761:586::-;45862:15;45879:23;45904:12;45918:23;45943:12;45957:18;45979:19;45990:7;45979:10;:19::i;:::-;-1:-1:-1;;;;;46027:15:0;;;;;;:7;:15;;;;;;45861:137;;-1:-1:-1;45861:137:0;;-1:-1:-1;45861:137:0;;-1:-1:-1;45861:137:0;-1:-1:-1;45861:137:0;-1:-1:-1;45861:137:0;-1:-1:-1;46027:28:0;;45861:137;46027:19;:28::i;:::-;-1:-1:-1;;;;;46009:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;46087:18;;;;;:7;:18;;;;;:39;;46110:15;46087:22;:39::i;:::-;-1:-1:-1;;;;;46066:18:0;;;;;;:7;:18;;;;;;;;:60;;;;46158:7;:18;;;;:39;;46181:15;46158:22;:39::i;45251:502::-;45350:15;45367:23;45392:12;45406:23;45431:12;45445:18;45467:19;45478:7;45467:10;:19::i;:::-;-1:-1:-1;;;;;45515:15:0;;;;;;:7;:15;;;;;;45349:137;;-1:-1:-1;45349:137:0;;-1:-1:-1;45349:137:0;;-1:-1:-1;45349:137:0;-1:-1:-1;45349:137:0;-1:-1:-1;45349:137:0;-1:-1:-1;45515:28:0;;45349:137;45515:19;:28::i;33596:642::-;33699:15;33716:23;33741:12;33755:23;33780:12;33794:18;33816:19;33827:7;33816:10;:19::i;:::-;-1:-1:-1;;;;;33864:15:0;;;;;;:7;:15;;;;;;33698:137;;-1:-1:-1;33698:137:0;;-1:-1:-1;33698:137:0;;-1:-1:-1;33698:137:0;-1:-1:-1;33698:137:0;-1:-1:-1;33698:137:0;-1:-1:-1;33864:28:0;;33884:7;33864:19;:28::i;:::-;-1:-1:-1;;;;;33846:15:0;;;;;;:7;:15;;;;;;;;:46;;;;33921:7;:15;;;;:28;;33941:7;33921:19;:28::i;38862:173::-;38916:15;;38906:7;:25;38958:21;;38942:13;:37;39006:21;;38990:13;:37;38862:173::o;38133:154::-;38197:7;38224:55;38263:5;38224:20;38236:7;;38224;:11;;:20;;;;:::i;38295:185::-;38365:7;38392:80;38456:5;38392:45;38404:32;38422:13;;38404;;:17;;:32;;;;:::i;:::-;38392:7;;:11;:45::i;37766:355::-;37829:19;37852:10;:8;:10::i;:::-;37829:33;-1:-1:-1;37873:18:0;37894:27;:10;37829:33;37894:14;:27::i;:::-;37973:4;37957:22;;;;:7;:22;;;;;;37873:48;;-1:-1:-1;37957:38:0;;37873:48;37957:26;:38::i;:::-;37948:4;37932:22;;;;:7;:22;;;;;;;;:63;;;;38009:11;:26;;;;;;38006:107;;;38091:4;38075:22;;;;:7;:22;;;;;;:38;;38102:10;38075:26;:38::i;:::-;38066:4;38050:22;;;;:7;:22;;;;;:63;38006:107;37766:355;;;:::o;35547:147::-;35625:7;;:17;;35637:4;35625:11;:17::i;:::-;35615:7;:27;35666:10;;:20;;35681:4;35666:14;:20::i;:::-;35653:10;:33;-1:-1:-1;;35547:147:0:o
Swarm Source
ipfs://69e549cba0aadb0e0244f84689c999f5e97bfd36c5914f875d2aa9a9fe2a09c3
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.