Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
NPairPool_V2in
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-11-17 */ /* ...... ............ ............:.... .................:..... ......................:..... ........ .................::..... ......... .....................::..... ........ .........................:::..... ........ ........ ...:..........:::..... ......... ........ ...::.........::::..... ........ ........ .... ...::..........:::..... ........ ........ ........ ...:::.........::::..... ........ ........ ... .... ...:::........:::::.... ........ ....... .... ..... ...::::........::::.... ....... ....... ... ..:... ...:::::......:::-:... ....... ...... ... ..::.. ...::::......:::-:... ....... ..... ... ..::. ..::-:......::--.... ....... ...... ... ..::. ...:::.......:-::... ....... ...... .. .::......::::.......:-:.... ........ ...... ... .::......:::.......::-:.... ...:..... ....... ... ..::......:-:.......:-::.... ...:.........:... .... .::......::::.......:-:.... ...:.........::.. ..:.. .::......:-::......:--:.... ...::.........:... ..:.. ..::......:-:.......:-::.... ...::.........:... ..::. .:::.....::::.......:-:.... ....:.........::.. ..::.. ..::......:-::......::-:.... ....:.........::... ...::::::......:-::......:--:.... ....::........::.......:--:.....::-:.......:-::... ...::........:::... ..:......:-::......::-:.... ...:::.......:::... ...:-::......:--:.... ...:::........:::... ...::-::......:-::.... ....:::.......::::...::-::......::-:.... ....:::.......::-::::-::......:--:.... ...:::.......::-:--::......:--:.... ....:::......::-::......::-::... ....:::...............:--::... ....:-:.............:--:.... ....:-::.........::--:.... ....:--::.....:::-::... ...::-:::::::--::... ...::--::::--::... ....:--:---:... ...::--::... ....:..... .... +%# -%# %%%%%# *%%%#= *%* +%+ +%%= -%# %%+... +%#.-%%. *%%- +%+ +%%# -%# %%= +%# :%%: *%%# +%+ +%#%=-%# %%*-- +%# :%%: *%#%-+%+ +%++%+%# %%### +%# :%%: *%=*#+%+ +%+.%%%# %%= +%# :%%: *%=:%%%+ +%+ +%%# %%= +%# :%%: *%= *%%+ +%+ #%# %%*=== -%%=+%# *%= .%%+ -+= -++ ++++++ -+**+. ++- =+= */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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 {} } // File: NPairPool-V2in.sol pragma solidity 0.8.16; interface INPairPool_in { function numberListedPairs() external view returns (uint256); function pairListed(uint256 _id) external view returns(address srcToken, uint256 srcDecimals, address destToken, uint256 destDecimals); } interface INPairPool_V2in { function numberListedPairs() external view returns (uint256); function pairListed(uint256 _id) external view returns(address srcToken, address destToken, uint typeAMM); } contract NPairPool_V2in is Ownable { struct pairStruct{ address srcToken; uint256 srcDecimals; address destToken; uint256 destDecimals; uint typeAMM; bool active; } mapping (uint256 => pairStruct) private pairs; mapping (bytes32 => bool) private listedId; uint256 private totalPairs; event NewPairListed(uint256 indexed _id, address _srcToken, address _destToken, uint256 _timestamp); event PairLocked(uint256 indexed _id, uint256 _timestamp); event PairUnlocked(uint256 indexed _id, uint256 _timestamp); event PairModified(uint256 indexed _id, uint256 _timestamp); /* WRITE METHODS*/ /* * @dev List new pair ot token * () will be defined the unit of measure * @param _srcToken token to be invested * @param _destToken token to be recived * @param _typeAMM type of AMM (0 = 1Inch, 1 = Paraswap) * @return bool successfully completed */ function listNewPair(address _srcToken, address _destToken, uint _typeAMM) public onlyOwner returns(bool) { require(_srcToken != address(0) && _destToken != address(0), "NEON: null address not allowed"); require(_srcToken != _destToken, "NEON: Source & Destination token must be different"); bytes32 uniqueId = _getId(_srcToken, _destToken); require(!listedId[uniqueId], "NEON: Token pair already listed"); pairs[totalPairs + 1].srcToken = _srcToken; pairs[totalPairs + 1].destToken = _destToken; pairs[totalPairs + 1].srcDecimals = ERC20(_srcToken).decimals(); pairs[totalPairs + 1].destDecimals = ERC20(_destToken).decimals(); pairs[totalPairs + 1].typeAMM = _typeAMM; pairs[totalPairs + 1].active = true; listedId[uniqueId] = true; totalPairs += 1; emit NewPairListed(totalPairs, _srcToken, _destToken, block.timestamp); return true; } /* * @dev Modify pair * () will be defined the unit of measure * @param _id of the pair to be locked * @param _srcToken parameter to be modified, if 0 will be ignored * @param _destToken parameter to be modified, if 0 will be ignored * @param _typeAMM type of AMM (0 = 1Inch, 1 = Paraswap), if 0 will be ignored */ function modifyPair( uint256 _id, address _srcToken, address _destToken, uint _typeAMM ) external onlyOwner { require(_id > 0, "NEON: ID must be > 0"); require(_id <= totalPairs, "NEON: ID out of range"); pairStruct storage pair = pairs[_id]; if(_srcToken != address(0)){ pair.srcToken = _srcToken; pair.srcDecimals = ERC20(_srcToken).decimals(); } if(_destToken != address(0)){ pair.destToken = _destToken; pair.destDecimals = ERC20(_destToken).decimals(); } pair.typeAMM = _typeAMM != 0 ? _typeAMM : pair.typeAMM; emit PairModified(_id, block.timestamp); } /* * @dev Blacklist a pair * () will be defined the unit of measure * @param _id of the pair to be locked */ function lockPair(uint256 _id) external onlyOwner { require(_id > 0, "NEON: ID must be > 0"); require(_id <= totalPairs, "NEON: ID out of range"); pairStruct storage pair = pairs[_id]; require(pair.active, "NEON: Pair already locked"); pair.active = false; emit PairLocked(_id, block.timestamp); } /* * @dev Unlock a pair * () will be defined the unit of measure * @param _id of the pair to be unlocked */ function unlockPair(uint256 _id) external onlyOwner { require(_id > 0, "NEON: ID must be > 0"); require(_id <= totalPairs, "NEON: ID out of range"); pairStruct storage pair = pairs[_id]; require(!pair.active, "NEON: Pair already unlocked"); pair.active = true; emit PairUnlocked(_id, block.timestamp); } /* * @dev download pair list from another NEON pool V1 * () will be defined the unit of measure * @param _contract address of the old pool where pair list will be downloaded */ function downloadPairList(address _contract) external onlyOwner { uint256 poolTotalPairs = INPairPool_in(_contract).numberListedPairs(); for(uint256 i=1; i<=poolTotalPairs; i++){ (address srcToken, , address destToken, ) = INPairPool_in(_contract).pairListed(i); listNewPair(srcToken, destToken, 1); } } /* * @dev download pair list from another NEON pool V2 * () will be defined the unit of measure * @param _contract address of the old pool where pair list will be downloaded */ function downloadPairListV2(address _contract) external onlyOwner { uint256 poolTotalPairs = INPairPool_V2in(_contract).numberListedPairs(); for(uint256 i=1; i<=poolTotalPairs; i++){ (address srcToken, address destToken, uint typeAMM) = INPairPool_V2in(_contract).pairListed(i); listNewPair(srcToken, destToken, typeAMM); } } /* INTERNAL */ function _getId(address _srcToken, address _destToken) private pure returns (bytes32){ return keccak256(abi.encodePacked(_srcToken, _destToken)); } /* VIEW METHODS */ /* * @view Total Pairs listed * () will be defined the unit of measure * @return uint256 total listed pairs */ function numberListedPairs() external view returns(uint256) { return totalPairs; } /* * @view pair listed address * () will be defined the unit of measure * @param _id of the pair * @return srcToken address source token * @return srcDecimals token decimals * @return destToken address destination token * @return destDecimals token decimals * @return typeAMM type of AMM (1 = Paraswap, 2 = 1Inch) */ function pairListed(uint256 _id) external view returns(address srcToken, uint256 srcDecimals, address destToken, uint256 destDecimals, uint typeAMM) { require(_id > 0, "NEON: ID must be > 0"); require(_id <= totalPairs, "NEON: ID out of range"); if(pairs[_id].active){ srcToken = pairs[_id].srcToken; destToken = pairs[_id].destToken; srcDecimals = pairs[_id].srcDecimals; destDecimals = pairs[_id].destDecimals; typeAMM = pairs[_id].typeAMM; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"_srcToken","type":"address"},{"indexed":false,"internalType":"address","name":"_destToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"NewPairListed","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":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"PairLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"PairModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"PairUnlocked","type":"event"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"downloadPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"downloadPairListV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_srcToken","type":"address"},{"internalType":"address","name":"_destToken","type":"address"},{"internalType":"uint256","name":"_typeAMM","type":"uint256"}],"name":"listNewPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"lockPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_srcToken","type":"address"},{"internalType":"address","name":"_destToken","type":"address"},{"internalType":"uint256","name":"_typeAMM","type":"uint256"}],"name":"modifyPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"numberListedPairs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"pairListed","outputs":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"uint256","name":"srcDecimals","type":"uint256"},{"internalType":"address","name":"destToken","type":"address"},{"internalType":"uint256","name":"destDecimals","type":"uint256"},{"internalType":"uint256","name":"typeAMM","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unlockPair","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6115bf8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b11610081578063c7d204ab1161005b578063c7d204ab146101cd578063f2fde38b146101de578063fba1bb32146101f157600080fd5b80638da5cb5b146101395780639001165114610161578063c36830381461017457600080fd5b80634defc71e116100b25780634defc71e146100f6578063617c937514610109578063715018a61461013157600080fd5b80634064aa4f146100ce57806344c26621146100e3575b600080fd5b6100e16100dc36600461135f565b610204565b005b6100e16100f136600461135f565b6103d1565b6100e161010436600461139a565b610587565b61011c6101173660046113e2565b610887565b60405190151581526020015b60405180910390f35b6100e1610d81565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610128565b6100e161016f366004611423565b610d95565b61018761018236600461135f565b610edb565b6040805173ffffffffffffffffffffffffffffffffffffffff9687168152602081019590955292909416918301919091526060820152608081019190915260a001610128565b600354604051908152602001610128565b6100e16101ec366004611423565b611026565b6100e16101ff366004611423565b6110dd565b61020c61120b565b6000811161027b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e454f4e3a204944206d757374206265203e203000000000000000000000000060448201526064015b60405180910390fd5b6003548111156102e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e454f4e3a204944206f7574206f662072616e676500000000000000000000006044820152606401610272565b6000818152600160205260409020600581015460ff1615610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e454f4e3a205061697220616c726561647920756e6c6f636b656400000000006044820152606401610272565b6005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560405182907f80f4431c6494c54c3b27f748e05406e149e473ac8093c157305f415aba867135906103c59042815260200190565b60405180910390a25050565b6103d961120b565b60008111610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e454f4e3a204944206d757374206265203e20300000000000000000000000006044820152606401610272565b6003548111156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e454f4e3a204944206f7574206f662072616e676500000000000000000000006044820152606401610272565b6000818152600160205260409020600581015460ff1661052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4e454f4e3a205061697220616c7265616479206c6f636b6564000000000000006044820152606401610272565b6005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560405142815282907fe2cc4d9ecd0d1489df2c814a557ab4516756619d7ddb0b8a26ee3a0a441a9755906020016103c5565b61058f61120b565b600084116105f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e454f4e3a204944206d757374206265203e20300000000000000000000000006044820152606401610272565b600354841115610665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e454f4e3a204944206f7574206f662072616e676500000000000000000000006044820152606401610272565b600084815260016020526040902073ffffffffffffffffffffffffffffffffffffffff8416156107505780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081178255604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa158015610723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107479190611447565b60ff1660018201555b73ffffffffffffffffffffffffffffffffffffffff831615610832576002810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516908117909155604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190611447565b60ff1660038201555b81600003610844578060040154610846565b815b600482015560405142815285907fcb5bdec4e41e0e532a6581224ba09f79e45ed7c1a76f88630b6738f2020d68f39060200160405180910390a25050505050565b600061089161120b565b73ffffffffffffffffffffffffffffffffffffffff8416158015906108cb575073ffffffffffffffffffffffffffffffffffffffff831615155b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4e454f4e3a206e756c6c2061646472657373206e6f7420616c6c6f77656400006044820152606401610272565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4e454f4e3a20536f7572636520262044657374696e6174696f6e20746f6b656e60448201527f206d75737420626520646966666572656e7400000000000000000000000000006064820152608401610272565b60006109f8858561128c565b60008181526002602052604090205490915060ff1615610a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4e454f4e3a20546f6b656e207061697220616c7265616479206c6973746564006044820152606401610272565b84600160006003546001610a889190611499565b815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006003546001610aeb9190611499565b815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba99190611447565b60ff16600160006003546001610bbf9190611499565b8152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c439190611447565b60ff16600160006003546001610c599190611499565b81526020019081526020016000206003018190555082600160006003546001610c829190611499565b81526020019081526020016000206004018190555060018060006003546001610cab9190611499565b81526020808201929092526040908101600090812060050180549415157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00958616179055848152600290925281208054909216600190811790925560038054909190610d18908490611499565b90915550506003546040805173ffffffffffffffffffffffffffffffffffffffff888116825287166020820152428183015290517f72dc47c904d94dbb941418966db1ddb5049dadb1d24c4faf139acb51a4e1c27c9181900360600190a2506001949350505050565b610d8961120b565b610d9360006112ea565b565b610d9d61120b565b60008173ffffffffffffffffffffffffffffffffffffffff1663c7d204ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e91906114ac565b905060015b818111610ed6576040517fc368303800000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff86169063c368303890602401608060405180830381865afa158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae91906114c5565b509250509150610ec082826001610887565b5050508080610ece9061150e565b915050610e13565b505050565b6000806000806000808611610f4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e454f4e3a204944206d757374206265203e20300000000000000000000000006044820152606401610272565b600354861115610fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e454f4e3a204944206f7574206f662072616e676500000000000000000000006044820152606401610272565b60008681526001602052604090206005015460ff161561101d5750505060008381526001602081905260409091208054600282015492820154600383015460049093015473ffffffffffffffffffffffffffffffffffffffff92831696509094509216915b91939590929450565b61102e61120b565b73ffffffffffffffffffffffffffffffffffffffff81166110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610272565b6110da816112ea565b50565b6110e561120b565b60008173ffffffffffffffffffffffffffffffffffffffff1663c7d204ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611132573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115691906114ac565b905060015b818111610ed65760008060008573ffffffffffffffffffffffffffffffffffffffff1663c3683038856040518263ffffffff1660e01b81526004016111a291815260200190565b606060405180830381865afa1580156111bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e39190611546565b9250925092506111f4838383610887565b5050505080806112039061150e565b91505061115b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610272565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b1660348201526000906048016040516020818303038152906040528051906020012090505b92915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561137157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110da57600080fd5b600080600080608085870312156113b057600080fd5b8435935060208501356113c281611378565b925060408501356113d281611378565b9396929550929360600135925050565b6000806000606084860312156113f757600080fd5b833561140281611378565b9250602084013561141281611378565b929592945050506040919091013590565b60006020828403121561143557600080fd5b813561144081611378565b9392505050565b60006020828403121561145957600080fd5b815160ff8116811461144057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156112e4576112e461146a565b6000602082840312156114be57600080fd5b5051919050565b600080600080608085870312156114db57600080fd5b84516114e681611378565b6020860151604087015191955093506114fe81611378565b6060959095015193969295505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361153f5761153f61146a565b5060010190565b60008060006060848603121561155b57600080fd5b835161156681611378565b602085015190935061157781611378565b8092505060408401519050925092509256fea26469706673582212207a209d69b368c7224570bb6969cac54c9ed73b605004c383cbb713ff4144181564736f6c63430008100033
Deployed ByteCode Sourcemap
26231:6635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29956:368;;;;;;:::i;:::-;;:::i;:::-;;29455:362;;;;;;:::i;:::-;;:::i;28560:755::-;;;;;;:::i;:::-;;:::i;27230:969::-;;;;;;:::i;:::-;;:::i;:::-;;;1514:14:1;;1507:22;1489:41;;1477:2;1462:18;27230:969:0;;;;;;;;7951:103;;;:::i;7303:87::-;7349:7;7376:6;7303:87;;7376:6;;;;1687:74:1;;1675:2;1660:18;7303:87:0;1541:226:1;30532:361:0;;;;;;:::i;:::-;;:::i;32306:557::-;;;;;;:::i;:::-;;:::i;:::-;;;;2293:42:1;2362:15;;;2344:34;;2409:2;2394:18;;2387:34;;;;2457:15;;;;2437:18;;;2430:43;;;;2504:2;2489:18;;2482:34;2547:3;2532:19;;2525:35;;;;2270:3;2255:19;32306:557:0;2024:542:1;31837:96:0;31915:10;;31837:96;;2717:25:1;;;2705:2;2690:18;31837:96:0;2571:177:1;8209:201:0;;;;;;:::i;:::-;;:::i;31101:383::-;;;;;;:::i;:::-;;:::i;29956:368::-;7189:13;:11;:13::i;:::-;30033:1:::1;30027:3;:7;30019:40;;;::::0;::::1;::::0;;2955:2:1;30019:40:0::1;::::0;::::1;2937:21:1::0;2994:2;2974:18;;;2967:30;3033:22;3013:18;;;3006:50;3073:18;;30019:40:0::1;;;;;;;;;30085:10;;30078:3;:17;;30070:51;;;::::0;::::1;::::0;;3304:2:1;30070:51:0::1;::::0;::::1;3286:21:1::0;3343:2;3323:18;;;3316:30;3382:23;3362:18;;;3355:51;3423:18;;30070:51:0::1;3102:345:1::0;30070:51:0::1;30134:23;30160:10:::0;;;:5:::1;:10;::::0;;;;30192:11:::1;::::0;::::1;::::0;::::1;;30191:12;30183:52;;;::::0;::::1;::::0;;3654:2:1;30183:52:0::1;::::0;::::1;3636:21:1::0;3693:2;3673:18;;;3666:30;3732:29;3712:18;;;3705:57;3779:18;;30183:52:0::1;3452:351:1::0;30183:52:0::1;30248:11;::::0;::::1;:18:::0;;;::::1;30262:4;30248:18;::::0;;30282:34:::1;::::0;30295:3;;30282:34:::1;::::0;::::1;::::0;30300:15:::1;2717:25:1::0;;2705:2;2690:18;;2571:177;30282:34:0::1;;;;;;;;30008:316;29956:368:::0;:::o;29455:362::-;7189:13;:11;:13::i;:::-;29530:1:::1;29524:3;:7;29516:40;;;::::0;::::1;::::0;;2955:2:1;29516:40:0::1;::::0;::::1;2937:21:1::0;2994:2;2974:18;;;2967:30;3033:22;3013:18;;;3006:50;3073:18;;29516:40:0::1;2753:344:1::0;29516:40:0::1;29582:10;;29575:3;:17;;29567:51;;;::::0;::::1;::::0;;3304:2:1;29567:51:0::1;::::0;::::1;3286:21:1::0;3343:2;3323:18;;;3316:30;3382:23;3362:18;;;3355:51;3423:18;;29567:51:0::1;3102:345:1::0;29567:51:0::1;29631:23;29657:10:::0;;;:5:::1;:10;::::0;;;;29688:11:::1;::::0;::::1;::::0;::::1;;29680:49;;;::::0;::::1;::::0;;4010:2:1;29680:49:0::1;::::0;::::1;3992:21:1::0;4049:2;4029:18;;;4022:30;4088:27;4068:18;;;4061:55;4133:18;;29680:49:0::1;3808:349:1::0;29680:49:0::1;29742:11;::::0;::::1;:19:::0;;;::::1;::::0;;29777:32:::1;::::0;29793:15:::1;2717:25:1::0;;29788:3:0;;29777:32:::1;::::0;2705:2:1;2690:18;29777:32:0::1;2571:177:1::0;28560:755:0;7189:13;:11;:13::i;:::-;28740:1:::1;28734:3;:7;28726:40;;;::::0;::::1;::::0;;2955:2:1;28726:40:0::1;::::0;::::1;2937:21:1::0;2994:2;2974:18;;;2967:30;3033:22;3013:18;;;3006:50;3073:18;;28726:40:0::1;2753:344:1::0;28726:40:0::1;28792:10;;28785:3;:17;;28777:51;;;::::0;::::1;::::0;;3304:2:1;28777:51:0::1;::::0;::::1;3286:21:1::0;3343:2;3323:18;;;3316:30;3382:23;3362:18;;;3355:51;3423:18;;28777:51:0::1;3102:345:1::0;28777:51:0::1;28839:23;28865:10:::0;;;:5:::1;:10;::::0;;;;28889:23:::1;::::0;::::1;::::0;28886:140:::1;;28928:25:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;28987:27:::1;::::0;;;;;;;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;28928:25;28987:27:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28968:46;;:16;::::0;::::1;:46:::0;28886:140:::1;29039:24;::::0;::::1;::::0;29036:157:::1;;29079:14;::::0;::::1;:27:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;29141:28:::1;::::0;;;;;;;:26:::1;::::0;:28:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;29079:27;29141:28:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29121:48;;:17;::::0;::::1;:48:::0;29036:157:::1;29218:8;29230:1;29218:13:::0;:39:::1;;29245:4;:12;;;29218:39;;;29234:8;29218:39;29203:12;::::0;::::1;:54:::0;29273:34:::1;::::0;29291:15:::1;2717:25:1::0;;29286:3:0;;29273:34:::1;::::0;2705:2:1;2690:18;29273:34:0::1;;;;;;;28713:602;28560:755:::0;;;;:::o;27230:969::-;27330:4;7189:13;:11;:13::i;:::-;27355:23:::1;::::0;::::1;::::0;;::::1;::::0;:51:::1;;-1:-1:-1::0;27382:24:0::1;::::0;::::1;::::0;::::1;27355:51;27347:94;;;::::0;::::1;::::0;;4642:2:1;27347:94:0::1;::::0;::::1;4624:21:1::0;4681:2;4661:18;;;4654:30;4720:32;4700:18;;;4693:60;4770:18;;27347:94:0::1;4440:354:1::0;27347:94:0::1;27473:10;27460:23;;:9;:23;;::::0;27452:86:::1;;;::::0;::::1;::::0;;5001:2:1;27452:86:0::1;::::0;::::1;4983:21:1::0;5040:2;5020:18;;;5013:30;5079:34;5059:18;;;5052:62;5150:20;5130:18;;;5123:48;5188:19;;27452:86:0::1;4799:414:1::0;27452:86:0::1;27549:16;27568:29;27575:9;27586:10;27568:6;:29::i;:::-;27617:18;::::0;;;:8:::1;:18;::::0;;;;;27549:48;;-1:-1:-1;27617:18:0::1;;27616:19;27608:63;;;::::0;::::1;::::0;;5420:2:1;27608:63:0::1;::::0;::::1;5402:21:1::0;5459:2;5439:18;;;5432:30;5498:33;5478:18;;;5471:61;5549:18;;27608:63:0::1;5218:355:1::0;27608:63:0::1;27715:9;27682:5;:21;27688:10;;27701:1;27688:14;;;;:::i;:::-;27682:21;;;;;;;;;;;:30;;;:42;;;;;;;;;;;;;;;;;;27769:10;27735:5;:21;27741:10;;27754:1;27741:14;;;;:::i;:::-;27735:21;;;;;;;;;;;:31;;;:44;;;;;;;;;;;;;;;;;;27832:9;27826:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27790:63;;:5;:21;27796:10;;27809:1;27796:14;;;;:::i;:::-;27790:21;;;;;;;;;;;:33;;:63;;;;27907:10;27901:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27864:65;;:5;:21;27870:10;;27883:1;27870:14;;;;:::i;:::-;27864:21;;;;;;;;;;;:34;;:65;;;;27972:8;27940:5;:21;27946:10;;27959:1;27946:14;;;;:::i;:::-;27940:21;;;;;;;;;;;:29;;:40;;;;28022:4;27991:5:::0;:21:::1;27997:10;;28010:1;27997:14;;;;:::i;:::-;27991:21:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;27991:21:0;;;:28:::1;;:35:::0;;;::::1;;::::0;;;::::1;;::::0;;28037:18;;;:8:::1;:18:::0;;;;;:25;;;;::::1;27991:35:::0;28037:25;;::::1;::::0;;;28073:10:::1;:15:::0;;:10;;-1:-1:-1;28073:15:0::1;::::0;27991:35;;28073:15:::1;:::i;:::-;::::0;;;-1:-1:-1;;28118:10:0::1;::::0;28104:65:::1;::::0;;6109:42:1;6178:15;;;6160:34;;6230:15;;6225:2;6210:18;;6203:43;28153:15:0::1;6262:18:1::0;;;6255:34;28104:65:0;;::::1;::::0;;;;6087:2:1;28104:65:0;;::::1;-1:-1:-1::0;28187:4:0::1;::::0;27230:969;-1:-1:-1;;;;27230:969:0:o;7951:103::-;7189:13;:11;:13::i;:::-;8016:30:::1;8043:1;8016:18;:30::i;:::-;7951:103::o:0;30532:361::-;7189:13;:11;:13::i;:::-;30607:22:::1;30646:9;30632:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30607:69:::0;-1:-1:-1;30701:1:0::1;30687:199;30707:14;30704:1;:17;30687:199;;30786:38;::::0;;;;::::1;::::0;::::1;2717:25:1::0;;;30743:16:0::1;::::0;;;30786:35:::1;::::0;::::1;::::0;::::1;::::0;2690:18:1;;30786:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30742:82;;;;;;30839:35;30851:8;30861:9;30872:1;30839:11;:35::i;:::-;;30727:159;;30723:3;;;;;:::i;:::-;;;;30687:199;;;;30596:297;30532:361:::0;:::o;32306:557::-;32361:16;32379:19;32400:17;32419:20;32441:12;32480:1;32474:3;:7;32466:40;;;;;;;2955:2:1;32466:40:0;;;2937:21:1;2994:2;2974:18;;;2967:30;3033:22;3013:18;;;3006:50;3073:18;;32466:40:0;2753:344:1;32466:40:0;32532:10;;32525:3;:17;;32517:51;;;;;;;3304:2:1;32517:51:0;;;3286:21:1;3343:2;3323:18;;;3316:30;3382:23;3362:18;;;3355:51;3423:18;;32517:51:0;3102:345:1;32517:51:0;32582:10;;;;:5;:10;;;;;:17;;;;;32579:277;;;-1:-1:-1;;;32627:10:0;;;;:5;:10;;;;;;;;:19;;32674:20;;;;32724:22;;;;32777:23;;;;32826:18;;;;;32627:19;;;;;-1:-1:-1;32724:22:0;;-1:-1:-1;32674:20:0;;;32579:277;32306:557;;;;;;;:::o;8209:201::-;7189:13;:11;:13::i;:::-;8298:22:::1;::::0;::::1;8290:73;;;::::0;::::1;::::0;;7404:2:1;8290:73:0::1;::::0;::::1;7386:21:1::0;7443:2;7423:18;;;7416:30;7482:34;7462:18;;;7455:62;7553:8;7533:18;;;7526:36;7579:19;;8290:73:0::1;7202:402:1::0;8290:73:0::1;8374:28;8393:8;8374:18;:28::i;:::-;8209:201:::0;:::o;31101:383::-;7189:13;:11;:13::i;:::-;31178:22:::1;31219:9;31203:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31178:71:::0;-1:-1:-1;31274:1:0::1;31260:217;31280:14;31277:1;:17;31260:217;;31316:16;31334:17:::0;31353:12:::1;31385:9;31369:37;;;31407:1;31369:40;;;;;;;;;;;;;2717:25:1::0;;2705:2;2690:18;;2571:177;31369:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31315:94;;;;;;31424:41;31436:8;31446:9;31457:7;31424:11;:41::i;:::-;;31300:177;;;31296:3;;;;;:::i;:::-;;;;31260:217;;7468:132:::0;7349:7;7376:6;7532:23;7376:6;5934:10;7532:23;7524:68;;;;;;;8262:2:1;7524:68:0;;;8244:21:1;;;8281:18;;;8274:30;8340:34;8320:18;;;8313:62;8392:18;;7524:68:0;8060:356:1;31510:161:0;31623:39;;8588:66:1;8683:2;8679:15;;;8675:24;;31623:39:0;;;8663:37:1;8734:15;;;8730:24;8716:12;;;8709:46;31587:7:0;;8771:12:1;;31623:39:0;;;;;;;;;;;;31613:50;;;;;;31606:57;;31510:161;;;;;:::o;8570:191::-;8644:16;8663:6;;;8680:17;;;;;;;;;;8713:40;;8663:6;;;;;;;8713:40;;8644:16;8713:40;8633:128;8570:191;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:154::-;285:42;278:5;274:54;267:5;264:65;254:93;;343:1;340;333:12;358:525;444:6;452;460;468;521:3;509:9;500:7;496:23;492:33;489:53;;;538:1;535;528:12;489:53;574:9;561:23;551:33;;634:2;623:9;619:18;606:32;647:31;672:5;647:31;:::i;:::-;697:5;-1:-1:-1;754:2:1;739:18;;726:32;767:33;726:32;767:33;:::i;:::-;358:525;;;;-1:-1:-1;819:7:1;;873:2;858:18;845:32;;-1:-1:-1;;358:525:1:o;888:456::-;965:6;973;981;1034:2;1022:9;1013:7;1009:23;1005:32;1002:52;;;1050:1;1047;1040:12;1002:52;1089:9;1076:23;1108:31;1133:5;1108:31;:::i;:::-;1158:5;-1:-1:-1;1215:2:1;1200:18;;1187:32;1228:33;1187:32;1228:33;:::i;:::-;888:456;;1280:7;;-1:-1:-1;;;1334:2:1;1319:18;;;;1306:32;;888:456::o;1772:247::-;1831:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1939:9;1926:23;1958:31;1983:5;1958:31;:::i;:::-;2008:5;1772:247;-1:-1:-1;;;1772:247:1:o;4162:273::-;4230:6;4283:2;4271:9;4262:7;4258:23;4254:32;4251:52;;;4299:1;4296;4289:12;4251:52;4331:9;4325:16;4381:4;4374:5;4370:16;4363:5;4360:27;4350:55;;4401:1;4398;4391:12;5578:184;5630:77;5627:1;5620:88;5727:4;5724:1;5717:15;5751:4;5748:1;5741:15;5767:125;5832:9;;;5853:10;;;5850:36;;;5866:18;;:::i;6300:184::-;6370:6;6423:2;6411:9;6402:7;6398:23;6394:32;6391:52;;;6439:1;6436;6429:12;6391:52;-1:-1:-1;6462:16:1;;6300:184;-1:-1:-1;6300:184:1:o;6489:508::-;6586:6;6594;6602;6610;6663:3;6651:9;6642:7;6638:23;6634:33;6631:53;;;6680:1;6677;6670:12;6631:53;6712:9;6706:16;6731:31;6756:5;6731:31;:::i;:::-;6826:2;6811:18;;6805:25;6875:2;6860:18;;6854:25;6781:5;;-1:-1:-1;6805:25:1;-1:-1:-1;6888:33:1;6854:25;6888:33;:::i;:::-;6987:2;6972:18;;;;6966:25;6489:508;;;;-1:-1:-1;;;6489:508:1:o;7002:195::-;7041:3;7072:66;7065:5;7062:77;7059:103;;7142:18;;:::i;:::-;-1:-1:-1;7189:1:1;7178:13;;7002:195::o;7609:446::-;7697:6;7705;7713;7766:2;7754:9;7745:7;7741:23;7737:32;7734:52;;;7782:1;7779;7772:12;7734:52;7814:9;7808:16;7833:31;7858:5;7833:31;:::i;:::-;7933:2;7918:18;;7912:25;7883:5;;-1:-1:-1;7946:33:1;7912:25;7946:33;:::i;:::-;7998:7;7988:17;;;8045:2;8034:9;8030:18;8024:25;8014:35;;7609:446;;;;;:::o
Swarm Source
ipfs://7a209d69b368c7224570bb6969cac54c9ed73b605004c383cbb713ff41441815
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.