Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xea3550bf991dc5a11dd52a9fbf731e14b565517b9cdd5a8414eeb01a7ee88aa3 | 0x60806040 | 25945990 | 105 days 5 hrs ago | HUH: Deployer | IN | Create: RewardDistributor | 0 MATIC | 0.061321685045 |
[ Download CSV Export ]
Contract Name:
RewardDistributor
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-03-22 */ // Sources flattened with hardhat v2.6.8 https://hardhat.org // File contracts/interfaces/IRewardDistributor.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IRewardDistributor { function addRewardHolderShare(address rewardRecipient, uint256 amount) external; } // File contracts/interfaces/IUniswap.sol interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } 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); } 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; } 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; } // File @openzeppelin/contracts/utils/math/[email protected] // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File @openzeppelin/contracts/utils/[email protected] /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @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"); (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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File contracts/interfaces/IBEP20.sol /** * @dev Interface of the BEP20 standard as defined in the EIP. */ interface IBEP20 { function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File contracts/ReentrancyGuard.sol abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } // File contracts/RewardDistributor.sol contract RewardDistributor is IRewardDistributor, ReentrancyGuard { using SafeMath for uint256; using Address for address; // Referral Rewards struct ReferralShare { uint256 amount; uint256 numberOfTimesClaimed; } mapping (address => ReferralShare) public referralShares; uint256 public totalReferralShares; // Token Address address public rewardToken; // Pancakeswap Router address public router; // Owner of contract address public tokenOwner; modifier onlyToken() { require(msg.sender == rewardToken, 'Invalid Token!'); _; } modifier onlyOwner() { require(msg.sender == tokenOwner, 'Invalid Token Owner'); _; } // EVENTS event SetRewardTokenAddress(address indexed rewardToken); event TransferedTokenOwnership(address indexed newOwner); event UpgradeDistributor(address indexed newDistributor); event AddRewardHolderShare(address indexed rewardRecipient, uint256 indexed amount); event RemoveRewardholder(address indexed rewardRecipient); event GiftReward(address indexed rewardRecipient, address indexed giftRecipient, uint256 indexed amount); event ClaimReward(address indexed rewardRecipient); event ClaimRewardInDesiredToken(address indexed rewardRecipient, address indexed desiredToken); event ClaimRewardToDesiredWallet(address indexed rewardRecipient, address indexed desiredWallet); event ClaimRewardInDesiredTokenToDesiredWallet(address indexed rewardRecipient, address indexed desiredWallet, address indexed desiredToken); event UpdateRouterAddress(address indexed router); constructor (address _router) { tokenOwner = msg.sender; router = _router; } receive() external payable {} function setRewardTokenAddress(address _rewardToken) external onlyOwner { require(rewardToken != _rewardToken && _rewardToken != address(0), 'Invalid Reward Token!'); if (rewardToken != address(0)) { uint256 balance = IBEP20(rewardToken).balanceOf(address(this)); if (balance > 0) { require(IBEP20(rewardToken).transfer(tokenOwner, balance), 'Transfer Failed!'); } } rewardToken = _rewardToken; emit SetRewardTokenAddress(_rewardToken); } function transferTokenOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), 'Invalid New Owner'); tokenOwner = newOwner; emit TransferedTokenOwnership(newOwner); } function upgradeDistributor(address newDistributor) external onlyOwner { require(newDistributor != address(this) && newDistributor != address(0), 'Invalid Distributor!'); uint256 balance = IBEP20(rewardToken).balanceOf(address(this)); if (balance > 0) require(IBEP20(rewardToken).transfer(newDistributor, balance), 'Transfer Failed!'); emit UpgradeDistributor(newDistributor); selfdestruct(payable(tokenOwner)); } function addRewardHolderShare(address rewardRecipient, uint256 amount) external override onlyToken { referralShares[rewardRecipient].amount = referralShares[rewardRecipient].amount.add(amount); totalReferralShares = totalReferralShares.add(amount); emit AddRewardHolderShare(rewardRecipient, amount); } function updateRouterAddress(address _router) external onlyOwner { require(_router != address(0), 'Router Address Invalid!'); require(router != _router, 'Router Address already exists!'); router = _router; emit UpdateRouterAddress(_router); } // Back-Up withdraw, in case BNB gets sent in here // NOTE: This function is to be called if and only if BNB gets sent into this contract. // On no other occurence should this function be called. function emergencyWithdrawEthInWei(address payable recipient, uint256 amount) external onlyOwner { require(recipient != address(0), 'Invalid Recipient!'); require(amount > 0, 'Invalid Amount!'); recipient.transfer(amount); } // Withdraw BEP20 tokens sent to this contract // NOTE: This function is to be called if and only if BEP20 tokens gets sent into this contract. // On no other occurence should this function be called. function emergencyWithdrawTokens(address token) external onlyOwner { require(token != address(0), 'Invalid Token!'); uint256 balance = IBEP20(token).balanceOf(address(this)); if (balance > 0) { require(IBEP20(token).transfer(tokenOwner, balance), 'Transfer Failed!'); } } function giftReward(address giftRecipient, uint256 amount) external nonReentrant { _giftReward(msg.sender, giftRecipient, amount); emit GiftReward(msg.sender, giftRecipient, amount); } function claimReward() external nonReentrant { _claimRewardInBNB(msg.sender); emit ClaimReward(msg.sender); } function claimRewardInDesiredToken(address desiredToken) external nonReentrant { _claimRewardInDesiredToken(msg.sender, desiredToken); emit ClaimRewardInDesiredToken(msg.sender, desiredToken); } function claimRewardToDesiredWallet(address desiredWallet) external nonReentrant { _claimRewardInBNBToDesiredWallet(msg.sender, desiredWallet); emit ClaimRewardToDesiredWallet(msg.sender, desiredWallet); } function claimRewardInDesiredTokenToDesiredWallet(address desiredToken, address desiredWallet) external nonReentrant { require(desiredWallet != address(0), "Invalid Destination Wallet!"); _claimRewardInDesiredTokenToDesiredWallet(msg.sender, desiredWallet, desiredToken); emit ClaimRewardInDesiredTokenToDesiredWallet(msg.sender, desiredWallet, desiredToken); } function _giftReward(address rewardRecipient, address giftRecipient, uint256 amount) private { require(rewardRecipient != address(0), 'Invalid Reward Recipient!'); require(giftRecipient != address(0), 'Invalid Gift Recipient!'); require(referralShares[rewardRecipient].amount > 0, 'Insufficient Balance!'); require(amount > 0, 'Invalid Amount!'); require(amount <= referralShares[rewardRecipient].amount, 'Insufficient Balance!'); if (referralShares[rewardRecipient].amount <= IBEP20(rewardToken).balanceOf(address(this))) { require(IBEP20(rewardToken).transfer(giftRecipient, amount), 'Transfer Failed!'); referralShares[rewardRecipient].amount = referralShares[rewardRecipient].amount.sub(amount); } } function _claimRewardInBNB(address rewardRecipient) private { require(rewardRecipient != address(0), 'Invalid Reward Recipient!'); require(referralShares[rewardRecipient].amount > 0, 'Insufficient Balance!'); if (referralShares[rewardRecipient].amount <= IBEP20(rewardToken).balanceOf(address(this))) { // Swap token and send to the reward recipient _swapAndSendBNB(rewardRecipient, referralShares[rewardRecipient].amount); // Set amount to 0, set number of times claimed referralShares[rewardRecipient].amount = 0; referralShares[rewardRecipient].numberOfTimesClaimed = referralShares[rewardRecipient].numberOfTimesClaimed.add(1); } } function _claimRewardInDesiredToken(address rewardRecipient, address desiredToken) private { require(rewardRecipient != address(0), 'Invalid Reward Recipient!'); require(desiredToken != address(0), 'Invalid Desired Token!'); require(referralShares[rewardRecipient].amount > 0, 'Insufficient Balance!'); if (referralShares[rewardRecipient].amount <= IBEP20(rewardToken).balanceOf(address(this))) { // Swap token and send to the reward recipient _swapAndSendToken(rewardRecipient, referralShares[rewardRecipient].amount, desiredToken); // Set amount to 0, set number of times claimed referralShares[rewardRecipient].amount = 0; referralShares[rewardRecipient].numberOfTimesClaimed = referralShares[rewardRecipient].numberOfTimesClaimed.add(1); } } function _claimRewardInBNBToDesiredWallet(address rewardRecipient, address desiredWallet) private { require(rewardRecipient != address(0), 'Invalid Reward Recipient!'); require(desiredWallet != address(0), 'Zero Address!'); require(referralShares[rewardRecipient].amount > 0, 'Insufficient Balance!'); if (referralShares[rewardRecipient].amount <= IBEP20(rewardToken).balanceOf(address(this))) { // Swap token and send to the reward recipient _swapAndSendBNB(desiredWallet, referralShares[rewardRecipient].amount); // Set amount to 0, set number of times claimed referralShares[rewardRecipient].amount = 0; referralShares[rewardRecipient].numberOfTimesClaimed = referralShares[rewardRecipient].numberOfTimesClaimed.add(1); } } function _claimRewardInDesiredTokenToDesiredWallet(address rewardRecipient, address desiredWallet, address desiredToken) private { require(rewardRecipient != address(0), 'Invalid Reward Recipient!'); require(desiredWallet != address(0), 'Zero Address!'); require(desiredToken != address(0), 'Invalid Desired Token!'); require(referralShares[rewardRecipient].amount > 0, 'Insufficient Balance!'); if (referralShares[rewardRecipient].amount <= IBEP20(rewardToken).balanceOf(address(this))) { // Swap token and send to the reward recipient _swapAndSendToken(desiredWallet, referralShares[rewardRecipient].amount, desiredToken); // Set amount to 0, set number of times claimed referralShares[rewardRecipient].amount = 0; referralShares[rewardRecipient].numberOfTimesClaimed = referralShares[rewardRecipient].numberOfTimesClaimed.add(1); } } function _swapAndSendBNB(address recipient, uint256 amount) private { IUniswapV2Router02 pcsV2Router = IUniswapV2Router02(router); address[] memory path = new address[](2); path[0] = rewardToken; path[1] = pcsV2Router.WETH(); IBEP20(rewardToken).approve(address(pcsV2Router), amount); pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, recipient, block.timestamp.add(30) ); } function _swapAndSendToken(address recipient, uint256 amount, address token) private { IUniswapV2Router02 pcsV2Router = IUniswapV2Router02(router); address[] memory path = new address[](3); path[0] = rewardToken; path[1] = pcsV2Router.WETH(); path[2] = token; IBEP20(rewardToken).approve(address(pcsV2Router), amount); pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( amount, 0, path, recipient, block.timestamp.add(30) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AddRewardHolderShare","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"desiredToken","type":"address"}],"name":"ClaimRewardInDesiredToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"desiredWallet","type":"address"},{"indexed":true,"internalType":"address","name":"desiredToken","type":"address"}],"name":"ClaimRewardInDesiredTokenToDesiredWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"desiredWallet","type":"address"}],"name":"ClaimRewardToDesiredWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"giftRecipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"GiftReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardRecipient","type":"address"}],"name":"RemoveRewardholder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rewardToken","type":"address"}],"name":"SetRewardTokenAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"TransferedTokenOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"router","type":"address"}],"name":"UpdateRouterAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newDistributor","type":"address"}],"name":"UpgradeDistributor","type":"event"},{"inputs":[{"internalType":"address","name":"rewardRecipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addRewardHolderShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"desiredToken","type":"address"}],"name":"claimRewardInDesiredToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"desiredToken","type":"address"},{"internalType":"address","name":"desiredWallet","type":"address"}],"name":"claimRewardInDesiredTokenToDesiredWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"desiredWallet","type":"address"}],"name":"claimRewardToDesiredWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdrawEthInWei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyWithdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"giftRecipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"giftReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"numberOfTimesClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReferralShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"updateRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDistributor","type":"address"}],"name":"upgradeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161207838038061207883398101604081905261002f91610067565b600160005560058054336001600160a01b031991821617909155600480549091166001600160a01b0392909216919091179055610095565b600060208284031215610078578081fd5b81516001600160a01b038116811461008e578182fd5b9392505050565b611fd4806100a46000396000f3fe6080604052600436106101015760003560e01c8063a3e6761011610095578063b88a802f11610064578063b88a802f146102b0578063d7c42d2d146102c5578063f7c618c1146102e5578063f887ea4014610305578063fb127db31461032557600080fd5b8063a3e676101461020f578063afe240211461024c578063b1c83e1314610270578063b2af127c1461029057600080fd5b80637c3d49d0116100d15780637c3d49d01461018f5780638538b7f5146101af5780639a6acf20146101cf5780639ba8dfab146101ef57600080fd5b8062e6be7b1461010d57806321e6b53d1461012f578063246f07811461014f57806356a959b11461016f57600080fd5b3661010857005b600080fd5b34801561011957600080fd5b5061012d610128366004611cfb565b61036e565b005b34801561013b57600080fd5b5061012d61014a366004611cfb565b61049f565b34801561015b57600080fd5b5061012d61016a366004611cfb565b61055d565b34801561017b57600080fd5b5061012d61018a366004611d5e565b610753565b34801561019b57600080fd5b5061012d6101aa366004611cfb565b610820565b3480156101bb57600080fd5b5061012d6101ca366004611cfb565b610890565b3480156101db57600080fd5b5061012d6101ea366004611cfb565b610900565b3480156101fb57600080fd5b5061012d61020a366004611d96565b610b19565b34801561021b57600080fd5b5060055461022f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561025857600080fd5b5061026260025481565b604051908152602001610243565b34801561027c57600080fd5b5061012d61028b366004611d33565b610bea565b34801561029c57600080fd5b5061012d6102ab366004611cfb565b610cdc565b3480156102bc57600080fd5b5061012d610e75565b3480156102d157600080fd5b5061012d6102e0366004611d96565b610ed8565b3480156102f157600080fd5b5060035461022f906001600160a01b031681565b34801561031157600080fd5b5060045461022f906001600160a01b031681565b34801561033157600080fd5b50610359610340366004611cfb565b6001602081905260009182526040909120805491015482565b60408051928352602083019190915201610243565b6005546001600160a01b031633146103a15760405162461bcd60e51b815260040161039890611e17565b60405180910390fd5b6001600160a01b0381166103f75760405162461bcd60e51b815260206004820152601760248201527f526f75746572204164647265737320496e76616c6964210000000000000000006044820152606401610398565b6004546001600160a01b03828116911614156104555760405162461bcd60e51b815260206004820152601e60248201527f526f75746572204164647265737320616c7265616479206578697374732100006044820152606401610398565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f4c1ea6a665aa2893f77530b6dd4565a3454e462913055056df640995424af0a290600090a250565b6005546001600160a01b031633146104c95760405162461bcd60e51b815260040161039890611e17565b6001600160a01b0381166105135760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b2102732bb9027bbb732b960791b6044820152606401610398565b600580546001600160a01b0319166001600160a01b0383169081179091556040517f9f1917a3a96f075162355b13715ddf47d1b2b3ae3bbaaab885df64641bbf0fc590600090a250565b6005546001600160a01b031633146105875760405162461bcd60e51b815260040161039890611e17565b6001600160a01b03811630148015906105a857506001600160a01b03811615155b6105eb5760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964204469737472696275746f722160601b6044820152606401610398565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561062f57600080fd5b505afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106679190611dc8565b905080156107115760035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156106bd57600080fd5b505af11580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f59190611da8565b6107115760405162461bcd60e51b815260040161039890611e44565b6040516001600160a01b038316907fb444a6a8aa6c6a51ee03ad789a988a93cfe2c8fc2d8617960d2a2f697345a01d90600090a26005546001600160a01b0316ff5b600260005414156107765760405162461bcd60e51b815260040161039890611e6e565b60026000556001600160a01b0381166107d15760405162461bcd60e51b815260206004820152601b60248201527f496e76616c69642044657374696e6174696f6e2057616c6c65742100000000006044820152606401610398565b6107dc338284610f4c565b6040516001600160a01b03808416919083169033907fec4ce4ca9a77fda38fae15e7f0c2d53898d234308c4f79e579915528c036e3a590600090a450506001600055565b600260005414156108435760405162461bcd60e51b815260040161039890611e6e565b60026000556108523382611146565b6040516001600160a01b0382169033907fb57dfd0f9e43c9aeaaf8e6d1c0631d386131c4f913fc8da70b1387ae7c95191090600090a3506001600055565b600260005414156108b35760405162461bcd60e51b815260040161039890611e6e565b60026000556108c233826112ef565b6040516001600160a01b0382169033907f6e12346013747ea6077e0434dc6ed2744c3419c17f5492314589b045cc7da1ed90600090a3506001600055565b6005546001600160a01b0316331461092a5760405162461bcd60e51b815260040161039890611e17565b6003546001600160a01b0382811691161480159061095057506001600160a01b03811615155b6109945760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642052657761726420546f6b656e2160581b6044820152606401610398565b6003546001600160a01b031615610acf576003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156109e957600080fd5b505afa1580156109fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a219190611dc8565b90508015610acd5760035460055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190611da8565b610acd5760405162461bcd60e51b815260040161039890611e44565b505b600380546001600160a01b0319166001600160a01b0383169081179091556040517f96cf8c1e863ebbc3a58652b7deae3059e01d7505f67c03d970a869019137267f90600090a250565b6003546001600160a01b03163314610b645760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420546f6b656e2160901b6044820152606401610398565b6001600160a01b038216600090815260016020526040902054610b879082611457565b6001600160a01b038316600090815260016020526040902055600254610bad9082611457565b60025560405181906001600160a01b038416907fc145d3d860d8c1bc5459cc85698b4c7d99f9bccb65189a869c5ae6b8d7f2122f90600090a35050565b6005546001600160a01b03163314610c145760405162461bcd60e51b815260040161039890611e17565b6001600160a01b038216610c5f5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420526563697069656e742160701b6044820152606401610398565b60008111610ca15760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420416d6f756e742160881b6044820152606401610398565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610cd7573d6000803e3d6000fd5b505050565b6005546001600160a01b03163314610d065760405162461bcd60e51b815260040161039890611e17565b6001600160a01b038116610d4d5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420546f6b656e2160901b6044820152606401610398565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc79190611dc8565b90508015610e715760055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610e1d57600080fd5b505af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e559190611da8565b610e715760405162461bcd60e51b815260040161039890611e44565b5050565b60026000541415610e985760405162461bcd60e51b815260040161039890611e6e565b6002600055610ea63361146a565b60405133907f63e32091e4445d16e29c33a6b264577c2d86694021aa4e6f4dd590048f5792e890600090a26001600055565b60026000541415610efb5760405162461bcd60e51b815260040161039890611e6e565b6002600055610f0b3383836115cd565b60405181906001600160a01b0384169033907f8def119c4a23727ce9f39d707a0b563cede22bc2ea07a3d4cc0c2b3fa3de39a990600090a450506001600055565b6001600160a01b038316610f725760405162461bcd60e51b815260040161039890611de0565b6001600160a01b038216610fb85760405162461bcd60e51b815260206004820152600d60248201526c5a65726f20416464726573732160981b6044820152606401610398565b6001600160a01b0381166110075760405162461bcd60e51b8152602060048201526016602482015275496e76616c6964204465736972656420546f6b656e2160501b6044820152606401610398565b6001600160a01b03831660009081526001602052604090205461103c5760405162461bcd60e51b815260040161039890611ea5565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561107f57600080fd5b505afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190611dc8565b6001600160a01b03841660009081526001602052604090205411610cd7576001600160a01b0383166000908152600160205260409020546110fa90839083611874565b6001600160a01b038316600090815260016020819052604082209182559081015461112491611457565b6001600160a01b03841660009081526001602081905260409091200155505050565b6001600160a01b03821661116c5760405162461bcd60e51b815260040161039890611de0565b6001600160a01b0381166111b25760405162461bcd60e51b815260206004820152600d60248201526c5a65726f20416464726573732160981b6044820152606401610398565b6001600160a01b0382166000908152600160205260409020546111e75760405162461bcd60e51b815260040161039890611ea5565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561122a57600080fd5b505afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190611dc8565b6001600160a01b03831660009081526001602052604090205411610e71576001600160a01b0382166000908152600160205260409020546112a4908290611ad4565b6001600160a01b03821660009081526001602081905260408220918255908101546112ce91611457565b6001600160a01b038316600090815260016020819052604090912001555050565b6001600160a01b0382166113155760405162461bcd60e51b815260040161039890611de0565b6001600160a01b0381166113645760405162461bcd60e51b8152602060048201526016602482015275496e76616c6964204465736972656420546f6b656e2160501b6044820152606401610398565b6001600160a01b0382166000908152600160205260409020546113995760405162461bcd60e51b815260040161039890611ea5565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190611dc8565b6001600160a01b03831660009081526001602052604090205411610e71576001600160a01b0382166000908152600160205260409020546112a490839083611874565b60006114638284611f44565b9392505050565b6001600160a01b0381166114905760405162461bcd60e51b815260040161039890611de0565b6001600160a01b0381166000908152600160205260409020546114c55760405162461bcd60e51b815260040161039890611ea5565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561150857600080fd5b505afa15801561151c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115409190611dc8565b6001600160a01b038216600090815260016020526040902054116115ca576001600160a01b038116600090815260016020526040902054611582908290611ad4565b6001600160a01b03811660009081526001602081905260408220918255908101546115ac91611457565b6001600160a01b038216600090815260016020819052604090912001555b50565b6001600160a01b0383166115f35760405162461bcd60e51b815260040161039890611de0565b6001600160a01b0382166116495760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204769667420526563697069656e74210000000000000000006044820152606401610398565b6001600160a01b03831660009081526001602052604090205461167e5760405162461bcd60e51b815260040161039890611ea5565b600081116116c05760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420416d6f756e742160881b6044820152606401610398565b6001600160a01b0383166000908152600160205260409020548111156116f85760405162461bcd60e51b815260040161039890611ea5565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561173b57600080fd5b505afa15801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190611dc8565b6001600160a01b03841660009081526001602052604090205411610cd75760035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156117df57600080fd5b505af11580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118179190611da8565b6118335760405162461bcd60e51b815260040161039890611e44565b6001600160a01b0383166000908152600160205260409020546118569082611cef565b6001600160a01b038416600090815260016020526040902055505050565b600454604080516003808252608082019092526001600160a01b039092169160009160208201606080368337505060035482519293506001600160a01b0316918391506000906118d457634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561192d57600080fd5b505afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190611d17565b8160018151811061198657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505082816002815181106119c857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035460405163095ea7b360e01b815284831660048201526024810187905291169063095ea7b390604401602060405180830381600087803b158015611a2357600080fd5b505af1158015611a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5b9190611da8565b506001600160a01b038216635c11d7958560008489611a7b42601e611457565b6040518663ffffffff1660e01b8152600401611a9b959493929190611ed4565b600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050505050565b6004546040805160028082526060820183526001600160a01b0390931692600092602083019080368337505060035482519293506001600160a01b031691839150600090611b3257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8b57600080fd5b505afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190611d17565b81600181518110611be457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035460405163095ea7b360e01b815284831660048201526024810186905291169063095ea7b390604401602060405180830381600087803b158015611c3f57600080fd5b505af1158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190611da8565b506001600160a01b03821663791ac9478460008488611c9742601e611457565b6040518663ffffffff1660e01b8152600401611cb7959493929190611ed4565b600060405180830381600087803b158015611cd157600080fd5b505af1158015611ce5573d6000803e3d6000fd5b5050505050505050565b60006114638284611f5c565b600060208284031215611d0c578081fd5b813561146381611f89565b600060208284031215611d28578081fd5b815161146381611f89565b60008060408385031215611d45578081fd5b8235611d5081611f89565b946020939093013593505050565b60008060408385031215611d70578182fd5b8235611d7b81611f89565b91506020830135611d8b81611f89565b809150509250929050565b60008060408385031215611d45578182fd5b600060208284031215611db9578081fd5b81518015158114611463578182fd5b600060208284031215611dd9578081fd5b5051919050565b60208082526019908201527f496e76616c69642052657761726420526563697069656e742100000000000000604082015260600190565b60208082526013908201527224b73b30b634b2102a37b5b2b71027bbb732b960691b604082015260600190565b60208082526010908201526f5472616e73666572204661696c65642160801b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260159082015274496e73756666696369656e742042616c616e63652160581b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611f235784516001600160a01b031683529383019391830191600101611efe565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f5757611f57611f73565b500190565b600082821015611f6e57611f6e611f73565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146115ca57600080fdfea2646970667358221220ae92e5818b9a324b9045a47a104b11b1295e598f2b2a37b2403ee1ae37f86bd164736f6c63430008040033000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Decoded View---------------
Arg [0] : _router (address): 0xa5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed ByteCode Sourcemap
26759:11426:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30227:283;;;;;;;;;;-1:-1:-1;30227:283:0;;;;;:::i;:::-;;:::i;:::-;;29180:222;;;;;;;;;;-1:-1:-1;29180:222:0;;;;;:::i;:::-;;:::i;29414:463::-;;;;;;;;;;-1:-1:-1;29414:463:0;;;;;:::i;:::-;;:::i;32364:393::-;;;;;;;;;;-1:-1:-1;32364:393:0;;;;;:::i;:::-;;:::i;32128:228::-;;;;;;;;;;-1:-1:-1;32128:228:0;;;;;:::i;:::-;;:::i;31903:217::-;;;;;;;;;;-1:-1:-1;31903:217:0;;;;;:::i;:::-;;:::i;28612:556::-;;;;;;;;;;-1:-1:-1;28612:556:0;;;;;:::i;:::-;;:::i;29885:334::-;;;;;;;;;;-1:-1:-1;29885:334:0;;;;;:::i;:::-;;:::i;27281:25::-;;;;;;;;;;-1:-1:-1;27281:25:0;;;;-1:-1:-1;;;;;27281:25:0;;;;;;-1:-1:-1;;;;;2278:32:1;;;2260:51;;2248:2;2233:18;27281:25:0;;;;;;;;27090:34;;;;;;;;;;;;;;;;;;;8695:25:1;;;8683:2;8668:18;27090:34:0;8650:76:1;30731:256:0;;;;;;;;;;-1:-1:-1;30731:256:0;;;;;:::i;:::-;;:::i;31213:327::-;;;;;;;;;;-1:-1:-1;31213:327:0;;;;;:::i;:::-;;:::i;31763:132::-;;;;;;;;;;;;;:::i;31548:207::-;;;;;;;;;;-1:-1:-1;31548:207:0;;;;;:::i;:::-;;:::i;27159:26::-;;;;;;;;;;-1:-1:-1;27159:26:0;;;;-1:-1:-1;;;;;27159:26:0;;;27221:21;;;;;;;;;;-1:-1:-1;27221:21:0;;;;-1:-1:-1;;;;;27221:21:0;;;27025:56;;;;;;;;;;-1:-1:-1;27025:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9893:25:1;;;9949:2;9934:18;;9927:34;;;;9866:18;27025:56:0;9848:119:1;30227:283:0;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;30311:21:0;::::1;30303:57;;;::::0;-1:-1:-1;;;30303:57:0;;5247:2:1;30303:57:0::1;::::0;::::1;5229:21:1::0;5286:2;5266:18;;;5259:30;5325:25;5305:18;;;5298:53;5368:18;;30303:57:0::1;5219:173:1::0;30303:57:0::1;30379:6;::::0;-1:-1:-1;;;;;30379:17:0;;::::1;:6:::0;::::1;:17;;30371:60;;;::::0;-1:-1:-1;;;30371:60:0;;4546:2:1;30371:60:0::1;::::0;::::1;4528:21:1::0;4585:2;4565:18;;;4558:30;4624:32;4604:18;;;4597:60;4674:18;;30371:60:0::1;4518:180:1::0;30371:60:0::1;30442:6;:16:::0;;-1:-1:-1;;;;;;30442:16:0::1;-1:-1:-1::0;;;;;30442:16:0;::::1;::::0;;::::1;::::0;;;30474:28:::1;::::0;::::1;::::0;-1:-1:-1;;30474:28:0::1;30227:283:::0;:::o;29180:222::-;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29268:22:0;::::1;29260:52;;;::::0;-1:-1:-1;;;29260:52:0;;4200:2:1;29260:52:0::1;::::0;::::1;4182:21:1::0;4239:2;4219:18;;;4212:30;-1:-1:-1;;;4258:18:1;;;4251:47;4315:18;;29260:52:0::1;4172:167:1::0;29260:52:0::1;29323:10;:21:::0;;-1:-1:-1;;;;;;29323:21:0::1;-1:-1:-1::0;;;;;29323:21:0;::::1;::::0;;::::1;::::0;;;29360:34:::1;::::0;::::1;::::0;-1:-1:-1;;29360:34:0::1;29180:222:::0;:::o;29414:463::-;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29504:31:0;::::1;29530:4;29504:31;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;;;;;;29539:28:0;::::1;::::0;::::1;29504:63;29496:96;;;::::0;-1:-1:-1;;;29496:96:0;;3851:2:1;29496:96:0::1;::::0;::::1;3833:21:1::0;3890:2;3870:18;;;3863:30;-1:-1:-1;;;3909:18:1;;;3902:50;3969:18;;29496:96:0::1;3823:170:1::0;29496:96:0::1;29628:11;::::0;29621:44:::1;::::0;-1:-1:-1;;;29621:44:0;;29659:4:::1;29621:44;::::0;::::1;2260:51:1::0;29603:15:0::1;::::0;-1:-1:-1;;;;;29628:11:0::1;::::0;29621:29:::1;::::0;2233:18:1;;29621:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29603:62:::0;-1:-1:-1;29680:11:0;;29676:99:::1;;29708:11;::::0;29701:53:::1;::::0;-1:-1:-1;;;29701:53:0;;-1:-1:-1;;;;;2514:32:1;;;29701:53:0::1;::::0;::::1;2496:51:1::0;2563:18;;;2556:34;;;29708:11:0;;::::1;::::0;29701:28:::1;::::0;2469:18:1;;29701:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29693:82;;;;-1:-1:-1::0;;;29693:82:0::1;;;;;;;:::i;:::-;29791:34;::::0;-1:-1:-1;;;;;29791:34:0;::::1;::::0;::::1;::::0;;;::::1;29857:10;::::0;-1:-1:-1;;;;;29857:10:0::1;29836:33;32364:393:::0;26425:1;26570:7;;:19;;26562:63;;;;-1:-1:-1;;;26562:63:0;;;;;;;:::i;:::-;26425:1;26636:7;:18;-1:-1:-1;;;;;32500:27:0;::::1;32492:67;;;::::0;-1:-1:-1;;;32492:67:0;;5947:2:1;32492:67:0::1;::::0;::::1;5929:21:1::0;5986:2;5966:18;;;5959:30;6025:29;6005:18;;;5998:57;6072:18;;32492:67:0::1;5919:177:1::0;32492:67:0::1;32570:82;32612:10;32624:13;32639:12;32570:41;:82::i;:::-;32668:81;::::0;-1:-1:-1;;;;;32668:81:0;;::::1;::::0;;;::::1;::::0;32709:10:::1;::::0;32668:81:::1;::::0;;;::::1;-1:-1:-1::0;;26381:1:0;26677:7;:22;32364:393::o;32128:228::-;26425:1;26570:7;;:19;;26562:63;;;;-1:-1:-1;;;26562:63:0;;;;;;;:::i;:::-;26425:1;26636:7;:18;32220:59:::1;32253:10;32265:13:::0;32220:32:::1;:59::i;:::-;32295:53;::::0;-1:-1:-1;;;;;32295:53:0;::::1;::::0;32322:10:::1;::::0;32295:53:::1;::::0;;;::::1;-1:-1:-1::0;26381:1:0;26677:7;:22;32128:228::o;31903:217::-;26425:1;26570:7;;:19;;26562:63;;;;-1:-1:-1;;;26562:63:0;;;;;;;:::i;:::-;26425:1;26636:7;:18;31993:52:::1;32020:10;32032:12:::0;31993:26:::1;:52::i;:::-;32061:51;::::0;-1:-1:-1;;;;;32061:51:0;::::1;::::0;32087:10:::1;::::0;32061:51:::1;::::0;;;::::1;-1:-1:-1::0;26381:1:0;26677:7;:22;31903:217::o;28612:556::-;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;28703:11:::1;::::0;-1:-1:-1;;;;;28703:27:0;;::::1;:11:::0;::::1;:27;::::0;::::1;::::0;:57:::1;;-1:-1:-1::0;;;;;;28734:26:0;::::1;::::0;::::1;28703:57;28695:91;;;::::0;-1:-1:-1;;;28695:91:0;;3501:2:1;28695:91:0::1;::::0;::::1;3483:21:1::0;3540:2;3520:18;;;3513:30;-1:-1:-1;;;3559:18:1;;;3552:51;3620:18;;28695:91:0::1;3473:171:1::0;28695:91:0::1;28803:11;::::0;-1:-1:-1;;;;;28803:11:0::1;:25:::0;28799:264:::1;;28870:11;::::0;28863:44:::1;::::0;-1:-1:-1;;;28863:44:0;;28901:4:::1;28863:44;::::0;::::1;2260:51:1::0;28845:15:0::1;::::0;-1:-1:-1;;;;;28870:11:0::1;::::0;28863:29:::1;::::0;2233:18:1;;28863:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28845:62:::0;-1:-1:-1;28926:11:0;;28922:130:::1;;28973:11;::::0;28995:10:::1;::::0;28966:49:::1;::::0;-1:-1:-1;;;28966:49:0;;-1:-1:-1;;;;;28995:10:0;;::::1;28966:49;::::0;::::1;2496:51:1::0;2563:18;;;2556:34;;;28973:11:0;::::1;::::0;28966:28:::1;::::0;2469:18:1;;28966:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28958:78;;;;-1:-1:-1::0;;;28958:78:0::1;;;;;;;:::i;:::-;28799:264;;29083:11;:26:::0;;-1:-1:-1;;;;;;29083:26:0::1;-1:-1:-1::0;;;;;29083:26:0;::::1;::::0;;::::1;::::0;;;29125:35:::1;::::0;::::1;::::0;-1:-1:-1;;29125:35:0::1;28612:556:::0;:::o;29885:334::-;27373:11;;-1:-1:-1;;;;;27373:11:0;27359:10;:25;27351:52;;;;-1:-1:-1;;;27351:52:0;;6999:2:1;27351:52:0;;;6981:21:1;7038:2;7018:18;;;7011:30;-1:-1:-1;;;7057:18:1;;;7050:44;7111:18;;27351:52:0;6971:164:1;27351:52:0;-1:-1:-1;;;;;30036:31:0;::::1;;::::0;;;:14:::1;:31;::::0;;;;:38;:50:::1;::::0;30079:6;30036:42:::1;:50::i;:::-;-1:-1:-1::0;;;;;29995:31:0;::::1;;::::0;;;:14:::1;:31;::::0;;;;:91;30119:19:::1;::::0;:31:::1;::::0;30143:6;30119:23:::1;:31::i;:::-;30097:19;:53:::0;30166:45:::1;::::0;30204:6;;-1:-1:-1;;;;;30166:45:0;::::1;::::0;::::1;::::0;;;::::1;29885:334:::0;;:::o;30731:256::-;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30847:23:0;::::1;30839:54;;;::::0;-1:-1:-1;;;30839:54:0;;8054:2:1;30839:54:0::1;::::0;::::1;8036:21:1::0;8093:2;8073:18;;;8066:30;-1:-1:-1;;;8112:18:1;;;8105:48;8170:18;;30839:54:0::1;8026:168:1::0;30839:54:0::1;30921:1;30912:6;:10;30904:38;;;::::0;-1:-1:-1;;;30904:38:0;;2803:2:1;30904:38:0::1;::::0;::::1;2785:21:1::0;2842:2;2822:18;;;2815:30;-1:-1:-1;;;2861:18:1;;;2854:45;2916:18;;30904:38:0::1;2775:165:1::0;30904:38:0::1;30953:26;::::0;-1:-1:-1;;;;;30953:18:0;::::1;::::0;:26;::::1;;;::::0;30972:6;;30953:26:::1;::::0;;;30972:6;30953:18;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30731:256:::0;;:::o;31213:327::-;27480:10;;-1:-1:-1;;;;;27480:10:0;27466;:24;27458:56;;;;-1:-1:-1;;;27458:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31299:19:0;::::1;31291:46;;;::::0;-1:-1:-1;;;31291:46:0;;6999:2:1;31291:46:0::1;::::0;::::1;6981:21:1::0;7038:2;7018:18;;;7011:30;-1:-1:-1;;;7057:18:1;;;7050:44;7111:18;;31291:46:0::1;6971:164:1::0;31291:46:0::1;31368:38;::::0;-1:-1:-1;;;31368:38:0;;31400:4:::1;31368:38;::::0;::::1;2260:51:1::0;31350:15:0::1;::::0;-1:-1:-1;;;;;31368:23:0;::::1;::::0;::::1;::::0;2233:18:1;;31368:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31350:56:::0;-1:-1:-1;31421:11:0;;31417:116:::1;;31480:10;::::0;31457:43:::1;::::0;-1:-1:-1;;;31457:43:0;;-1:-1:-1;;;;;31480:10:0;;::::1;31457:43;::::0;::::1;2496:51:1::0;2563:18;;;2556:34;;;31457:22:0;;::::1;::::0;::::1;::::0;2469:18:1;;31457:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31449:72;;;;-1:-1:-1::0;;;31449:72:0::1;;;;;;;:::i;:::-;27516:1;31213:327:::0;:::o;31763:132::-;26425:1;26570:7;;:19;;26562:63;;;;-1:-1:-1;;;26562:63:0;;;;;;;:::i;:::-;26425:1;26636:7;:18;31819:29:::1;31837:10;31819:17;:29::i;:::-;31864:23;::::0;31876:10:::1;::::0;31864:23:::1;::::0;;;::::1;26381:1:::0;26677:7;:22;31763:132::o;31548:207::-;26425:1;26570:7;;:19;;26562:63;;;;-1:-1:-1;;;26562:63:0;;;;;;;:::i;:::-;26425:1;26636:7;:18;31640:46:::1;31652:10;31664:13:::0;31679:6;31640:11:::1;:46::i;:::-;31702:45;::::0;31740:6;;-1:-1:-1;;;;;31702:45:0;::::1;::::0;31713:10:::1;::::0;31702:45:::1;::::0;;;::::1;-1:-1:-1::0;;26381:1:0;26677:7;:22;31548:207::o;36068:964::-;-1:-1:-1;;;;;36216:29:0;;36208:67;;;;-1:-1:-1;;;36208:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36294:27:0;;36286:53;;;;-1:-1:-1;;;36286:53:0;;4905:2:1;36286:53:0;;;4887:21:1;4944:2;4924:18;;;4917:30;-1:-1:-1;;;4963:18:1;;;4956:43;5016:18;;36286:53:0;4877:163:1;36286:53:0;-1:-1:-1;;;;;36358:26:0;;36350:61;;;;-1:-1:-1;;;36350:61:0;;6303:2:1;36350:61:0;;;6285:21:1;6342:2;6322:18;;;6315:30;-1:-1:-1;;;6361:18:1;;;6354:52;6423:18;;36350:61:0;6275:172:1;36350:61:0;-1:-1:-1;;;;;36430:31:0;;36471:1;36430:31;;;:14;:31;;;;;:38;36422:76;;;;-1:-1:-1;;;36422:76:0;;;;;;;:::i;:::-;36564:11;;36557:44;;-1:-1:-1;;;36557:44:0;;36595:4;36557:44;;;2260:51:1;-1:-1:-1;;;;;36564:11:0;;;;36557:29;;2233:18:1;;36557:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;36515:31:0;;;;;;:14;:31;;;;;:38;:86;36511:514;;-1:-1:-1;;;;;36711:31:0;;;;;;:14;:31;;;;;:38;36678:86;;36696:13;;36751:12;36678:17;:86::i;:::-;-1:-1:-1;;;;;36842:31:0;;36883:1;36842:31;;;:14;:31;;;;;;;:42;;;36954:52;;;;:59;;:56;:59::i;:::-;-1:-1:-1;;;;;36899:31:0;;;;;;:14;:31;;;;;;;;:52;:114;36068:964;;;:::o;35215:845::-;-1:-1:-1;;;;;35332:29:0;;35324:67;;;;-1:-1:-1;;;35324:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35410:27:0;;35402:53;;;;-1:-1:-1;;;35402:53:0;;4905:2:1;35402:53:0;;;4887:21:1;4944:2;4924:18;;;4917:30;-1:-1:-1;;;4963:18:1;;;4956:43;5016:18;;35402:53:0;4877:163:1;35402:53:0;-1:-1:-1;;;;;35474:31:0;;35515:1;35474:31;;;:14;:31;;;;;:38;35466:76;;;;-1:-1:-1;;;35466:76:0;;;;;;;:::i;:::-;35608:11;;35601:44;;-1:-1:-1;;;35601:44:0;;35639:4;35601:44;;;2260:51:1;-1:-1:-1;;;;;35608:11:0;;;;35601:29;;2233:18:1;;35601:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35559:31:0;;;;;;:14;:31;;;;;:38;:86;35555:498;;-1:-1:-1;;;;;35753:31:0;;;;;;:14;:31;;;;;:38;35722:70;;35738:13;;35722:15;:70::i;:::-;-1:-1:-1;;;;;35870:31:0;;35911:1;35870:31;;;:14;:31;;;;;;;:42;;;35982:52;;;;:59;;:56;:59::i;:::-;-1:-1:-1;;;;;35927:31:0;;;;;;:14;:31;;;;;;;;:52;:114;35215:845;;:::o;34343:864::-;-1:-1:-1;;;;;34453:29:0;;34445:67;;;;-1:-1:-1;;;34445:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34531:26:0;;34523:61;;;;-1:-1:-1;;;34523:61:0;;6303:2:1;34523:61:0;;;6285:21:1;6342:2;6322:18;;;6315:30;-1:-1:-1;;;6361:18:1;;;6354:52;6423:18;;34523:61:0;6275:172:1;34523:61:0;-1:-1:-1;;;;;34603:31:0;;34644:1;34603:31;;;:14;:31;;;;;:38;34595:76;;;;-1:-1:-1;;;34595:76:0;;;;;;;:::i;:::-;34737:11;;34730:44;;-1:-1:-1;;;34730:44:0;;34768:4;34730:44;;;2260:51:1;-1:-1:-1;;;;;34737:11:0;;;;34730:29;;2233:18:1;;34730:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34688:31:0;;;;;;:14;:31;;;;;:38;:86;34684:516;;-1:-1:-1;;;;;34886:31:0;;;;;;:14;:31;;;;;:38;34851:88;;34869:15;;34926:12;34851:17;:88::i;11042:98::-;11100:7;11127:5;11131:1;11127;:5;:::i;:::-;11120:12;11042:98;-1:-1:-1;;;11042:98:0:o;33590:745::-;-1:-1:-1;;;;;33669:29:0;;33661:67;;;;-1:-1:-1;;;33661:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33747:31:0;;33788:1;33747:31;;;:14;:31;;;;;:38;33739:76;;;;-1:-1:-1;;;33739:76:0;;;;;;;:::i;:::-;33881:11;;33874:44;;-1:-1:-1;;;33874:44:0;;33912:4;33874:44;;;2260:51:1;-1:-1:-1;;;;;33881:11:0;;;;33874:29;;2233:18:1;;33874:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33832:31:0;;;;;;:14;:31;;;;;:38;:86;33828:500;;-1:-1:-1;;;;;34028:31:0;;;;;;:14;:31;;;;;:38;33995:72;;34011:15;;33995;:72::i;:::-;-1:-1:-1;;;;;34145:31:0;;34186:1;34145:31;;;:14;:31;;;;;;;:42;;;34257:52;;;;:59;;:56;:59::i;:::-;-1:-1:-1;;;;;34202:31:0;;;;;;:14;:31;;;;;;;;:52;:114;33828:500;33590:745;:::o;32765:813::-;-1:-1:-1;;;;;32877:29:0;;32869:67;;;;-1:-1:-1;;;32869:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32955:27:0;;32947:63;;;;-1:-1:-1;;;32947:63:0;;7702:2:1;32947:63:0;;;7684:21:1;7741:2;7721:18;;;7714:30;7780:25;7760:18;;;7753:53;7823:18;;32947:63:0;7674:173:1;32947:63:0;-1:-1:-1;;;;;33029:31:0;;33070:1;33029:31;;;:14;:31;;;;;:38;33021:76;;;;-1:-1:-1;;;33021:76:0;;;;;;;:::i;:::-;33125:1;33116:6;:10;33108:38;;;;-1:-1:-1;;;33108:38:0;;2803:2:1;33108:38:0;;;2785:21:1;2842:2;2822:18;;;2815:30;-1:-1:-1;;;2861:18:1;;;2854:45;2916:18;;33108:38:0;2775:165:1;33108:38:0;-1:-1:-1;;;;;33175:31:0;;;;;;:14;:31;;;;;:38;33165:48;;;33157:82;;;;-1:-1:-1;;;33157:82:0;;;;;;;:::i;:::-;33305:11;;33298:44;;-1:-1:-1;;;33298:44:0;;33336:4;33298:44;;;2260:51:1;-1:-1:-1;;;;;33305:11:0;;;;33298:29;;2233:18:1;;33298:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33256:31:0;;;;;;:14;:31;;;;;:38;:86;33252:319;;33374:11;;33367:51;;-1:-1:-1;;;33367:51:0;;-1:-1:-1;;;;;2514:32:1;;;33367:51:0;;;2496::1;2563:18;;;2556:34;;;33374:11:0;;;;33367:28;;2469:18:1;;33367:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33359:80;;;;-1:-1:-1;;;33359:80:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33509:31:0;;;;;;:14;:31;;;;;:38;:50;;33552:6;33509:42;:50::i;:::-;-1:-1:-1;;;;;33468:31:0;;;;;;:14;:31;;;;;:91;32765:813;;;:::o;37592:590::-;37740:6;;37784:16;;;37798:1;37784:16;;;;;;;;;-1:-1:-1;;;;;37740:6:0;;;;37688:30;;37784:16;;;;;;;;-1:-1:-1;;37821:11:0;;37811:7;;;;-1:-1:-1;;;;;;37821:11:0;;37811:7;;-1:-1:-1;37821:11:0;;37811:7;;-1:-1:-1;;;37811:7:0;;;;;;;;;;;;;;:21;-1:-1:-1;;;;;37811:21:0;;;-1:-1:-1;;;;;37811:21:0;;;;;37853:11;-1:-1:-1;;;;;37853:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37843:4;37848:1;37843:7;;;;;;-1:-1:-1;;;37843:7:0;;;;;;;;;;;;;;:28;-1:-1:-1;;;;;37843:28:0;;;-1:-1:-1;;;;;37843:28:0;;;;;37892:5;37882:4;37887:1;37882:7;;;;;;-1:-1:-1;;;37882:7:0;;;;;;;;;-1:-1:-1;;;;;37882:15:0;;;:7;;;;;;;;;:15;37917:11;;37910:57;;-1:-1:-1;;;37910:57:0;;2514:32:1;;;37910:57:0;;;2496:51:1;2563:18;;;2556:34;;;37917:11:0;;;37910:27;;2469:18:1;;37910:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;37980:65:0;;;38060:6;38081:1;38097:4;38116:9;38140:23;:15;38160:2;38140:19;:23::i;:::-;37980:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37592:590;;;;;:::o;37040:544::-;37171:6;;37215:16;;;37229:1;37215:16;;;;;;;;-1:-1:-1;;;;;37171:6:0;;;;37119:30;;37215:16;;;;;;;;-1:-1:-1;;37252:11:0;;37242:7;;;;-1:-1:-1;;;;;;37252:11:0;;37242:7;;-1:-1:-1;37252:11:0;;37242:7;;-1:-1:-1;;;37242:7:0;;;;;;;;;;;;;;:21;-1:-1:-1;;;;;37242:21:0;;;-1:-1:-1;;;;;37242:21:0;;;;;37284:11;-1:-1:-1;;;;;37284:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37274:4;37279:1;37274:7;;;;;;-1:-1:-1;;;37274:7:0;;;;;;;;;-1:-1:-1;;;;;37274:28:0;;;:7;;;;;;;;;:28;37322:11;;37315:57;;-1:-1:-1;;;37315:57:0;;2514:32:1;;;37315:57:0;;;2496:51:1;2563:18;;;2556:34;;;37322:11:0;;;37315:27;;2469:18:1;;37315:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;37385:62:0;;;37462:6;37483:1;37499:4;37518:9;37542:23;:15;37562:2;37542:19;:23::i;:::-;37385:191;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37040:544;;;;:::o;11423:98::-;11481:7;11508:5;11512:1;11508;:5;:::i;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:333::-;618:6;626;679:2;667:9;658:7;654:23;650:32;647:2;;;700:6;692;685:22;647:2;744:9;731:23;763:31;788:5;763:31;:::i;:::-;813:5;865:2;850:18;;;;837:32;;-1:-1:-1;;;637:238:1:o;880:398::-;948:6;956;1009:2;997:9;988:7;984:23;980:32;977:2;;;1030:6;1022;1015:22;977:2;1074:9;1061:23;1093:31;1118:5;1093:31;:::i;:::-;1143:5;-1:-1:-1;1200:2:1;1185:18;;1172:32;1213:33;1172:32;1213:33;:::i;:::-;1265:7;1255:17;;;967:311;;;;;:::o;1283:325::-;1351:6;1359;1412:2;1400:9;1391:7;1387:23;1383:32;1380:2;;;1433:6;1425;1418:22;1613:297;1680:6;1733:2;1721:9;1712:7;1708:23;1704:32;1701:2;;;1754:6;1746;1739:22;1701:2;1791:9;1785:16;1844:5;1837:13;1830:21;1823:5;1820:32;1810:2;;1871:6;1863;1856:22;1915:194;1985:6;2038:2;2026:9;2017:7;2013:23;2009:32;2006:2;;;2059:6;2051;2044:22;2006:2;-1:-1:-1;2087:16:1;;1996:113;-1:-1:-1;1996:113:1:o;2945:349::-;3147:2;3129:21;;;3186:2;3166:18;;;3159:30;3225:27;3220:2;3205:18;;3198:55;3285:2;3270:18;;3119:175::o;5397:343::-;5599:2;5581:21;;;5638:2;5618:18;;;5611:30;-1:-1:-1;;;5672:2:1;5657:18;;5650:49;5731:2;5716:18;;5571:169::o;6452:340::-;6654:2;6636:21;;;6693:2;6673:18;;;6666:30;-1:-1:-1;;;6727:2:1;6712:18;;6705:46;6783:2;6768:18;;6626:166::o;7140:355::-;7342:2;7324:21;;;7381:2;7361:18;;;7354:30;7420:33;7415:2;7400:18;;7393:61;7486:2;7471:18;;7314:181::o;8199:345::-;8401:2;8383:21;;;8440:2;8420:18;;;8413:30;-1:-1:-1;;;8474:2:1;8459:18;;8452:51;8535:2;8520:18;;8373:171::o;8731:983::-;8993:4;9041:3;9030:9;9026:19;9072:6;9061:9;9054:25;9098:2;9136:6;9131:2;9120:9;9116:18;9109:34;9179:3;9174:2;9163:9;9159:18;9152:31;9203:6;9238;9232:13;9269:6;9261;9254:22;9307:3;9296:9;9292:19;9285:26;;9346:2;9338:6;9334:15;9320:29;;9367:4;9380:195;9394:6;9391:1;9388:13;9380:195;;;9459:13;;-1:-1:-1;;;;;9455:39:1;9443:52;;9550:15;;;;9515:12;;;;9491:1;9409:9;9380:195;;;-1:-1:-1;;;;;;;9631:32:1;;;;9626:2;9611:18;;9604:60;-1:-1:-1;;;9695:3:1;9680:19;9673:35;9592:3;9002:712;-1:-1:-1;;;9002:712:1:o;9972:128::-;10012:3;10043:1;10039:6;10036:1;10033:13;10030:2;;;10049:18;;:::i;:::-;-1:-1:-1;10085:9:1;;10020:80::o;10105:125::-;10145:4;10173:1;10170;10167:8;10164:2;;;10178:18;;:::i;:::-;-1:-1:-1;10215:9:1;;10154:76::o;10235:127::-;10296:10;10291:3;10287:20;10284:1;10277:31;10327:4;10324:1;10317:15;10351:4;10348:1;10341:15;10367:131;-1:-1:-1;;;;;10442:31:1;;10432:42;;10422:2;;10488:1;10485;10478:12
Swarm Source
ipfs://ae92e5818b9a324b9045a47a104b11b1295e598f2b2a37b2403ee1ae37f86bd1
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.