Contract
0xacd1caef47e4c47bafe8a51b3f4305fc38203b7a
12
My Name Tag:
Not Available
TokenTracker:
[ Download CSV Export ]
OVERVIEW
Luneko is an Arbitrum ERC-20 token with a fixed supply of 18.4 million tokens. It is the base token for the planned project ecosystem surrounding Luneko.Contract Name:
Luneko
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-04-26 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity <0.9.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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 functionCallWithValue(target, data, 0, "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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or 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 { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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; } 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 ICamelotFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function owner() external view returns (address); function feePercentOwner() external view returns (address); function setStableOwner() external view returns (address); function feeTo() external view returns (address); function ownerFeeShare() external view returns (uint256); function referrersFeeShare(address) external view returns (uint256); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function feeInfo() external view returns (uint _ownerFeeShare, address _feeTo); } interface ICamelotRouter 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, address referrer, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, address referrer, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, address referrer, uint deadline ) external; function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); } interface IWETH { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; } contract Luneko is ERC20, Ownable { // Setting the total supply at 18.4 million tokens (multiplied by standard decimal count) uint256 private _totalSupply = 18400000 * 10 ** 18; // Booleans for pair initialization and tax initialization bool private initialized; bool public taxActive; // Name, symbols, decimals. The old Lune had 9 decimals, but other devs complain about // vanity decimal numbers. As such, the new Lune has the standard 18 to reflect wei. uint256 public taxRate; // Initialize the tax address variable for the same reason. address payable public taxWallet; // Camelot Pair Factory and Router, because V2 is cooler than V3. address public pair; ICamelotFactory private immutable factory = ICamelotFactory(0x6EcCab422D763aC031210895C81787E87B43A652); ICamelotRouter private immutable swapRouter = ICamelotRouter(0xc873fEcbd354f5A56E00E710B90EF4201db2448d); IWETH private immutable WETH = IWETH(0x82aF49447D8a07e3bd95BD0d56f35241523fBab1); // Initializes the Camelot Pair function initializePair() external onlyOwner{ require(!initialized, "Already initialized"); pair = factory.createPair(address(this), address(WETH)); initialized = true; } // The previous contract effectively "locked" tokens out of circulation due to // the way the tax was implemented. This allows for withdrawing funds errantly // accumulated within the contract. Since we can withdraw from the contract now, // We can just send tax tokens directly here if need be. function withdrawETH() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } function withdrawToken() external onlyOwner { transfer(owner(), balanceOf(address(this))); } // Activate the taxes. function activateTaxes() external onlyOwner { taxRate = 2; taxActive = true; } // Disable the taxes. function disableTaxes() external onlyOwner { taxRate = 0; taxActive = false; } // Change the tax wallet function changeTaxWallet(address payable newTaxWallet) external onlyOwner { taxWallet = newTaxWallet; } // Transfer function. Calls the inhereted transfer function via super. // Only does anything different when the tax is active. function _transfer(address sender, address recipient, uint256 amount) internal virtual override { if (sender != address(0) && recipient == address(swapRouter) && taxActive) { uint256 taxAmount = (amount * taxRate) / 100; super._transfer(sender, taxWallet, taxAmount); amount -= taxAmount; } super._transfer(sender, recipient, amount); } // Allows for receiving ETH. receive() external payable {} // Constructor constructor() ERC20("Luneko","LUNE") { taxActive = false; _mint(msg.sender, _totalSupply); } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"activateTaxes","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":[{"internalType":"address payable","name":"newTaxWallet","type":"address"}],"name":"changeTaxWallet","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":[],"name":"disableTaxes","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":[],"name":"initializePair","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526a0f3859ffa9ede12c000000600655736eccab422d763ac031210895c81787e87b43a65273ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525073c873fecbd354f5a56e00e710b90ef4201db2448d73ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152507382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff16815250348015620000f557600080fd5b506040518060400160405280600681526020017f4c756e656b6f00000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c554e450000000000000000000000000000000000000000000000000000000081525081600390816200017391906200069c565b5080600490816200018591906200069c565b505050620001a86200019c620001dd60201b60201c565b620001e560201b60201c565b6000600760016101000a81548160ff021916908315150217905550620001d733600654620002ab60201b60201c565b6200089e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200031d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031490620007e4565b60405180910390fd5b62000331600083836200041860201b60201c565b806002600082825462000345919062000835565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f8919062000881565b60405180910390a362000414600083836200041d60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004a457607f821691505b602082108103620004ba57620004b96200045c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004e5565b620005308683620004e5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200057d62000577620005718462000548565b62000552565b62000548565b9050919050565b6000819050919050565b62000599836200055c565b620005b1620005a88262000584565b848454620004f2565b825550505050565b600090565b620005c8620005b9565b620005d58184846200058e565b505050565b5b81811015620005fd57620005f1600082620005be565b600181019050620005db565b5050565b601f8211156200064c576200061681620004c0565b6200062184620004d5565b8101602085101562000631578190505b620006496200064085620004d5565b830182620005da565b50505b505050565b600082821c905092915050565b6000620006716000198460080262000651565b1980831691505092915050565b60006200068c83836200065e565b9150826002028217905092915050565b620006a78262000422565b67ffffffffffffffff811115620006c357620006c26200042d565b5b620006cf82546200048b565b620006dc82828562000601565b600060209050601f831160018114620007145760008415620006ff578287015190505b6200070b85826200067e565b8655506200077b565b601f1984166200072486620004c0565b60005b828110156200074e5784890151825560018201915060208501945060208101905062000727565b868310156200076e57848901516200076a601f8916826200065e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007cc601f8362000783565b9150620007d98262000794565b602082019050919050565b60006020820190508181036000830152620007ff81620007bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008428262000548565b91506200084f8362000548565b92508282019050808211156200086a576200086962000806565b5b92915050565b6200087b8162000548565b82525050565b600060208201905062000898600083018462000870565b92915050565b60805160a05160c051611e90620008ce600039600061077d01526000610ed9015260006107400152611e906000f3fe60806040526004361061014f5760003560e01c80638da5cb5b116100b6578063cb7115951161006f578063cb7115951461047d578063d4dc0070146104a6578063d523e092146104d1578063dd62ed3e146104e8578063e086e5ec14610525578063f2fde38b1461053c57610156565b80638da5cb5b1461036b57806395d89b4114610396578063a457c2d7146103c1578063a8aa1b31146103fe578063a9059cbb14610429578063ca628c781461046657610156565b8063313ce56711610108578063313ce5671461026d57806339509351146102985780634fab9e4c146102d557806370a08231146102ec578063715018a614610329578063771a3a1d1461034057610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee5780632dc0562d1461022b5780632eae5ba41461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610565565b60405161017d9190611403565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906114be565b6105f7565b6040516101ba9190611519565b60405180910390f35b3480156101cf57600080fd5b506101d861061a565b6040516101e59190611543565b60405180910390f35b3480156101fa57600080fd5b506102156004803603810190610210919061155e565b610624565b6040516102229190611519565b60405180910390f35b34801561023757600080fd5b50610240610653565b60405161024d91906115d2565b60405180910390f35b34801561026257600080fd5b5061026b610679565b005b34801561027957600080fd5b506102826106a6565b60405161028f9190611609565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906114be565b6106af565b6040516102cc9190611519565b60405180910390f35b3480156102e157600080fd5b506102ea6106e6565b005b3480156102f857600080fd5b50610313600480360381019061030e9190611624565b610859565b6040516103209190611543565b60405180910390f35b34801561033557600080fd5b5061033e6108a1565b005b34801561034c57600080fd5b506103556108b5565b6040516103629190611543565b60405180910390f35b34801561037757600080fd5b506103806108bb565b60405161038d9190611660565b60405180910390f35b3480156103a257600080fd5b506103ab6108e5565b6040516103b89190611403565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e391906114be565b610977565b6040516103f59190611519565b60405180910390f35b34801561040a57600080fd5b506104136109ee565b6040516104209190611660565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906114be565b610a14565b60405161045d9190611519565b60405180910390f35b34801561047257600080fd5b5061047b610a37565b005b34801561048957600080fd5b506104a4600480360381019061049f91906116a7565b610a5b565b005b3480156104b257600080fd5b506104bb610aa7565b6040516104c89190611519565b60405180910390f35b3480156104dd57600080fd5b506104e6610aba565b005b3480156104f457600080fd5b5061050f600480360381019061050a91906116d4565b610ae7565b60405161051c9190611543565b60405180910390f35b34801561053157600080fd5b5061053a610b6e565b005b34801561054857600080fd5b50610563600480360381019061055e9190611624565b610bbf565b005b60606003805461057490611743565b80601f01602080910402602001604051908101604052809291908181526020018280546105a090611743565b80156105ed5780601f106105c2576101008083540402835291602001916105ed565b820191906000526020600020905b8154815290600101906020018083116105d057829003601f168201915b5050505050905090565b600080610602610c42565b905061060f818585610c4a565b600191505092915050565b6000600254905090565b60008061062f610c42565b905061063c858285610e13565b610647858585610e9f565b60019150509392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610681610faf565b60026008819055506001600760016101000a81548160ff021916908315150217905550565b60006012905090565b6000806106ba610c42565b90506106db8185856106cc8589610ae7565b6106d691906117a3565b610c4a565b600191505092915050565b6106ee610faf565b600760009054906101000a900460ff161561073e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073590611823565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016107b9929190611843565b6020604051808303816000875af11580156107d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fc9190611881565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760006101000a81548160ff021916908315150217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108a9610faf565b6108b3600061102d565b565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108f490611743565b80601f016020809104026020016040519081016040528092919081815260200182805461092090611743565b801561096d5780601f106109425761010080835404028352916020019161096d565b820191906000526020600020905b81548152906001019060200180831161095057829003601f168201915b5050505050905090565b600080610982610c42565b905060006109908286610ae7565b9050838110156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90611920565b60405180910390fd5b6109e28286868403610c4a565b60019250505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610a1f610c42565b9050610a2c818585610e9f565b600191505092915050565b610a3f610faf565b610a58610a4a6108bb565b610a5330610859565b610a14565b50565b610a63610faf565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760019054906101000a900460ff1681565b610ac2610faf565b60006008819055506000600760016101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b76610faf565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bbc573d6000803e3d6000fd5b50565b610bc7610faf565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d906119b2565b60405180910390fd5b610c3f8161102d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090611a44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90611ad6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e069190611543565b60405180910390a3505050565b6000610e1f8484610ae7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e995781811015610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8290611b42565b60405180910390fd5b610e988484848403610c4a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f2757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015610f3f5750600760019054906101000a900460ff165b15610f9f576000606460085483610f569190611b62565b610f609190611bd3565b9050610f8f84600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836110f3565b8082610f9b9190611c04565b9150505b610faa8383836110f3565b505050565b610fb7610c42565b73ffffffffffffffffffffffffffffffffffffffff16610fd56108bb565b73ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290611c84565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990611d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c890611da8565b60405180910390fd5b6111dc838383611369565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990611e3a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113509190611543565b60405180910390a361136384848461136e565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113ad578082015181840152602081019050611392565b60008484015250505050565b6000601f19601f8301169050919050565b60006113d582611373565b6113df818561137e565b93506113ef81856020860161138f565b6113f8816113b9565b840191505092915050565b6000602082019050818103600083015261141d81846113ca565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114558261142a565b9050919050565b6114658161144a565b811461147057600080fd5b50565b6000813590506114828161145c565b92915050565b6000819050919050565b61149b81611488565b81146114a657600080fd5b50565b6000813590506114b881611492565b92915050565b600080604083850312156114d5576114d4611425565b5b60006114e385828601611473565b92505060206114f4858286016114a9565b9150509250929050565b60008115159050919050565b611513816114fe565b82525050565b600060208201905061152e600083018461150a565b92915050565b61153d81611488565b82525050565b60006020820190506115586000830184611534565b92915050565b60008060006060848603121561157757611576611425565b5b600061158586828701611473565b935050602061159686828701611473565b92505060406115a7868287016114a9565b9150509250925092565b60006115bc8261142a565b9050919050565b6115cc816115b1565b82525050565b60006020820190506115e760008301846115c3565b92915050565b600060ff82169050919050565b611603816115ed565b82525050565b600060208201905061161e60008301846115fa565b92915050565b60006020828403121561163a57611639611425565b5b600061164884828501611473565b91505092915050565b61165a8161144a565b82525050565b60006020820190506116756000830184611651565b92915050565b611684816115b1565b811461168f57600080fd5b50565b6000813590506116a18161167b565b92915050565b6000602082840312156116bd576116bc611425565b5b60006116cb84828501611692565b91505092915050565b600080604083850312156116eb576116ea611425565b5b60006116f985828601611473565b925050602061170a85828601611473565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061175b57607f821691505b60208210810361176e5761176d611714565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117ae82611488565b91506117b983611488565b92508282019050808211156117d1576117d0611774565b5b92915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061180d60138361137e565b9150611818826117d7565b602082019050919050565b6000602082019050818103600083015261183c81611800565b9050919050565b60006040820190506118586000830185611651565b6118656020830184611651565b9392505050565b60008151905061187b8161145c565b92915050565b60006020828403121561189757611896611425565b5b60006118a58482850161186c565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061190a60258361137e565b9150611915826118ae565b604082019050919050565b60006020820190508181036000830152611939816118fd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061199c60268361137e565b91506119a782611940565b604082019050919050565b600060208201905081810360008301526119cb8161198f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a2e60248361137e565b9150611a39826119d2565b604082019050919050565b60006020820190508181036000830152611a5d81611a21565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ac060228361137e565b9150611acb82611a64565b604082019050919050565b60006020820190508181036000830152611aef81611ab3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611b2c601d8361137e565b9150611b3782611af6565b602082019050919050565b60006020820190508181036000830152611b5b81611b1f565b9050919050565b6000611b6d82611488565b9150611b7883611488565b9250828202611b8681611488565b91508282048414831517611b9d57611b9c611774565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bde82611488565b9150611be983611488565b925082611bf957611bf8611ba4565b5b828204905092915050565b6000611c0f82611488565b9150611c1a83611488565b9250828203905081811115611c3257611c31611774565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c6e60208361137e565b9150611c7982611c38565b602082019050919050565b60006020820190508181036000830152611c9d81611c61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611d0060258361137e565b9150611d0b82611ca4565b604082019050919050565b60006020820190508181036000830152611d2f81611cf3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d9260238361137e565b9150611d9d82611d36565b604082019050919050565b60006020820190508181036000830152611dc181611d85565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e2460268361137e565b9150611e2f82611dc8565b604082019050919050565b60006020820190508181036000830152611e5381611e17565b905091905056fea26469706673582212204371f31798b46a068bb19f7b5bef96301dd7fd3239a73ca80bc156ee6a5c384664736f6c63430008120033
Deployed ByteCode Sourcemap
36493:3062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15407:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17758:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16527:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18539:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37089:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38389:101;;;;;;;;;;;;;:::i;:::-;;16369:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19243:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37601:202;;;;;;;;;;;;;:::i;:::-;;16698:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28320:103;;;;;;;;;;;;;:::i;:::-;;36993:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27672:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15626:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19984:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37201:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17031:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38247:106;;;;;;;;;;;;;:::i;:::-;;38664:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36781:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38525:101;;;;;;;;;;;;;:::i;:::-;;17287:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38127:112;;;;;;;;;;;;;:::i;:::-;;28578:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15407:100;15461:13;15494:5;15487:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15407:100;:::o;17758:201::-;17841:4;17858:13;17874:12;:10;:12::i;:::-;17858:28;;17897:32;17906:5;17913:7;17922:6;17897:8;:32::i;:::-;17947:4;17940:11;;;17758:201;;;;:::o;16527:108::-;16588:7;16615:12;;16608:19;;16527:108;:::o;18539:295::-;18670:4;18687:15;18705:12;:10;:12::i;:::-;18687:30;;18728:38;18744:4;18750:7;18759:6;18728:15;:38::i;:::-;18777:27;18787:4;18793:2;18797:6;18777:9;:27::i;:::-;18822:4;18815:11;;;18539:295;;;;;:::o;37089:32::-;;;;;;;;;;;;;:::o;38389:101::-;27558:13;:11;:13::i;:::-;38454:1:::1;38444:7;:11;;;;38478:4;38466:9;;:16;;;;;;;;;;;;;;;;;;38389:101::o:0;16369:93::-;16427:5;16452:2;16445:9;;16369:93;:::o;19243:238::-;19331:4;19348:13;19364:12;:10;:12::i;:::-;19348:28;;19387:64;19396:5;19403:7;19440:10;19412:25;19422:5;19429:7;19412:9;:25::i;:::-;:38;;;;:::i;:::-;19387:8;:64::i;:::-;19469:4;19462:11;;;19243:238;;;;:::o;37601:202::-;27558:13;:11;:13::i;:::-;37665:11:::1;;;;;;;;;;;37664:12;37656:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;37718:7;:18;;;37745:4;37760;37718:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37711:4;;:55;;;;;;;;;;;;;;;;;;37791:4;37777:11;;:18;;;;;;;;;;;;;;;;;;37601:202::o:0;16698:127::-;16772:7;16799:9;:18;16809:7;16799:18;;;;;;;;;;;;;;;;16792:25;;16698:127;;;:::o;28320:103::-;27558:13;:11;:13::i;:::-;28385:30:::1;28412:1;28385:18;:30::i;:::-;28320:103::o:0;36993:22::-;;;;:::o;27672:87::-;27718:7;27745:6;;;;;;;;;;;27738:13;;27672:87;:::o;15626:104::-;15682:13;15715:7;15708:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15626:104;:::o;19984:436::-;20077:4;20094:13;20110:12;:10;:12::i;:::-;20094:28;;20133:24;20160:25;20170:5;20177:7;20160:9;:25::i;:::-;20133:52;;20224:15;20204:16;:35;;20196:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20317:60;20326:5;20333:7;20361:15;20342:16;:34;20317:8;:60::i;:::-;20408:4;20401:11;;;;19984:436;;;;:::o;37201:19::-;;;;;;;;;;;;;:::o;17031:193::-;17110:4;17127:13;17143:12;:10;:12::i;:::-;17127:28;;17166;17176:5;17183:2;17187:6;17166:9;:28::i;:::-;17212:4;17205:11;;;17031:193;;;;:::o;38247:106::-;27558:13;:11;:13::i;:::-;38302:43:::1;38311:7;:5;:7::i;:::-;38320:24;38338:4;38320:9;:24::i;:::-;38302:8;:43::i;:::-;;38247:106::o:0;38664:117::-;27558:13;:11;:13::i;:::-;38761:12:::1;38749:9;;:24;;;;;;;;;;;;;;;;;;38664:117:::0;:::o;36781:21::-;;;;;;;;;;;;;:::o;38525:101::-;27558:13;:11;:13::i;:::-;38589:1:::1;38579:7;:11;;;;38613:5;38601:9;;:17;;;;;;;;;;;;;;;;;;38525:101::o:0;17287:151::-;17376:7;17403:11;:18;17415:5;17403:18;;;;;;;;;;;;;;;:27;17422:7;17403:27;;;;;;;;;;;;;;;;17396:34;;17287:151;;;;:::o;38127:112::-;27558:13;:11;:13::i;:::-;38188:10:::1;38180:28;;:51;38209:21;38180:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;38127:112::o:0;28578:201::-;27558:13;:11;:13::i;:::-;28687:1:::1;28667:22;;:8;:22;;::::0;28659:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28743:28;28762:8;28743:18;:28::i;:::-;28578:201:::0;:::o;3391:98::-;3444:7;3471:10;3464:17;;3391:98;:::o;24011:380::-;24164:1;24147:19;;:5;:19;;;24139:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24245:1;24226:21;;:7;:21;;;24218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24329:6;24299:11;:18;24311:5;24299:18;;;;;;;;;;;;;;;:27;24318:7;24299:27;;;;;;;;;;;;;;;:36;;;;24367:7;24351:32;;24360:5;24351:32;;;24376:6;24351:32;;;;;;:::i;:::-;;;;;;;;24011:380;;;:::o;24682:453::-;24817:24;24844:25;24854:5;24861:7;24844:9;:25::i;:::-;24817:52;;24904:17;24884:16;:37;24880:248;;24966:6;24946:16;:26;;24938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25050:51;25059:5;25066:7;25094:6;25075:16;:25;25050:8;:51::i;:::-;24880:248;24806:329;24682:453;;;:::o;38930:407::-;39059:1;39041:20;;:6;:20;;;;:56;;;;;39086:10;39065:32;;:9;:32;;;39041:56;:69;;;;;39101:9;;;;;;;;;;;39041:69;39037:240;;;39127:17;39168:3;39157:7;;39148:6;:16;;;;:::i;:::-;39147:24;;;;:::i;:::-;39127:44;;39186:45;39202:6;39210:9;;;;;;;;;;;39221;39186:15;:45::i;:::-;39256:9;39246:19;;;;;:::i;:::-;;;39112:165;39037:240;39287:42;39303:6;39311:9;39322:6;39287:15;:42::i;:::-;38930:407;;;:::o;27837:132::-;27912:12;:10;:12::i;:::-;27901:23;;:7;:5;:7::i;:::-;:23;;;27893:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27837:132::o;28939:191::-;29013:16;29032:6;;;;;;;;;;;29013:25;;29058:8;29049:6;;:17;;;;;;;;;;;;;;;;;;29113:8;29082:40;;29103:8;29082:40;;;;;;;;;;;;29002:128;28939:191;:::o;20890:840::-;21037:1;21021:18;;:4;:18;;;21013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21114:1;21100:16;;:2;:16;;;21092:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21169:38;21190:4;21196:2;21200:6;21169:20;:38::i;:::-;21220:19;21242:9;:15;21252:4;21242:15;;;;;;;;;;;;;;;;21220:37;;21291:6;21276:11;:21;;21268:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21408:6;21394:11;:20;21376:9;:15;21386:4;21376:15;;;;;;;;;;;;;;;:38;;;;21611:6;21594:9;:13;21604:2;21594:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;21661:2;21646:26;;21655:4;21646:26;;;21665:6;21646:26;;;;;;:::i;:::-;;;;;;;;21685:37;21705:4;21711:2;21715:6;21685:19;:37::i;:::-;21002:728;20890:840;;;:::o;25735:125::-;;;;:::o;26464:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:104::-;4468:7;4497:24;4515:5;4497:24;:::i;:::-;4486:35;;4423:104;;;:::o;4533:142::-;4636:32;4662:5;4636:32;:::i;:::-;4631:3;4624:45;4533:142;;:::o;4681:254::-;4790:4;4828:2;4817:9;4813:18;4805:26;;4841:87;4925:1;4914:9;4910:17;4901:6;4841:87;:::i;:::-;4681:254;;;;:::o;4941:86::-;4976:7;5016:4;5009:5;5005:16;4994:27;;4941:86;;;:::o;5033:112::-;5116:22;5132:5;5116:22;:::i;:::-;5111:3;5104:35;5033:112;;:::o;5151:214::-;5240:4;5278:2;5267:9;5263:18;5255:26;;5291:67;5355:1;5344:9;5340:17;5331:6;5291:67;:::i;:::-;5151:214;;;;:::o;5371:329::-;5430:6;5479:2;5467:9;5458:7;5454:23;5450:32;5447:119;;;5485:79;;:::i;:::-;5447:119;5605:1;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5576:117;5371:329;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5706:118;;:::o;5830:222::-;5923:4;5961:2;5950:9;5946:18;5938:26;;5974:71;6042:1;6031:9;6027:17;6018:6;5974:71;:::i;:::-;5830:222;;;;:::o;6058:138::-;6139:32;6165:5;6139:32;:::i;:::-;6132:5;6129:43;6119:71;;6186:1;6183;6176:12;6119:71;6058:138;:::o;6202:155::-;6256:5;6294:6;6281:20;6272:29;;6310:41;6345:5;6310:41;:::i;:::-;6202:155;;;;:::o;6363:345::-;6430:6;6479:2;6467:9;6458:7;6454:23;6450:32;6447:119;;;6485:79;;:::i;:::-;6447:119;6605:1;6630:61;6683:7;6674:6;6663:9;6659:22;6630:61;:::i;:::-;6620:71;;6576:125;6363:345;;;;:::o;6714:474::-;6782:6;6790;6839:2;6827:9;6818:7;6814:23;6810:32;6807:119;;;6845:79;;:::i;:::-;6807:119;6965:1;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6936:117;7092:2;7118:53;7163:7;7154:6;7143:9;7139:22;7118:53;:::i;:::-;7108:63;;7063:118;6714:474;;;;;:::o;7194:180::-;7242:77;7239:1;7232:88;7339:4;7336:1;7329:15;7363:4;7360:1;7353:15;7380:320;7424:6;7461:1;7455:4;7451:12;7441:22;;7508:1;7502:4;7498:12;7529:18;7519:81;;7585:4;7577:6;7573:17;7563:27;;7519:81;7647:2;7639:6;7636:14;7616:18;7613:38;7610:84;;7666:18;;:::i;:::-;7610:84;7431:269;7380:320;;;:::o;7706:180::-;7754:77;7751:1;7744:88;7851:4;7848:1;7841:15;7875:4;7872:1;7865:15;7892:191;7932:3;7951:20;7969:1;7951:20;:::i;:::-;7946:25;;7985:20;8003:1;7985:20;:::i;:::-;7980:25;;8028:1;8025;8021:9;8014:16;;8049:3;8046:1;8043:10;8040:36;;;8056:18;;:::i;:::-;8040:36;7892:191;;;;:::o;8089:169::-;8229:21;8225:1;8217:6;8213:14;8206:45;8089:169;:::o;8264:366::-;8406:3;8427:67;8491:2;8486:3;8427:67;:::i;:::-;8420:74;;8503:93;8592:3;8503:93;:::i;:::-;8621:2;8616:3;8612:12;8605:19;;8264:366;;;:::o;8636:419::-;8802:4;8840:2;8829:9;8825:18;8817:26;;8889:9;8883:4;8879:20;8875:1;8864:9;8860:17;8853:47;8917:131;9043:4;8917:131;:::i;:::-;8909:139;;8636:419;;;:::o;9061:332::-;9182:4;9220:2;9209:9;9205:18;9197:26;;9233:71;9301:1;9290:9;9286:17;9277:6;9233:71;:::i;:::-;9314:72;9382:2;9371:9;9367:18;9358:6;9314:72;:::i;:::-;9061:332;;;;;:::o;9399:143::-;9456:5;9487:6;9481:13;9472:22;;9503:33;9530:5;9503:33;:::i;:::-;9399:143;;;;:::o;9548:351::-;9618:6;9667:2;9655:9;9646:7;9642:23;9638:32;9635:119;;;9673:79;;:::i;:::-;9635:119;9793:1;9818:64;9874:7;9865:6;9854:9;9850:22;9818:64;:::i;:::-;9808:74;;9764:128;9548:351;;;;:::o;9905:224::-;10045:34;10041:1;10033:6;10029:14;10022:58;10114:7;10109:2;10101:6;10097:15;10090:32;9905:224;:::o;10135:366::-;10277:3;10298:67;10362:2;10357:3;10298:67;:::i;:::-;10291:74;;10374:93;10463:3;10374:93;:::i;:::-;10492:2;10487:3;10483:12;10476:19;;10135:366;;;:::o;10507:419::-;10673:4;10711:2;10700:9;10696:18;10688:26;;10760:9;10754:4;10750:20;10746:1;10735:9;10731:17;10724:47;10788:131;10914:4;10788:131;:::i;:::-;10780:139;;10507:419;;;:::o;10932:225::-;11072:34;11068:1;11060:6;11056:14;11049:58;11141:8;11136:2;11128:6;11124:15;11117:33;10932:225;:::o;11163:366::-;11305:3;11326:67;11390:2;11385:3;11326:67;:::i;:::-;11319:74;;11402:93;11491:3;11402:93;:::i;:::-;11520:2;11515:3;11511:12;11504:19;;11163:366;;;:::o;11535:419::-;11701:4;11739:2;11728:9;11724:18;11716:26;;11788:9;11782:4;11778:20;11774:1;11763:9;11759:17;11752:47;11816:131;11942:4;11816:131;:::i;:::-;11808:139;;11535:419;;;:::o;11960:223::-;12100:34;12096:1;12088:6;12084:14;12077:58;12169:6;12164:2;12156:6;12152:15;12145:31;11960:223;:::o;12189:366::-;12331:3;12352:67;12416:2;12411:3;12352:67;:::i;:::-;12345:74;;12428:93;12517:3;12428:93;:::i;:::-;12546:2;12541:3;12537:12;12530:19;;12189:366;;;:::o;12561:419::-;12727:4;12765:2;12754:9;12750:18;12742:26;;12814:9;12808:4;12804:20;12800:1;12789:9;12785:17;12778:47;12842:131;12968:4;12842:131;:::i;:::-;12834:139;;12561:419;;;:::o;12986:221::-;13126:34;13122:1;13114:6;13110:14;13103:58;13195:4;13190:2;13182:6;13178:15;13171:29;12986:221;:::o;13213:366::-;13355:3;13376:67;13440:2;13435:3;13376:67;:::i;:::-;13369:74;;13452:93;13541:3;13452:93;:::i;:::-;13570:2;13565:3;13561:12;13554:19;;13213:366;;;:::o;13585:419::-;13751:4;13789:2;13778:9;13774:18;13766:26;;13838:9;13832:4;13828:20;13824:1;13813:9;13809:17;13802:47;13866:131;13992:4;13866:131;:::i;:::-;13858:139;;13585:419;;;:::o;14010:179::-;14150:31;14146:1;14138:6;14134:14;14127:55;14010:179;:::o;14195:366::-;14337:3;14358:67;14422:2;14417:3;14358:67;:::i;:::-;14351:74;;14434:93;14523:3;14434:93;:::i;:::-;14552:2;14547:3;14543:12;14536:19;;14195:366;;;:::o;14567:419::-;14733:4;14771:2;14760:9;14756:18;14748:26;;14820:9;14814:4;14810:20;14806:1;14795:9;14791:17;14784:47;14848:131;14974:4;14848:131;:::i;:::-;14840:139;;14567:419;;;:::o;14992:410::-;15032:7;15055:20;15073:1;15055:20;:::i;:::-;15050:25;;15089:20;15107:1;15089:20;:::i;:::-;15084:25;;15144:1;15141;15137:9;15166:30;15184:11;15166:30;:::i;:::-;15155:41;;15345:1;15336:7;15332:15;15329:1;15326:22;15306:1;15299:9;15279:83;15256:139;;15375:18;;:::i;:::-;15256:139;15040:362;14992:410;;;;:::o;15408:180::-;15456:77;15453:1;15446:88;15553:4;15550:1;15543:15;15577:4;15574:1;15567:15;15594:185;15634:1;15651:20;15669:1;15651:20;:::i;:::-;15646:25;;15685:20;15703:1;15685:20;:::i;:::-;15680:25;;15724:1;15714:35;;15729:18;;:::i;:::-;15714:35;15771:1;15768;15764:9;15759:14;;15594:185;;;;:::o;15785:194::-;15825:4;15845:20;15863:1;15845:20;:::i;:::-;15840:25;;15879:20;15897:1;15879:20;:::i;:::-;15874:25;;15923:1;15920;15916:9;15908:17;;15947:1;15941:4;15938:11;15935:37;;;15952:18;;:::i;:::-;15935:37;15785:194;;;;:::o;15985:182::-;16125:34;16121:1;16113:6;16109:14;16102:58;15985:182;:::o;16173:366::-;16315:3;16336:67;16400:2;16395:3;16336:67;:::i;:::-;16329:74;;16412:93;16501:3;16412:93;:::i;:::-;16530:2;16525:3;16521:12;16514:19;;16173:366;;;:::o;16545:419::-;16711:4;16749:2;16738:9;16734:18;16726:26;;16798:9;16792:4;16788:20;16784:1;16773:9;16769:17;16762:47;16826:131;16952:4;16826:131;:::i;:::-;16818:139;;16545:419;;;:::o;16970:224::-;17110:34;17106:1;17098:6;17094:14;17087:58;17179:7;17174:2;17166:6;17162:15;17155:32;16970:224;:::o;17200:366::-;17342:3;17363:67;17427:2;17422:3;17363:67;:::i;:::-;17356:74;;17439:93;17528:3;17439:93;:::i;:::-;17557:2;17552:3;17548:12;17541:19;;17200:366;;;:::o;17572:419::-;17738:4;17776:2;17765:9;17761:18;17753:26;;17825:9;17819:4;17815:20;17811:1;17800:9;17796:17;17789:47;17853:131;17979:4;17853:131;:::i;:::-;17845:139;;17572:419;;;:::o;17997:222::-;18137:34;18133:1;18125:6;18121:14;18114:58;18206:5;18201:2;18193:6;18189:15;18182:30;17997:222;:::o;18225:366::-;18367:3;18388:67;18452:2;18447:3;18388:67;:::i;:::-;18381:74;;18464:93;18553:3;18464:93;:::i;:::-;18582:2;18577:3;18573:12;18566:19;;18225:366;;;:::o;18597:419::-;18763:4;18801:2;18790:9;18786:18;18778:26;;18850:9;18844:4;18840:20;18836:1;18825:9;18821:17;18814:47;18878:131;19004:4;18878:131;:::i;:::-;18870:139;;18597:419;;;:::o;19022:225::-;19162:34;19158:1;19150:6;19146:14;19139:58;19231:8;19226:2;19218:6;19214:15;19207:33;19022:225;:::o;19253:366::-;19395:3;19416:67;19480:2;19475:3;19416:67;:::i;:::-;19409:74;;19492:93;19581:3;19492:93;:::i;:::-;19610:2;19605:3;19601:12;19594:19;;19253:366;;;:::o;19625:419::-;19791:4;19829:2;19818:9;19814:18;19806:26;;19878:9;19872:4;19868:20;19864:1;19853:9;19849:17;19842:47;19906:131;20032:4;19906:131;:::i;:::-;19898:139;;19625:419;;;:::o
Metadata Hash
4371f31798b46a068bb19f7b5bef96301dd7fd3239a73ca80bc156ee6a5c3846
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.