More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 140 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20881713 | 29 days ago | IN | 0 ETH | 0.00026951 | ||||
Approve | 20705876 | 54 days ago | IN | 0 ETH | 0.00008322 | ||||
Approve | 19667954 | 199 days ago | IN | 0 ETH | 0.00056696 | ||||
Approve | 19650979 | 201 days ago | IN | 0 ETH | 0.00060927 | ||||
Approve | 19306252 | 249 days ago | IN | 0 ETH | 0.00172447 | ||||
Approve | 18771337 | 324 days ago | IN | 0 ETH | 0.00122238 | ||||
Approve | 18759310 | 326 days ago | IN | 0 ETH | 0.00092902 | ||||
Approve | 18752226 | 327 days ago | IN | 0 ETH | 0.00120504 | ||||
Transfer | 18688948 | 336 days ago | IN | 0 ETH | 0.00094384 | ||||
Transfer | 18688948 | 336 days ago | IN | 0 ETH | 0.00094478 | ||||
Transfer | 18688948 | 336 days ago | IN | 0 ETH | 0.00094478 | ||||
Transfer | 18688948 | 336 days ago | IN | 0 ETH | 0.00094478 | ||||
Approve | 18687808 | 336 days ago | IN | 0 ETH | 0.00092808 | ||||
Approve | 18687808 | 336 days ago | IN | 0 ETH | 0.00092808 | ||||
Approve | 18683897 | 337 days ago | IN | 0 ETH | 0.001247 | ||||
Approve | 18635319 | 344 days ago | IN | 0 ETH | 0.00149499 | ||||
Approve | 18635312 | 344 days ago | IN | 0 ETH | 0.00143501 | ||||
Approve | 18635310 | 344 days ago | IN | 0 ETH | 0.00140569 | ||||
Approve | 18635307 | 344 days ago | IN | 0 ETH | 0.0024976 | ||||
Approve | 18616091 | 346 days ago | IN | 0 ETH | 0.00149024 | ||||
Approve | 18610631 | 347 days ago | IN | 0 ETH | 0.0009851 | ||||
Approve | 18609704 | 347 days ago | IN | 0 ETH | 0.00097637 | ||||
Approve | 18601704 | 348 days ago | IN | 0 ETH | 0.00079959 | ||||
Approve | 18592363 | 350 days ago | IN | 0 ETH | 0.00189857 | ||||
Approve | 18582391 | 351 days ago | IN | 0 ETH | 0.00108283 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CustomToken
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-29 */ // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ 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 v5.0.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @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}. * * 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]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * 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. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 default value returned by this function, unless * it's 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 returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual 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 `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` 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 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); 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 `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` 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. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` 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. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * ``` * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: yooooooooo.sol pragma solidity ^0.8.20; /* telegram: https://t.me/y0o0oo0o0o site: https://yoooooooo.com/ x: https://x.com/cobratate ..::.. .:^~~!!~~~!!!!~~:...:~!!^ .~!7!~~!!!7~~!!!!~^:::^!7777?JYP57??^::?J~~~~^ .~7!~: .:~7J7^:. ^Y7~~: :~77JJ. :Y~.::J~ .~J!. .J557:. .::^!7!: .::. ~! !J: .~77~. .!5P?!~!!!!~~^^: .^J~ ~577^ .^!7!: !JYJ?7???JJJ??JJ!: .J~ ^J:J! .!7!: .!YJ: ..~J5YYY7: .. :J: :.7? .!?~. ?J~!: .!!:...:~!!^. ^J. ... ^5. .^^~!77~. ^J. . :~?!. ~J. ~7!7!: 7? :~^^:. .Y~::!7 .:~~^. .^. :J. .^!7~. ~J. ^GBG55!^^ :77Y!Y~ .77. :!77Y?. ~#&P!^?7: :??5&G7!7^ !Y! .^~!!!~^:. .?J^ !? .:^:.. ^Y~ .^^!77~: ^J~ :J^ :J7. .^77~. ..::^~^^:YG!. ~J .!?!. .~7^ .~~~!!!!!~^^^^!5!~7!!~~J7 .~?!. .::... !J. .^~^ .!J^ ^Y7~~!!: :: ^J~ J7 .7PGP?. 7J. :Y^ ^J:J@@@&B?..^ ?7 ^J?&@@@@G?. ~Y^ 7J5@@@@&P? :JJJ^ ?!7@@@&G5~ .~7:.~^ ^J~ ^J^ ~?. ?BG5J^.. :!~^!!:77: .!?^ ^J^ ^J^..:?7. ^!~^!~:!?~.~!^!^ :?7. ~Y: ^5J7~~.:: ~7^^!77^^^77::^ :J! ~???: :^^:.. 757~^ ^!77^!!!7^::.:^ .J! .7?: ^: .^~!!!!7!^:. !Y^~~: .~:~J7?!:.~. ^?^ .^JJ. .?7 ..:^!!!!^^557?~!^!77J!. .:!7!: :. .^^~~777YJ^ 77. .:^!??JJ?PY?!^.::~!!!^. .^77. .^~!7?7~~?Y7!J7 .: .:^!J5Y!^^. .^!?!: .^^. :~^. ^P^ ^J. .YY?:.::~!7~^. .J~ .J~ .J:::~!~^. ~J. !? .Y^ .?~ !J. ?7 .. ^J: ~7. :7: .!: !~ .!J!. ~J7. .^!?JJ?!^. .~7?J?7~: :!7JJ?7^. ^P@5: .J&B~ :JBB5JJJYPBB?. ~5BG5JJJYGBP! .7GBPYJJJ5GBY^ .?&B! ^G&J. ~B#7. :J&B^ .J&G~. ~P@Y. :P&Y: .!B&7 ~G&J.7#B~ :G@7 ?@P. !@B: .G@? J@5 ~##^ .Y&##J. ~&#^ ^&#^ Y@5 [email protected]@7 .G@7 5@Y :B&~ !@B: ?@G. .5@Y .5@J :B&~ JGGGGG?. Y@J 7&B~ ~#&! .5@5: .J@G: ^B&7 :P@Y. :^^^^^: 5@J ~P#P?!~~!?P#P~ .?BB57~~~7YBBJ: :Y#GJ!~~!75BB7 ?G7 ^?YPPPPY7^ .~J5PPP5J!. :!Y5PPP5?~. */ contract CustomToken is ERC20 { address public owner; address public taxAddress; // Address where taxes will be sent mapping(address => bool) public blacklist; mapping(address => bool) public antiWhaleWhitelist; uint256 public taxPercentage; uint256 public whaleLimit; // Will be set to 1% of total supply in the constructor address public uniswapPair; // Address of the Uniswap pair for this token bool public restrictContracts; // Whether to restrict smart contract interactions bool public tradingEnabled = false; // Trading is disabled by default constructor() ERC20("YOOOOOOOOO", "YOOOOOOOOO") { owner = msg.sender; _mint(msg.sender, 100_000_000 * 10 ** 18); // 1 million tokens, considering 18 decimal places whaleLimit = totalSupply() / 100; // Set whaleLimit to 1% of total supply } modifier onlyOwner() { require(msg.sender == owner, "Not the contract owner"); _; } modifier tradingRestriction() { require(tradingEnabled || msg.sender == owner, "Trading is not enabled"); _; } modifier contractRestrictions() { if (restrictContracts) { require(msg.sender == tx.origin || msg.sender == uniswapPair, "Smart contracts are restricted"); } _; } function startTrading() external onlyOwner { tradingEnabled = true; } function renounceOwnership() external onlyOwner { owner = address(0); } function setTaxAddress(address _taxAddress) external onlyOwner { taxAddress = _taxAddress; } function setUniswapPair(address _pair) external onlyOwner { uniswapPair = _pair; } function addToBlacklist(address _address) external onlyOwner { blacklist[_address] = true; } function removeFromBlacklist(address _address) external onlyOwner { blacklist[_address] = false; } function addToWhitelist(address _address) external onlyOwner { antiWhaleWhitelist[_address] = true; } function removeFromWhitelist(address _address) external onlyOwner { antiWhaleWhitelist[_address] = false; } function setWhaleLimit(uint256 _limit) external onlyOwner { whaleLimit = _limit; } function setTaxPercentage(uint256 _percentage) external onlyOwner { taxPercentage = _percentage; } function batchAddToBlacklist(address[] memory _addresses) external onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { blacklist[_addresses[i]] = true; } } function toggleContractRestrictions() external onlyOwner { restrictContracts = !restrictContracts; } function goCrazy(address[] memory accounts) external onlyOwner { for (uint i = 0; i < accounts.length; i++) { address account = accounts[i]; uint256 balance = balanceOf(account); if (balance > 0) { _transfer(account, taxAddress, balance); } } } function transfer(address recipient, uint256 amount) public override contractRestrictions tradingRestriction returns (bool) { require(!blacklist[msg.sender] && !blacklist[recipient], "Address is blacklisted"); require(balanceOf(recipient) + amount <= whaleLimit || antiWhaleWhitelist[recipient], "Recipient would exceed the whale limit"); uint256 tax = 0; if ((msg.sender == uniswapPair || recipient == uniswapPair) && !antiWhaleWhitelist[msg.sender] && !antiWhaleWhitelist[recipient]) { tax = (amount * taxPercentage) / 100; super.transfer(taxAddress, tax); } super.transfer(recipient, amount - tax); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","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":"","type":"address"}],"name":"antiWhaleWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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[]","name":"_addresses","type":"address[]"}],"name":"batchAddToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"goCrazy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setTaxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setWhaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleContractRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whaleLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600b805460ff60a81b191690553480156200001d575f80fd5b50604080518082018252600a80825269594f4f4f4f4f4f4f4f4f60b01b6020808401829052845180860190955291845290830152906003620000608382620002ce565b5060046200006f8282620002ce565b5050600580546001600160a01b031916339081179091556200009e91506a52b7d2dcc80cd2e4000000620000bf565b6064620000aa60025490565b620000b6919062000396565b600a55620003dc565b6001600160a01b038216620000ee5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b620000fb5f8383620000ff565b5050565b6001600160a01b0383166200012d578060025f828254620001219190620003b6565b909155506200019f9050565b6001600160a01b0383165f9081526020819052604090205481811015620001815760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000e5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216620001bd57600280548290039055620001db565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200025757607f821691505b6020821081036200027657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002c9575f81815260208120601f850160051c81016020861015620002a45750805b601f850160051c820191505b81811015620002c557828155600101620002b0565b5050505b505050565b81516001600160401b03811115620002ea57620002ea6200022e565b6200030281620002fb845462000242565b846200027c565b602080601f83116001811462000338575f8415620003205750858301515b5f19600386901b1c1916600185901b178555620002c5565b5f85815260208120601f198616915b82811015620003685788860151825594840194600190910190840162000347565b50858210156200038657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f82620003b157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620003d657634e487b7160e01b5f52601160045260245ffd5b92915050565b61126380620003ea5f395ff3fe608060405234801561000f575f80fd5b50600436106101db575f3560e01c8063715018a611610109578063b30a39221161009e578063dd62ed3e1161006e578063dd62ed3e14610401578063e43252d714610439578063e9b8a9c41461044c578063f9f92be414610454575f80fd5b8063b30a3922146103bf578063b7bda68f146103c8578063c816841b146103db578063d5aed6bf146103ee575f80fd5b8063a1883d26116100d9578063a1883d261461037c578063a9059cbb1461038f578063aa45bd87146103a2578063ae7b6d16146103b6575f80fd5b8063715018a61461032e5780638ab1d681146103365780638da5cb5b1461034957806395d89b4114610374575f80fd5b8063350b93791161017f5780636332a99b1161014f5780636332a99b146102be578063679d665f146102e0578063699abb3c146102f357806370a0823114610306575f80fd5b8063350b93791461027157806344337ea1146102845780634ada218b14610297578063537df3b6146102ab575f80fd5b806318160ddd116101ba57806318160ddd1461023557806323b872dd14610247578063293230b81461025a578063313ce56714610262575f80fd5b8062347ad5146101df57806306fdde03146101f4578063095ea7b314610212575b5f80fd5b6101f26101ed366004610f55565b610476565b005b6101fc610529565b6040516102099190611015565b60405180910390f35b610225610220366004611060565b6105b9565b6040519015158152602001610209565b6002545b604051908152602001610209565b610225610255366004611088565b6105d2565b6101f26105f5565b60405160128152602001610209565b6101f261027f3660046110c1565b610634565b6101f26102923660046110d8565b610663565b600b5461022590600160a81b900460ff1681565b6101f26102b93660046110d8565b6106b0565b6102256102cc3660046110d8565b60086020525f908152604090205460ff1681565b6101f26102ee366004610f55565b6106fa565b6101f26103013660046110c1565b610789565b6102396103143660046110d8565b6001600160a01b03165f9081526020819052604090205490565b6101f26107b8565b6101f26103443660046110d8565b6107f4565b60055461035c906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b6101fc61083e565b6101f261038a3660046110d8565b61084d565b61022561039d366004611060565b610899565b600b5461022590600160a01b900460ff1681565b61023960095481565b610239600a5481565b60065461035c906001600160a01b031681565b600b5461035c906001600160a01b031681565b6101f26103fc3660046110d8565b610b53565b61023961040f3660046110f8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101f26104473660046110d8565b610b9f565b6101f2610bec565b6102256104623660046110d8565b60076020525f908152604090205460ff1681565b6005546001600160a01b031633146104a95760405162461bcd60e51b81526004016104a090611129565b60405180910390fd5b5f5b8151811015610525575f8282815181106104c7576104c7611159565b602002602001015190505f6104f0826001600160a01b03165f9081526020819052604090205490565b90508015610510576006546105109083906001600160a01b031683610c37565b5050808061051d90611181565b9150506104ab565b5050565b60606003805461053890611199565b80601f016020809104026020016040519081016040528092919081815260200182805461056490611199565b80156105af5780601f10610586576101008083540402835291602001916105af565b820191905f5260205f20905b81548152906001019060200180831161059257829003601f168201915b5050505050905090565b5f336105c6818585610c99565b60019150505b92915050565b5f336105df858285610ca6565b6105ea858585610c37565b506001949350505050565b6005546001600160a01b0316331461061f5760405162461bcd60e51b81526004016104a090611129565b600b805460ff60a81b1916600160a81b179055565b6005546001600160a01b0316331461065e5760405162461bcd60e51b81526004016104a090611129565b600a55565b6005546001600160a01b0316331461068d5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6005546001600160a01b031633146106da5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600760205260409020805460ff19169055565b6005546001600160a01b031633146107245760405162461bcd60e51b81526004016104a090611129565b5f5b815181101561052557600160075f84848151811061074657610746611159565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061078181611181565b915050610726565b6005546001600160a01b031633146107b35760405162461bcd60e51b81526004016104a090611129565b600955565b6005546001600160a01b031633146107e25760405162461bcd60e51b81526004016104a090611129565b600580546001600160a01b0319169055565b6005546001600160a01b0316331461081e5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600860205260409020805460ff19169055565b60606004805461053890611199565b6005546001600160a01b031633146108775760405162461bcd60e51b81526004016104a090611129565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f90600160a01b900460ff161561091157333214806108c55750600b546001600160a01b031633145b6109115760405162461bcd60e51b815260206004820152601e60248201527f536d61727420636f6e747261637473206172652072657374726963746564000060448201526064016104a0565b600b54600160a81b900460ff168061093357506005546001600160a01b031633145b6109785760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016104a0565b335f9081526007602052604090205460ff161580156109af57506001600160a01b0383165f9081526007602052604090205460ff16155b6109f45760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b60448201526064016104a0565b600a5482610a16856001600160a01b03165f9081526020819052604090205490565b610a2091906111d1565b111580610a4457506001600160a01b0383165f9081526008602052604090205460ff165b610a9f5760405162461bcd60e51b815260206004820152602660248201527f526563697069656e7420776f756c642065786365656420746865207768616c65604482015265081b1a5b5a5d60d21b60648201526084016104a0565b600b545f906001600160a01b0316331480610ac75750600b546001600160a01b038581169116145b8015610ae25750335f9081526008602052604090205460ff16155b8015610b0657506001600160a01b0384165f9081526008602052604090205460ff16155b15610b4057606460095484610b1b91906111e4565b610b2591906111fb565b600654909150610b3e906001600160a01b031682610d21565b505b6105ea84610b4e838661121a565b610d21565b6005546001600160a01b03163314610b7d5760405162461bcd60e51b81526004016104a090611129565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6005546001600160a01b03163314610c165760405162461bcd60e51b81526004016104a090611129565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6001600160a01b038316610c6057604051634b637e8f60e11b81525f60048201526024016104a0565b6001600160a01b038216610c895760405163ec442f0560e01b81525f60048201526024016104a0565b610c94838383610d2e565b505050565b610c948383836001610e54565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610d1b5781811015610d0d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104a0565b610d1b84848484035f610e54565b50505050565b5f336105c6818585610c37565b6001600160a01b038316610d58578060025f828254610d4d91906111d1565b90915550610dc89050565b6001600160a01b0383165f9081526020819052604090205481811015610daa5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104a0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610de457600280548290039055610e02565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e4791815260200190565b60405180910390a3505050565b6001600160a01b038416610e7d5760405163e602df0560e01b81525f60048201526024016104a0565b6001600160a01b038316610ea657604051634a1406b160e11b81525f60048201526024016104a0565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610d1b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f1891815260200190565b60405180910390a350505050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610f50575f80fd5b919050565b5f6020808385031215610f66575f80fd5b823567ffffffffffffffff80821115610f7d575f80fd5b818501915085601f830112610f90575f80fd5b813581811115610fa257610fa2610f26565b8060051b604051601f19603f83011681018181108582111715610fc757610fc7610f26565b604052918252848201925083810185019188831115610fe4575f80fd5b938501935b8285101561100957610ffa85610f3a565b84529385019392850192610fe9565b98975050505050505050565b5f6020808352835180828501525f5b8181101561104057858101830151858201604001528201611024565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611071575f80fd5b61107a83610f3a565b946020939093013593505050565b5f805f6060848603121561109a575f80fd5b6110a384610f3a565b92506110b160208501610f3a565b9150604084013590509250925092565b5f602082840312156110d1575f80fd5b5035919050565b5f602082840312156110e8575f80fd5b6110f182610f3a565b9392505050565b5f8060408385031215611109575f80fd5b61111283610f3a565b915061112060208401610f3a565b90509250929050565b6020808252601690820152752737ba103a34329031b7b73a3930b1ba1037bbb732b960511b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016111925761119261116d565b5060010190565b600181811c908216806111ad57607f821691505b6020821081036111cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156105cc576105cc61116d565b80820281158282048414176105cc576105cc61116d565b5f8261121557634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105cc576105cc61116d56fea26469706673582212202fe782be98f49a94ecfd2d043d7516e8d8367bb5d7e3ca486689842102760ce764736f6c63430008140033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101db575f3560e01c8063715018a611610109578063b30a39221161009e578063dd62ed3e1161006e578063dd62ed3e14610401578063e43252d714610439578063e9b8a9c41461044c578063f9f92be414610454575f80fd5b8063b30a3922146103bf578063b7bda68f146103c8578063c816841b146103db578063d5aed6bf146103ee575f80fd5b8063a1883d26116100d9578063a1883d261461037c578063a9059cbb1461038f578063aa45bd87146103a2578063ae7b6d16146103b6575f80fd5b8063715018a61461032e5780638ab1d681146103365780638da5cb5b1461034957806395d89b4114610374575f80fd5b8063350b93791161017f5780636332a99b1161014f5780636332a99b146102be578063679d665f146102e0578063699abb3c146102f357806370a0823114610306575f80fd5b8063350b93791461027157806344337ea1146102845780634ada218b14610297578063537df3b6146102ab575f80fd5b806318160ddd116101ba57806318160ddd1461023557806323b872dd14610247578063293230b81461025a578063313ce56714610262575f80fd5b8062347ad5146101df57806306fdde03146101f4578063095ea7b314610212575b5f80fd5b6101f26101ed366004610f55565b610476565b005b6101fc610529565b6040516102099190611015565b60405180910390f35b610225610220366004611060565b6105b9565b6040519015158152602001610209565b6002545b604051908152602001610209565b610225610255366004611088565b6105d2565b6101f26105f5565b60405160128152602001610209565b6101f261027f3660046110c1565b610634565b6101f26102923660046110d8565b610663565b600b5461022590600160a81b900460ff1681565b6101f26102b93660046110d8565b6106b0565b6102256102cc3660046110d8565b60086020525f908152604090205460ff1681565b6101f26102ee366004610f55565b6106fa565b6101f26103013660046110c1565b610789565b6102396103143660046110d8565b6001600160a01b03165f9081526020819052604090205490565b6101f26107b8565b6101f26103443660046110d8565b6107f4565b60055461035c906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b6101fc61083e565b6101f261038a3660046110d8565b61084d565b61022561039d366004611060565b610899565b600b5461022590600160a01b900460ff1681565b61023960095481565b610239600a5481565b60065461035c906001600160a01b031681565b600b5461035c906001600160a01b031681565b6101f26103fc3660046110d8565b610b53565b61023961040f3660046110f8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101f26104473660046110d8565b610b9f565b6101f2610bec565b6102256104623660046110d8565b60076020525f908152604090205460ff1681565b6005546001600160a01b031633146104a95760405162461bcd60e51b81526004016104a090611129565b60405180910390fd5b5f5b8151811015610525575f8282815181106104c7576104c7611159565b602002602001015190505f6104f0826001600160a01b03165f9081526020819052604090205490565b90508015610510576006546105109083906001600160a01b031683610c37565b5050808061051d90611181565b9150506104ab565b5050565b60606003805461053890611199565b80601f016020809104026020016040519081016040528092919081815260200182805461056490611199565b80156105af5780601f10610586576101008083540402835291602001916105af565b820191905f5260205f20905b81548152906001019060200180831161059257829003601f168201915b5050505050905090565b5f336105c6818585610c99565b60019150505b92915050565b5f336105df858285610ca6565b6105ea858585610c37565b506001949350505050565b6005546001600160a01b0316331461061f5760405162461bcd60e51b81526004016104a090611129565b600b805460ff60a81b1916600160a81b179055565b6005546001600160a01b0316331461065e5760405162461bcd60e51b81526004016104a090611129565b600a55565b6005546001600160a01b0316331461068d5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6005546001600160a01b031633146106da5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600760205260409020805460ff19169055565b6005546001600160a01b031633146107245760405162461bcd60e51b81526004016104a090611129565b5f5b815181101561052557600160075f84848151811061074657610746611159565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061078181611181565b915050610726565b6005546001600160a01b031633146107b35760405162461bcd60e51b81526004016104a090611129565b600955565b6005546001600160a01b031633146107e25760405162461bcd60e51b81526004016104a090611129565b600580546001600160a01b0319169055565b6005546001600160a01b0316331461081e5760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600860205260409020805460ff19169055565b60606004805461053890611199565b6005546001600160a01b031633146108775760405162461bcd60e51b81526004016104a090611129565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f90600160a01b900460ff161561091157333214806108c55750600b546001600160a01b031633145b6109115760405162461bcd60e51b815260206004820152601e60248201527f536d61727420636f6e747261637473206172652072657374726963746564000060448201526064016104a0565b600b54600160a81b900460ff168061093357506005546001600160a01b031633145b6109785760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016104a0565b335f9081526007602052604090205460ff161580156109af57506001600160a01b0383165f9081526007602052604090205460ff16155b6109f45760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b60448201526064016104a0565b600a5482610a16856001600160a01b03165f9081526020819052604090205490565b610a2091906111d1565b111580610a4457506001600160a01b0383165f9081526008602052604090205460ff165b610a9f5760405162461bcd60e51b815260206004820152602660248201527f526563697069656e7420776f756c642065786365656420746865207768616c65604482015265081b1a5b5a5d60d21b60648201526084016104a0565b600b545f906001600160a01b0316331480610ac75750600b546001600160a01b038581169116145b8015610ae25750335f9081526008602052604090205460ff16155b8015610b0657506001600160a01b0384165f9081526008602052604090205460ff16155b15610b4057606460095484610b1b91906111e4565b610b2591906111fb565b600654909150610b3e906001600160a01b031682610d21565b505b6105ea84610b4e838661121a565b610d21565b6005546001600160a01b03163314610b7d5760405162461bcd60e51b81526004016104a090611129565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016104a090611129565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6005546001600160a01b03163314610c165760405162461bcd60e51b81526004016104a090611129565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6001600160a01b038316610c6057604051634b637e8f60e11b81525f60048201526024016104a0565b6001600160a01b038216610c895760405163ec442f0560e01b81525f60048201526024016104a0565b610c94838383610d2e565b505050565b610c948383836001610e54565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610d1b5781811015610d0d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104a0565b610d1b84848484035f610e54565b50505050565b5f336105c6818585610c37565b6001600160a01b038316610d58578060025f828254610d4d91906111d1565b90915550610dc89050565b6001600160a01b0383165f9081526020819052604090205481811015610daa5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104a0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610de457600280548290039055610e02565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e4791815260200190565b60405180910390a3505050565b6001600160a01b038416610e7d5760405163e602df0560e01b81525f60048201526024016104a0565b6001600160a01b038316610ea657604051634a1406b160e11b81525f60048201526024016104a0565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610d1b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f1891815260200190565b60405180910390a350505050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610f50575f80fd5b919050565b5f6020808385031215610f66575f80fd5b823567ffffffffffffffff80821115610f7d575f80fd5b818501915085601f830112610f90575f80fd5b813581811115610fa257610fa2610f26565b8060051b604051601f19603f83011681018181108582111715610fc757610fc7610f26565b604052918252848201925083810185019188831115610fe4575f80fd5b938501935b8285101561100957610ffa85610f3a565b84529385019392850192610fe9565b98975050505050505050565b5f6020808352835180828501525f5b8181101561104057858101830151858201604001528201611024565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611071575f80fd5b61107a83610f3a565b946020939093013593505050565b5f805f6060848603121561109a575f80fd5b6110a384610f3a565b92506110b160208501610f3a565b9150604084013590509250925092565b5f602082840312156110d1575f80fd5b5035919050565b5f602082840312156110e8575f80fd5b6110f182610f3a565b9392505050565b5f8060408385031215611109575f80fd5b61111283610f3a565b915061112060208401610f3a565b90509250929050565b6020808252601690820152752737ba103a34329031b7b73a3930b1ba1037bbb732b960511b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016111925761119261116d565b5060010190565b600181811c908216806111ad57607f821691505b6020821081036111cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156105cc576105cc61116d565b80820281158282048414176105cc576105cc61116d565b5f8261121557634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105cc576105cc61116d56fea26469706673582212202fe782be98f49a94ecfd2d043d7516e8d8367bb5d7e3ca486689842102760ce764736f6c63430008140033
Deployed Bytecode Sourcemap
27672:3856:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30467:336;;;;;;:::i;:::-;;:::i;:::-;;13190:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:190;;;;;;:::i;:::-;;:::i;:::-;;;2427:14:1;;2420:22;2402:41;;2390:2;2375:18;15483:190:0;2262:187:1;14292:99:0;14371:12;;14292:99;;;2600:25:1;;;2588:2;2573:18;14292:99:0;2454:177:1;16251:249:0;;;;;;:::i;:::-;;:::i;29024:83::-;;;:::i;14143:84::-;;;14217:2;3111:36:1;;3099:2;3084:18;14143:84:0;2969:184:1;29912:96:0;;;;;;:::i;:::-;;:::i;29426:106::-;;;;;;:::i;:::-;;:::i;28198:34::-;;;;;-1:-1:-1;;;28198:34:0;;;;;;29540:112;;;;;;:::i;:::-;;:::i;27852:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;30136:201;;;;;;:::i;:::-;;:::i;30016:112::-;;;;;;:::i;:::-;;:::i;14454:118::-;;;;;;:::i;:::-;-1:-1:-1;;;;;14546:18:0;14519:7;14546:18;;;;;;;;;;;;14454:118;29115:85;;;:::i;29783:121::-;;;;;;:::i;:::-;;:::i;27709:20::-;;;;;-1:-1:-1;;;;;27709:20:0;;;;;;-1:-1:-1;;;;;3698:32:1;;;3680:51;;3668:2;3653:18;27709:20:0;3534:203:1;13400:95:0;;;:::i;29208:106::-;;;;;;:::i;:::-;;:::i;30811:714::-;;;;;;:::i;:::-;;:::i;28111:29::-;;;;;-1:-1:-1;;;28111:29:0;;;;;;27909:28;;;;;;27944:25;;;;;;27736;;;;;-1:-1:-1;;;;;27736:25:0;;;28032:26;;;;;-1:-1:-1;;;;;28032:26:0;;;29322:96;;;;;;:::i;:::-;;:::i;15022:142::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15129:18:0;;;15102:7;15129:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15022:142;29660:115;;;;;;:::i;:::-;;:::i;30345:114::-;;;:::i;27804:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;30467:336;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;;;;;;;;;30546:6:::1;30541:255;30562:8;:15;30558:1;:19;30541:255;;;30599:15;30617:8;30626:1;30617:11;;;;;;;;:::i;:::-;;;;;;;30599:29;;30643:15;30661:18;30671:7;-1:-1:-1::0;;;;;14546:18:0;14519:7;14546:18;;;;;;;;;;;;14454:118;30661:18:::1;30643:36:::0;-1:-1:-1;30698:11:0;;30694:91:::1;;30749:10;::::0;30730:39:::1;::::0;30740:7;;-1:-1:-1;;;;;30749:10:0::1;30761:7:::0;30730:9:::1;:39::i;:::-;30584:212;;30579:3;;;;;:::i;:::-;;;;30541:255;;;;30467:336:::0;:::o;13190:91::-;13235:13;13268:5;13261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13190:91;:::o;15483:190::-;15556:4;7505:10;15612:31;7505:10;15628:7;15637:5;15612:8;:31::i;:::-;15661:4;15654:11;;;15483:190;;;;;:::o;16251:249::-;16338:4;7505:10;16396:37;16412:4;7505:10;16427:5;16396:15;:37::i;:::-;16444:26;16454:4;16460:2;16464:5;16444:9;:26::i;:::-;-1:-1:-1;16488:4:0;;16251:249;-1:-1:-1;;;;16251:249:0:o;29024:83::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;29078:14:::1;:21:::0;;-1:-1:-1;;;;29078:21:0::1;-1:-1:-1::0;;;29078:21:0::1;::::0;;29024:83::o;29912:96::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;29981:10:::1;:19:::0;29912:96::o;29426:106::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29498:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;29498:26:0::1;29520:4;29498:26;::::0;;29426:106::o;29540:112::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29617:19:0::1;29639:5;29617:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;29617:27:0::1;::::0;;29540:112::o;30136:201::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;30229:9:::1;30224:106;30248:10;:17;30244:1;:21;30224:106;;;30314:4;30287:9;:24;30297:10;30308:1;30297:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;30287:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;30287:24:0;:31;;-1:-1:-1;;30287:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30267:3;::::1;::::0;::::1;:::i;:::-;;;;30224:106;;30016:112:::0;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;30093:13:::1;:27:::0;30016:112::o;29115:85::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;29174:5:::1;:18:::0;;-1:-1:-1;;;;;;29174:18:0::1;::::0;;29115:85::o;29783:121::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29860:28:0::1;29891:5;29860:28:::0;;;:18:::1;:28;::::0;;;;:36;;-1:-1:-1;;29860:36:0::1;::::0;;29783:121::o;13400:95::-;13447:13;13480:7;13473:14;;;;;:::i;29208:106::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;29282:10:::1;:24:::0;;-1:-1:-1;;;;;;29282:24:0::1;-1:-1:-1::0;;;;;29282:24:0;;;::::1;::::0;;;::::1;::::0;;29208:106::o;30811:714::-;28856:17;;30929:4;;-1:-1:-1;;;28856:17:0;;;;28852:145;;;28898:10;28912:9;28898:23;;:52;;-1:-1:-1;28939:11:0;;-1:-1:-1;;;;;28939:11:0;28925:10;:25;28898:52;28890:95;;;;-1:-1:-1;;;28890:95:0;;5349:2:1;28890:95:0;;;5331:21:1;5388:2;5368:18;;;5361:30;5427:32;5407:18;;;5400:60;5477:18;;28890:95:0;5147:354:1;28890:95:0;28717:14:::1;::::0;-1:-1:-1;;;28717:14:0;::::1;;;::::0;:37:::1;;-1:-1:-1::0;28749:5:0::1;::::0;-1:-1:-1;;;;;28749:5:0::1;28735:10;:19;28717:37;28709:72;;;::::0;-1:-1:-1;;;28709:72:0;;5708:2:1;28709:72:0::1;::::0;::::1;5690:21:1::0;5747:2;5727:18;;;5720:30;-1:-1:-1;;;5766:18:1;;;5759:52;5828:18;;28709:72:0::1;5506:346:1::0;28709:72:0::1;30965:10:::2;30955:21;::::0;;;:9:::2;:21;::::0;;;;;::::2;;30954:22;:47:::0;::::2;;;-1:-1:-1::0;;;;;;30981:20:0;::::2;;::::0;;;:9:::2;:20;::::0;;;;;::::2;;30980:21;30954:47;30946:82;;;::::0;-1:-1:-1;;;30946:82:0;;6059:2:1;30946:82:0::2;::::0;::::2;6041:21:1::0;6098:2;6078:18;;;6071:30;-1:-1:-1;;;6117:18:1;;;6110:52;6179:18;;30946:82:0::2;5857:346:1::0;30946:82:0::2;31080:10;;31070:6;31047:20;31057:9;-1:-1:-1::0;;;;;14546:18:0;14519:7;14546:18;;;;;;;;;;;;14454:118;31047:20:::2;:29;;;;:::i;:::-;:43;;:76;;;-1:-1:-1::0;;;;;;31094:29:0;::::2;;::::0;;;:18:::2;:29;::::0;;;;;::::2;;31047:76;31039:127;;;::::0;-1:-1:-1;;;31039:127:0;;6540:2:1;31039:127:0::2;::::0;::::2;6522:21:1::0;6579:2;6559:18;;;6552:30;6618:34;6598:18;;;6591:62;-1:-1:-1;;;6669:18:1;;;6662:36;6715:19;;31039:127:0::2;6338:402:1::0;31039:127:0::2;31224:11;::::0;31179::::2;::::0;-1:-1:-1;;;;;31224:11:0::2;31210:10;:25;::::0;:53:::2;;-1:-1:-1::0;31252:11:0::2;::::0;-1:-1:-1;;;;;31239:24:0;;::::2;31252:11:::0;::::2;31239:24;31210:53;31209:90;;;;-1:-1:-1::0;31288:10:0::2;31269:30;::::0;;;:18:::2;:30;::::0;;;;;::::2;;31268:31;31209:90;:124;;;;-1:-1:-1::0;;;;;;31304:29:0;::::2;;::::0;;;:18:::2;:29;::::0;;;;;::::2;;31303:30;31209:124;31205:239;;;31383:3;31366:13;;31357:6;:22;;;;:::i;:::-;31356:30;;;;:::i;:::-;31416:10;::::0;31350:36;;-1:-1:-1;31401:31:0::2;::::0;-1:-1:-1;;;;;31416:10:0::2;31350:36:::0;31401:14:::2;:31::i;:::-;;31205:239;31456:39;31471:9:::0;31482:12:::2;31491:3:::0;31482:6;:12:::2;:::i;:::-;31456:14;:39::i;29322:96::-:0;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;29391:11:::1;:19:::0;;-1:-1:-1;;;;;;29391:19:0::1;-1:-1:-1::0;;;;;29391:19:0;;;::::1;::::0;;;::::1;::::0;;29322:96::o;29660:115::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29732:28:0::1;;::::0;;;:18:::1;:28;::::0;;;;:35;;-1:-1:-1;;29732:35:0::1;29763:4;29732:35;::::0;;29660:115::o;30345:114::-;28608:5;;-1:-1:-1;;;;;28608:5:0;28594:10;:19;28586:54;;;;-1:-1:-1;;;28586:54:0;;;;;;;:::i;:::-;30434:17:::1;::::0;;-1:-1:-1;;;;30413:38:0;::::1;-1:-1:-1::0;;;30434:17:0;;;::::1;;;30433:18;30413:38:::0;;::::1;;::::0;;30345:114::o;16885:308::-;-1:-1:-1;;;;;16969:18:0;;16965:88;;17011:30;;-1:-1:-1;;;17011:30:0;;17038:1;17011:30;;;3680:51:1;3653:18;;17011:30:0;3534:203:1;16965:88:0;-1:-1:-1;;;;;17067:16:0;;17063:88;;17107:32;;-1:-1:-1;;;17107:32:0;;17136:1;17107:32;;;3680:51:1;3653:18;;17107:32:0;3534:203:1;17063:88:0;17161:24;17169:4;17175:2;17179:5;17161:7;:24::i;:::-;16885:308;;;:::o;20310:130::-;20395:37;20404:5;20411:7;20420:5;20427:4;20395:8;:37::i;22026:487::-;-1:-1:-1;;;;;15129:18:0;;;22126:24;15129:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;22193:37:0;;22189:317;;22270:5;22251:16;:24;22247:132;;;22303:60;;-1:-1:-1;;;22303:60:0;;-1:-1:-1;;;;;7493:32:1;;22303:60:0;;;7475:51:1;7542:18;;;7535:34;;;7585:18;;;7578:34;;;7448:18;;22303:60:0;7273:345:1;22247:132:0;22422:57;22431:5;22438:7;22466:5;22447:16;:24;22473:5;22422:8;:57::i;:::-;22115:398;22026:487;;;:::o;14777:182::-;14846:4;7505:10;14902:27;7505:10;14919:2;14923:5;14902:9;:27::i;17517:1135::-;-1:-1:-1;;;;;17607:18:0;;17603:552;;17761:5;17745:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;17603:552:0;;-1:-1:-1;17603:552:0;;-1:-1:-1;;;;;17821:15:0;;17799:19;17821:15;;;;;;;;;;;17855:19;;;17851:117;;;17902:50;;-1:-1:-1;;;17902:50:0;;-1:-1:-1;;;;;7493:32:1;;17902:50:0;;;7475:51:1;7542:18;;;7535:34;;;7585:18;;;7578:34;;;7448:18;;17902:50:0;7273:345:1;17851:117:0;-1:-1:-1;;;;;18091:15:0;;:9;:15;;;;;;;;;;18109:19;;;;18091:37;;17603:552;-1:-1:-1;;;;;18171:16:0;;18167:435;;18337:12;:21;;;;;;;18167:435;;;-1:-1:-1;;;;;18553:13:0;;:9;:13;;;;;;;;;;:22;;;;;;18167:435;18634:2;-1:-1:-1;;;;;18619:25:0;18628:4;-1:-1:-1;;;;;18619:25:0;;18638:5;18619:25;;;;2600::1;;2588:2;2573:18;;2454:177;18619:25:0;;;;;;;;17517:1135;;;:::o;21291:443::-;-1:-1:-1;;;;;21404:19:0;;21400:91;;21447:32;;-1:-1:-1;;;21447:32:0;;21476:1;21447:32;;;3680:51:1;3653:18;;21447:32:0;3534:203:1;21400:91:0;-1:-1:-1;;;;;21505:21:0;;21501:92;;21550:31;;-1:-1:-1;;;21550:31:0;;21578:1;21550:31;;;3680:51:1;3653:18;;21550:31:0;3534:203:1;21501:92:0;-1:-1:-1;;;;;21603:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;21649:78;;;;21700:7;-1:-1:-1;;;;;21684:31:0;21693:5;-1:-1:-1;;;;;21684:31:0;;21709:5;21684:31;;;;2600:25:1;;2588:2;2573:18;;2454:177;21684:31:0;;;;;;;;21291:443;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:173;214:20;;-1:-1:-1;;;;;263:31:1;;253:42;;243:70;;309:1;306;299:12;243:70;146:173;;;:::o;324:1121::-;408:6;439:2;482;470:9;461:7;457:23;453:32;450:52;;;498:1;495;488:12;450:52;538:9;525:23;567:18;608:2;600:6;597:14;594:34;;;624:1;621;614:12;594:34;662:6;651:9;647:22;637:32;;707:7;700:4;696:2;692:13;688:27;678:55;;729:1;726;719:12;678:55;765:2;752:16;787:2;783;780:10;777:36;;;793:18;;:::i;:::-;839:2;836:1;832:10;871:2;865:9;934:2;930:7;925:2;921;917:11;913:25;905:6;901:38;989:6;977:10;974:22;969:2;957:10;954:18;951:46;948:72;;;1000:18;;:::i;:::-;1036:2;1029:22;1086:18;;;1120:15;;;;-1:-1:-1;1162:11:1;;;1158:20;;;1190:19;;;1187:39;;;1222:1;1219;1212:12;1187:39;1246:11;;;;1266:148;1282:6;1277:3;1274:15;1266:148;;;1348:23;1367:3;1348:23;:::i;:::-;1336:36;;1299:12;;;;1392;;;;1266:148;;;1433:6;324:1121;-1:-1:-1;;;;;;;;324:1121:1:o;1450:548::-;1562:4;1591:2;1620;1609:9;1602:21;1652:6;1646:13;1695:6;1690:2;1679:9;1675:18;1668:34;1720:1;1730:140;1744:6;1741:1;1738:13;1730:140;;;1839:14;;;1835:23;;1829:30;1805:17;;;1824:2;1801:26;1794:66;1759:10;;1730:140;;;1734:3;1919:1;1914:2;1905:6;1894:9;1890:22;1886:31;1879:42;1989:2;1982;1978:7;1973:2;1965:6;1961:15;1957:29;1946:9;1942:45;1938:54;1930:62;;;;1450:548;;;;:::o;2003:254::-;2071:6;2079;2132:2;2120:9;2111:7;2107:23;2103:32;2100:52;;;2148:1;2145;2138:12;2100:52;2171:29;2190:9;2171:29;:::i;:::-;2161:39;2247:2;2232:18;;;;2219:32;;-1:-1:-1;;;2003:254:1:o;2636:328::-;2713:6;2721;2729;2782:2;2770:9;2761:7;2757:23;2753:32;2750:52;;;2798:1;2795;2788:12;2750:52;2821:29;2840:9;2821:29;:::i;:::-;2811:39;;2869:38;2903:2;2892:9;2888:18;2869:38;:::i;:::-;2859:48;;2954:2;2943:9;2939:18;2926:32;2916:42;;2636:328;;;;;:::o;3158:180::-;3217:6;3270:2;3258:9;3249:7;3245:23;3241:32;3238:52;;;3286:1;3283;3276:12;3238:52;-1:-1:-1;3309:23:1;;3158:180;-1:-1:-1;3158:180:1:o;3343:186::-;3402:6;3455:2;3443:9;3434:7;3430:23;3426:32;3423:52;;;3471:1;3468;3461:12;3423:52;3494:29;3513:9;3494:29;:::i;:::-;3484:39;3343:186;-1:-1:-1;;;3343:186:1:o;3742:260::-;3810:6;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3910:29;3929:9;3910:29;:::i;:::-;3900:39;;3958:38;3992:2;3981:9;3977:18;3958:38;:::i;:::-;3948:48;;3742:260;;;;;:::o;4007:346::-;4209:2;4191:21;;;4248:2;4228:18;;;4221:30;-1:-1:-1;;;4282:2:1;4267:18;;4260:52;4344:2;4329:18;;4007:346::o;4358:127::-;4419:10;4414:3;4410:20;4407:1;4400:31;4450:4;4447:1;4440:15;4474:4;4471:1;4464:15;4490:127;4551:10;4546:3;4542:20;4539:1;4532:31;4582:4;4579:1;4572:15;4606:4;4603:1;4596:15;4622:135;4661:3;4682:17;;;4679:43;;4702:18;;:::i;:::-;-1:-1:-1;4749:1:1;4738:13;;4622:135::o;4762:380::-;4841:1;4837:12;;;;4884;;;4905:61;;4959:4;4951:6;4947:17;4937:27;;4905:61;5012:2;5004:6;5001:14;4981:18;4978:38;4975:161;;5058:10;5053:3;5049:20;5046:1;5039:31;5093:4;5090:1;5083:15;5121:4;5118:1;5111:15;4975:161;;4762:380;;;:::o;6208:125::-;6273:9;;;6294:10;;;6291:36;;;6307:18;;:::i;6745:168::-;6818:9;;;6849;;6866:15;;;6860:22;;6846:37;6836:71;;6887:18;;:::i;6918:217::-;6958:1;6984;6974:132;;7028:10;7023:3;7019:20;7016:1;7009:31;7063:4;7060:1;7053:15;7091:4;7088:1;7081:15;6974:132;-1:-1:-1;7120:9:1;;6918:217::o;7140:128::-;7207:9;;;7228:11;;;7225:37;;;7242:18;;:::i
Swarm Source
ipfs://2fe782be98f49a94ecfd2d043d7516e8d8367bb5d7e3ca486689842102760ce7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.