// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import {INano} from "./interfaces/INano.sol";
import {ILpLockerv2} from "./interfaces/ILpLockerv2.sol";
import {INonfungiblePositionManager} from "./interfaces/uniswapv3.sol";
import "../lib/openzeppelin-contracts/contracts/access/Ownable.sol";
import "../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import {IERC721Receiver} from "../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol";
contract LpLockerv2 is Ownable, ILpLockerv2 {
string public constant version = "0.0.2";
address public positionManager;
address public factory;
uint256 public constant TEAM_REWARD = 20;
uint256 public immutable MAX_CREATOR_REWARD;
address public teamRecipient;
mapping(uint256 => TokenRewardInfo) public tokenRewards;
mapping(uint256 => address) public teamOverrideRewardRecipientForToken;
mapping(address => uint256[]) public creatorTokenIds;
constructor(
address owner_, // owner of the contract
address tokenFactory_, // Address of the nano factory
address positionManager_, // Address of the position manager
address teamRecipient_ // address to receive team portion of the rewards
) Ownable(owner_) {
factory = tokenFactory_;
positionManager = positionManager_;
teamRecipient = teamRecipient_;
// match the factory's max creator reward
MAX_CREATOR_REWARD = INano(factory).MAX_CREATOR_REWARD();
if (MAX_CREATOR_REWARD == 0) {
revert MaxCreatorRewardNotSet();
}
// ensure the max creator reward and team reward add up to 100
if (MAX_CREATOR_REWARD + TEAM_REWARD != 100) {
revert InvalidMaxCreatorReward();
}
// ensure the team recipient is not the zero address
if (teamRecipient == address(0)) {
revert InvalidTeamRecipient();
}
}
modifier onlyFactory() {
if (msg.sender != factory) {
revert NotAllowed(msg.sender);
}
_;
}
// Set the override team reward recipient for a token
function setOverrideTeamRewardRecipientForToken(uint256 tokenId, address newTeamRecipient)
external
{
if (msg.sender != owner() && msg.sender != factory) {
revert NotAllowed(msg.sender);
}
address oldTeamRecipient = teamOverrideRewardRecipientForToken[tokenId];
teamOverrideRewardRecipientForToken[tokenId] = newTeamRecipient;
emit TeamOverrideRewardRecipientUpdated(tokenId, oldTeamRecipient, newTeamRecipient);
}
// Update the default team recipient
function updateTeamRecipient(address newRecipient) external onlyOwner {
address oldTeamRecipient = teamRecipient;
teamRecipient = newRecipient;
// ensure the team recipient is not the zero address
if (teamRecipient == address(0)) {
revert InvalidTeamRecipient();
}
emit TeamRecipientUpdated(oldTeamRecipient, newRecipient);
}
// Add a token reward, this is called by the factory when a token is created
function addTokenReward(TokenRewardInfo memory tokenRewardInfo) external onlyFactory {
// check that the token id is not already known
if (tokenRewards[tokenRewardInfo.lpTokenId].lpTokenId != 0) {
revert AlreadyKnownTokenId(tokenRewardInfo.lpTokenId);
}
// check that the creator reward is not greater than the max creator reward or zero
if (
tokenRewardInfo.creatorReward > MAX_CREATOR_REWARD || tokenRewardInfo.creatorReward == 0
) {
revert InvalidCreatorReward(tokenRewardInfo.creatorReward);
}
tokenRewards[tokenRewardInfo.lpTokenId] = tokenRewardInfo;
creatorTokenIds[tokenRewardInfo.creator.admin].push(tokenRewardInfo.lpTokenId);
emit TokenRewardAdded(
tokenRewardInfo.lpTokenId,
tokenRewardInfo.creatorReward,
tokenRewardInfo.creator.admin,
tokenRewardInfo.interfacer.admin
);
}
// Collect rewards for a token
function collectRewards(uint256 tokenId) public {
address teamRecipient_ = teamOverrideRewardRecipientForToken[tokenId];
if (teamRecipient_ == address(0)) {
teamRecipient_ = teamRecipient;
}
address creatorRecipient_ = tokenRewards[tokenId].creator.recipient;
if (creatorRecipient_ == address(0)) {
creatorRecipient_ = teamRecipient_;
}
address interfaceRecipient_ = tokenRewards[tokenId].interfacer.recipient;
if (interfaceRecipient_ == address(0)) {
interfaceRecipient_ = teamRecipient_;
}
// collect the rewards
INonfungiblePositionManager nonfungiblePositionManager =
INonfungiblePositionManager(positionManager);
(uint256 amount0, uint256 amount1) = nonfungiblePositionManager.collect(
INonfungiblePositionManager.CollectParams({
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max,
tokenId: tokenId
})
);
(,, address token0, address token1,,,,,,,,) = nonfungiblePositionManager.positions(tokenId);
IERC20 rewardToken0 = IERC20(token0);
IERC20 rewardToken1 = IERC20(token1);
uint256 creatorReward = tokenRewards[tokenId].creatorReward;
// figure out the rewards distribution
uint256 teamReward0 = (amount0 * TEAM_REWARD) / 100;
uint256 teamReward1 = (amount1 * TEAM_REWARD) / 100;
rewardToken0.transfer(teamRecipient_, teamReward0);
rewardToken1.transfer(teamRecipient_, teamReward1);
uint256 interfaceReward0;
uint256 interfaceReward1;
uint256 creatorReward0;
uint256 creatorReward1;
if (creatorReward == MAX_CREATOR_REWARD) {
// if the creator reward is max, then there is no interface reward
creatorReward0 = amount0 - teamReward0;
creatorReward1 = amount1 - teamReward1;
rewardToken0.transfer(creatorRecipient_, creatorReward0);
rewardToken1.transfer(creatorRecipient_, creatorReward1);
} else {
// we have both a creator and interface reward
creatorReward0 = (amount0 * creatorReward) / 100;
creatorReward1 = (amount1 * creatorReward) / 100;
interfaceReward0 = amount0 - teamReward0 - creatorReward0;
interfaceReward1 = amount1 - teamReward1 - creatorReward1;
rewardToken0.transfer(interfaceRecipient_, interfaceReward0);
rewardToken1.transfer(interfaceRecipient_, interfaceReward1);
rewardToken0.transfer(creatorRecipient_, creatorReward0);
rewardToken1.transfer(creatorRecipient_, creatorReward1);
}
emit ClaimedRewards({
lpTokenId: tokenId,
creatorRecipient: creatorRecipient_,
interfaceRecipient: interfaceRecipient_,
teamRecipient: teamRecipient_,
token0: token0,
token1: token1,
teamReward0: teamReward0,
teamReward1: teamReward1,
interfaceReward0: interfaceReward0,
interfaceReward1: interfaceReward1,
creatorReward0: creatorReward0,
creatorReward1: creatorReward1
});
}
// Get the token ids for a creator (using the admin address)
function getLpTokenIdsForCreator(address user) public view returns (uint256[] memory) {
return creatorTokenIds[user];
}
// Replace the creator reward recipient
function updateCreatorRewardRecipient(uint256 tokenId, address newRecipient) external {
TokenRewardInfo memory tokenRewardInfo = tokenRewards[tokenId];
// Only admin can replace the reward recipient
if (msg.sender != tokenRewardInfo.creator.admin) {
revert NotAllowed(msg.sender);
}
// Add the new recipient
address oldRecipient = tokenRewards[tokenId].creator.recipient;
tokenRewards[tokenId].creator.recipient = newRecipient;
emit CreatorRewardRecipientUpdated(tokenId, oldRecipient, newRecipient);
}
// Replace the interface reward recipient
function updateInterfaceRewardRecipient(uint256 tokenId, address newRecipient) external {
TokenRewardInfo memory tokenRewardInfo = tokenRewards[tokenId];
// Only admin can replace the reward recipient
if (msg.sender != tokenRewardInfo.interfacer.admin) {
revert NotAllowed(msg.sender);
}
// Add the new recipient
address oldRecipient = tokenRewards[tokenId].interfacer.recipient;
tokenRewards[tokenId].interfacer.recipient = newRecipient;
emit InterfaceRewardRecipientUpdated(tokenId, oldRecipient, newRecipient);
}
// Replace the interface reward admin
function updateInterfaceRewardAdmin(uint256 tokenId, address newAdmin) external {
TokenRewardInfo memory tokenRewardInfo = tokenRewards[tokenId];
// Only admin can replace the reward admin
if (msg.sender != tokenRewardInfo.interfacer.admin) {
revert NotAllowed(msg.sender);
}
// Add the new admin
address oldAdmin = tokenRewards[tokenId].interfacer.admin;
tokenRewards[tokenId].interfacer.admin = newAdmin;
emit InterfaceRewardRecipientAdminUpdated(tokenId, oldAdmin, newAdmin);
}
// Replace the creator reward admin
function updateCreatorRewardAdmin(uint256 tokenId, address newAdmin) external {
TokenRewardInfo memory tokenRewardInfo = tokenRewards[tokenId];
// Only admin can replace the admin
if (msg.sender != tokenRewardInfo.creator.admin) {
revert NotAllowed(msg.sender);
}
// Remove the tokenId from _creatorTokenIds
uint256 length = creatorTokenIds[tokenRewardInfo.creator.admin].length;
for (uint256 i = 0; i < length; i++) {
if (creatorTokenIds[tokenRewardInfo.creator.admin][i] == tokenRewardInfo.lpTokenId) {
// Swap with the last element
creatorTokenIds[tokenRewardInfo.creator.admin][i] =
creatorTokenIds[tokenRewardInfo.creator.admin][length - 1];
// Pop the last element
creatorTokenIds[tokenRewardInfo.creator.admin].pop();
break;
}
}
// push the token id to the new admin
creatorTokenIds[newAdmin].push(tokenRewardInfo.lpTokenId);
address oldAdmin = tokenRewards[tokenId].creator.admin;
tokenRewards[tokenId].creator.admin = newAdmin;
emit CreatorRewardRecipientAdminUpdated(tokenId, oldAdmin, newAdmin);
}
// Enable contract to receive LP Tokens
function onERC721Received(address, address from, uint256 id, bytes calldata)
external
override
returns (bytes4)
{
// Only Nano Factory can send NFTs here
if (from != factory) {
revert NotAllowed(from);
}
emit Received(from, id);
return IERC721Receiver.onERC721Received.selector;
}
// Withdraw ETH from the contract
function withdrawETH(address recipient) public onlyOwner {
payable(recipient).transfer(address(this).balance);
}
// Withdraw ERC20 tokens from the contract
function withdrawERC20(address token, address recipient) public onlyOwner {
IERC20 token_ = IERC20(token);
token_.transfer(recipient, token_.balanceOf(address(this)));
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "owner_",
"type": "address",
"internalType": "address"
},
{
"name": "tokenFactory_",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager_",
"type": "address",
"internalType": "address"
},
{
"name": "teamRecipient_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyKnownTokenId",
"type": "error",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "InvalidCreatorReward",
"type": "error",
"inputs": [
{
"name": "creatorReward",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "InvalidMaxCreatorReward",
"type": "error",
"inputs": []
},
{
"name": "InvalidTeamRecipient",
"type": "error",
"inputs": []
},
{
"name": "MaxCreatorRewardNotSet",
"type": "error",
"inputs": []
},
{
"name": "NotAllowed",
"type": "error",
"inputs": [
{
"name": "user",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ClaimedRewards",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "creatorRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "interfaceRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "teamRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "token0",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "token1",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "creatorReward0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creatorReward1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "interfaceReward0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "interfaceReward1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "teamReward0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "teamReward1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CreatorRewardRecipientAdminUpdated",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldAdmin",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newAdmin",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "CreatorRewardRecipientUpdated",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "InterfaceRewardRecipientAdminUpdated",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldAdmin",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newAdmin",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "InterfaceRewardRecipientUpdated",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Received",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TeamOverrideRewardRecipientUpdated",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "TeamRecipientUpdated",
"type": "event",
"inputs": [
{
"name": "oldRecipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "TokenRewardAdded",
"type": "event",
"inputs": [
{
"name": "lpTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creatorReward",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "interfacer",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MAX_CREATOR_REWARD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TEAM_REWARD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "addTokenReward",
"type": "function",
"inputs": [
{
"name": "tokenRewardInfo",
"type": "tuple",
"components": [
{
"name": "lpTokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorReward",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creator",
"type": "tuple",
"components": [
{
"name": "admin",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct ILpLockerv2.RewardRecipient"
},
{
"name": "interfacer",
"type": "tuple",
"components": [
{
"name": "admin",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct ILpLockerv2.RewardRecipient"
}
],
"internalType": "struct ILpLockerv2.TokenRewardInfo"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "collectRewards",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "creatorTokenIds",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getLpTokenIdsForCreator",
"type": "function",
"inputs": [
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setOverrideTeamRewardRecipientForToken",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newTeamRecipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "teamOverrideRewardRecipientForToken",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "teamRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "tokenRewards",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "lpTokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorReward",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creator",
"type": "tuple",
"components": [
{
"name": "admin",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct ILpLockerv2.RewardRecipient"
},
{
"name": "interfacer",
"type": "tuple",
"components": [
{
"name": "admin",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct ILpLockerv2.RewardRecipient"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateCreatorRewardAdmin",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newAdmin",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateCreatorRewardRecipient",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newRecipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateInterfaceRewardAdmin",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newAdmin",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateInterfaceRewardRecipient",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newRecipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateTeamRecipient",
"type": "function",
"inputs": [
{
"name": "newRecipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "version",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "withdrawERC20",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawETH",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60a080604052346101c7576080816121f4803803809161001f82856101f1565b8339810103126101c75761003281610228565b61003e60208301610228565b90610057606061005060408601610228565b9401610228565b906001600160a01b031680156101de575f80546001600160a01b031981168317825560405194602094869460049486949293926001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600280546001600160a01b039283166001600160a01b03199182168117909255600180549a84169a82169a909a179099556003805493909216929098168217905563fa3ebd0160e01b8252955afa9081156101d3575f9161019d575b5080608052801561018e576014810180911161017a5760640361016b571561015c57604051611fb7908161023d823960805181818161013b0152818161078701526110fb0152f35b634c8372a160e11b5f5260045ffd5b630e96c16960e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b631a5221c360e11b5f5260045ffd5b90506020813d6020116101cb575b816101b8602093836101f1565b810103126101c757515f610114565b5f80fd5b3d91506101ab565b6040513d5f823e3d90fd5b631e4fbdf760e01b5f525f60045260245ffd5b601f909101601f19168101906001600160401b0382119082101761021457604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c75756fe6080806040526004361015610012575f80fd5b5f3560e01c9081630af50d8914611ce7575080630b7f008c146119ae5780630fdd25d6146118c957806310eee7341461181b57806313949da014611745578063150b7a021461164357806324887710146115395780633201b11e146114d757806337ad4d8b146114a457806354fd4d501461141157806358444129146113f6578063680e9f3814611335578063690d8320146112dc5780636fb3656614610f90578063715018a614610f14578063791b98bc14610ee15780638da5cb5b14610eaf5780639456fbcc14610d70578063b18486d7146104ad578063c45a01551461047a578063cade97af1461036f578063e0d1e2c314610230578063f2fde38b146101625763fa3ebd0114610124575f80fd5b3461015e575f60031936011261015e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b3461015e57602060031936011261015e5773ffffffffffffffffffffffffffffffffffffffff610190611d46565b610198611f35565b1680156102045773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461015e57604060031936011261015e5760043561024c611d23565b9073ffffffffffffffffffffffffffffffffffffffff5f54163314158061034d575b61032157805f5260056020527f738c56464623de6f60d29c92993e87611767748914c7d99fef999de27dc7bad0602073ffffffffffffffffffffffffffffffffffffffff60405f20541693835f526005825260405f2073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff60405191168152a3005b7ffa5cd00f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b5073ffffffffffffffffffffffffffffffffffffffff6002541633141561026e565b3461015e57604060031936011261015e5760043561038b611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f206040516103b981611d69565b815481526001820154602082015260606103e860046103da60028601611e0f565b946040850195865201611e0f565b9101525151163303610321575f8181526004602090815260409182902060030180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f8b82c83824d9033277aa41c543b5e53662a3b944a80fdc9b01ff1b7a4d737ca291a3005b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461015e57602060031936011261015e57600435805f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2054168015610d51575b815f52600460205273ffffffffffffffffffffffffffffffffffffffff600360405f20015416918215610d48575b805f52600460205273ffffffffffffffffffffffffffffffffffffffff600560405f200154168015610d41575b73ffffffffffffffffffffffffffffffffffffffff6001541660405161056b81611d69565b8381526fffffffffffffffffffffffffffffffff60208201308152816040840181815273ffffffffffffffffffffffffffffffffffffffff6060860193838552604051967ffc6f78650000000000000000000000000000000000000000000000000000000088525160048801525116602486015251166044840152511660648201526040816084815f865af1908115610971575f905f92610d02575b50610180602493604051948580927f99fbab880000000000000000000000000000000000000000000000000000000082528960048301525afa928315610971575f905f94610c28575b5073ffffffffffffffffffffffffffffffffffffffff809116931690855f526004602052600160405f200154916014820282810460141483151715610bfb576064900493601481029181830460141482151715610bfb576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152602481018790526064909304966020846044815f855af19384156109715761076994610bde575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c1660048201526024810189905293602090859081906044820190565b03815f865af1928315610971578c948994610bc1575b50875f965f987f000000000000000000000000000000000000000000000000000000000000000081145f146109975750916107ca6107c260209361082295611e87565b968792611e87565b9660405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561097157858e6108949360209361097c575b5060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f875af1801561097157610942575b505b6040519a73ffffffffffffffffffffffffffffffffffffffff168b5260208b015260408a01526060890152608088015260a087015260c086015260e085015261010084015273ffffffffffffffffffffffffffffffffffffffff169273ffffffffffffffffffffffffffffffffffffffff16916101207ff18d15fcfcdd756d5e1fe9c0379d1f5acb552fdf231bc052916d1817b4b941e591a4005b6109639060203d60201161096a575b61095b8183611dce565b810190611ebe565b508c6108a5565b503d610951565b6040513d5f823e3d90fd5b61099290843d861161096a5761095b8183611dce565b61083c565b6109dd949950819398506109d2929750806109d26064806109bf6109d7956109c99c97611f22565b04998a938d611f22565b04998a96611e87565b611e87565b97611e87565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481018690529095906020816044815f865af1801561097157610ba4575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481018790526020816044815f875af1801561097157848e610afd9360209361097c575060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561097157858e610b6e9360209361097c575060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f875af1801561097157610b85575b506108a7565b610b9d9060203d60201161096a5761095b8183611dce565b508c610b7f565b610bbc9060203d60201161096a5761095b8183611dce565b610a3e565b610bd99060203d60201161096a5761095b8183611dce565b61077f565b610bf69060203d60201161096a5761095b8183611dce565b610710565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b935050610180833d8211610cfa575b81610c456101809383611dce565b8101031261015e5782516bffffffffffffffffffffffff81160361015e57610c6f60208401611ed6565b50610c7c60408401611ed6565b610c8860608501611ed6565b93608081015162ffffff81160361015e5773ffffffffffffffffffffffffffffffffffffffff91610cf261016083610cc360a0879601611ef7565b50610cd060c08201611ef7565b50610cdd60e08201611f05565b50610ceb6101408201611f05565b5001611f05565b509150610650565b3d9150610c37565b929150506040823d604011610d39575b81610d1f60409383611dce565b8101031261015e5781516020909201519091610180610607565b3d9150610d12565b5081610546565b91508091610519565b5073ffffffffffffffffffffffffffffffffffffffff600354166104eb565b3461015e57604060031936011261015e57610d89611d46565b73ffffffffffffffffffffffffffffffffffffffff610da6611d23565b91610daf611f35565b1690604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa918215610971575f92610e79575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810191909152906020908290815f81604481015b03925af1801561097157610e5f57005b610e779060203d60201161096a5761095b8183611dce565b005b91506020823d602011610ea7575b81610e9460209383611dce565b8101031261015e57905190610e4f610df5565b3d9150610e87565b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461015e575f60031936011261015e57610f2c611f35565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461015e5760c060031936011261015e57604051610fad81611d69565b60043581526020810190602435825260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc36011261015e5760405191610ff383611db2565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361015e57835260643573ffffffffffffffffffffffffffffffffffffffff8116810361015e5760208401526040820192835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261015e576040519161107883611db2565b60843573ffffffffffffffffffffffffffffffffffffffff8116810361015e57835260a43573ffffffffffffffffffffffffffffffffffffffff8116810361015e5760208401526060810192835273ffffffffffffffffffffffffffffffffffffffff6002541633036103215780515f52600460205260405f20546112b05781517f0000000000000000000000000000000000000000000000000000000000000000811180156112a8575b61127d57507fa825a93a934d13b1aa1603bb96058f0fe57f01306803bd7df2c8b259ccf8d5b79173ffffffffffffffffffffffffffffffffffffffff8083604094515f52600460205281855f20825181558551600182015589519082825116836002830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905582602083015116836003830191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558260058160208d5182815116836004880191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055015116920191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905551165f526006602052611264855f20825190611e94565b51925196515116945151169482519182526020820152a3005b7f55a71794000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b508015611123565b517fab51f9c7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461015e57602060031936011261015e575f8080806112f9611d46565b611301611f35565b47908290821561132b575b73ffffffffffffffffffffffffffffffffffffffff1690f11561097157005b6108fc915061130c565b3461015e57602060031936011261015e5773ffffffffffffffffffffffffffffffffffffffff611363611d46565b165f52600660205260405f20604051806020835491828152019081935f5260205f20905f5b8181106113e0575050508161139e910382611dce565b604051918291602083019060208452518091526040830191905f5b8181106113c7575050500390f35b82518452859450602093840193909201916001016113b9565b8254845260209093019260019283019201611388565b3461015e575f60031936011261015e57602060405160148152f35b3461015e575f60031936011261015e5760405161142d81611db2565b60058152604060208201917f302e302e3200000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b3461015e57604060031936011261015e576114f0611d46565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20805482101561015e5760209161152a91611e45565b90549060031b1c604051908152f35b3461015e57604060031936011261015e57600435611555611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff606060405f206115b060046040519261158b84611d69565b80548452600181015460208501526115a560028201611e0f565b604085015201611e0f565b918291015251163303610321575f8181526004602081815260409283902090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f81c087afd6e0515c84a3516ff82c92e261554d53c3e85ed966d4405df38ebb5a91a3005b3461015e57608060031936011261015e5761165c611d46565b50611665611d23565b60643567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e573691016024011161015e5773ffffffffffffffffffffffffffffffffffffffff8060025416911690810361171a577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460206040516044358152a260206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b7ffa5cd00f000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461015e57602060031936011261015e5761175e611d46565b611766611f35565b73ffffffffffffffffffffffffffffffffffffffff600354911690817fffffffffffffffffffffffff000000000000000000000000000000000000000082161760035581156117f357602073ffffffffffffffffffffffffffffffffffffffff7f9c8d2fbc53c8a056ff82dd9584168baaa1205b29a5236d0f57f280606bb9c89a926040519485521692a2005b7f9906e542000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461015e57602060031936011261015e576004355f52600460205260c060405f206118c781549161189b600182015491611863600461185c60028401611e0f565b9201611e0f565b926040519586526020860152604085019073ffffffffffffffffffffffffffffffffffffffff60208092828151168552015116910152565b608083019073ffffffffffffffffffffffffffffffffffffffff60208092828151168552015116910152565bf35b3461015e57604060031936011261015e576004356118e5611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff606060405f2061191b60046040519261158b84611d69565b918291015251163303610321575f8181526004602090815260409182902060050180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f34c04f2dce83f7e45ef1b0c14cdb5dea1c3f7dcaf9bdf0f0965a5c7d12911a2691a3005b3461015e57604060031936011261015e576004356119ca611d23565b90805f52600460205260405f2090604051926119e584611d69565b8254845260018301546020850152611a126004611a0460028601611e0f565b946040870195865201611e0f565b606085015273ffffffffffffffffffffffffffffffffffffffff8351511633036103215773ffffffffffffffffffffffffffffffffffffffff835151165f52600660205260405f20545f5b818110611b18575b8584611a9673ffffffffffffffffffffffffffffffffffffffff861692835f52600660205260405f20905190611e94565b5f8181526004602090815260409182902060020180547fffffffffffffffffffffffff000000000000000000000000000000000000000081168617909155915193845273ffffffffffffffffffffffffffffffffffffffff909116927fb3f139d249876e05e0c358b24a29fbba14f5a620809b85bf6de5e6db0edf217c9190a3005b73ffffffffffffffffffffffffffffffffffffffff855151165f526006602052611b458160405f20611e45565b90549060031b1c865114611b5b57600101611a5d565b73ffffffffffffffffffffffffffffffffffffffff85929394955151165f52600660205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938411610bfb57611bf0611bd373ffffffffffffffffffffffffffffffffffffffff95611c2694611e45565b90549060031b1c9185855151165f52600660205260405f20611e45565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b5151165f52600660205260405f20908154908115611cba57611a96927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff930190611c858282611e45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b1916905555908392611a65565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b3461015e57602060031936011261015e576020906004355f526005825273ffffffffffffffffffffffffffffffffffffffff60405f2054168152f35b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b6080810190811067ffffffffffffffff821117611d8557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff821117611d8557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d8557604052565b90604051611e1c81611db2565b602073ffffffffffffffffffffffffffffffffffffffff60018395828154168552015416910152565b8054821015611e5a575f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908203918211610bfb57565b9081549168010000000000000000831015611d855782611bf0916001611ebc95018155611e45565b565b9081602091031261015e5751801515810361015e5790565b519073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b51908160020b820361015e57565b51906fffffffffffffffffffffffffffffffff8216820361015e57565b81810292918115918404141715610bfb57565b73ffffffffffffffffffffffffffffffffffffffff5f54163303611f5557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffdfea264697066735822122046e7ae804b2b149596ca6854b0755b9983ed7431aac12ec23781098e2900faf564736f6c634300081c003300000000000000000000000068e2958c76fd1578105d93f81c3dc9c91e0c4088000000000000000000000000e769d832934f0a196a25e5c7b69cdf1920bc773400000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d30000000000000000000000005f51c19aaf77365a605c14beb037fea0589b522d
0x6080806040526004361015610012575f80fd5b5f3560e01c9081630af50d8914611ce7575080630b7f008c146119ae5780630fdd25d6146118c957806310eee7341461181b57806313949da014611745578063150b7a021461164357806324887710146115395780633201b11e146114d757806337ad4d8b146114a457806354fd4d501461141157806358444129146113f6578063680e9f3814611335578063690d8320146112dc5780636fb3656614610f90578063715018a614610f14578063791b98bc14610ee15780638da5cb5b14610eaf5780639456fbcc14610d70578063b18486d7146104ad578063c45a01551461047a578063cade97af1461036f578063e0d1e2c314610230578063f2fde38b146101625763fa3ebd0114610124575f80fd5b3461015e575f60031936011261015e5760206040517f00000000000000000000000000000000000000000000000000000000000000508152f35b5f80fd5b3461015e57602060031936011261015e5773ffffffffffffffffffffffffffffffffffffffff610190611d46565b610198611f35565b1680156102045773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461015e57604060031936011261015e5760043561024c611d23565b9073ffffffffffffffffffffffffffffffffffffffff5f54163314158061034d575b61032157805f5260056020527f738c56464623de6f60d29c92993e87611767748914c7d99fef999de27dc7bad0602073ffffffffffffffffffffffffffffffffffffffff60405f20541693835f526005825260405f2073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff60405191168152a3005b7ffa5cd00f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b5073ffffffffffffffffffffffffffffffffffffffff6002541633141561026e565b3461015e57604060031936011261015e5760043561038b611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f206040516103b981611d69565b815481526001820154602082015260606103e860046103da60028601611e0f565b946040850195865201611e0f565b9101525151163303610321575f8181526004602090815260409182902060030180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f8b82c83824d9033277aa41c543b5e53662a3b944a80fdc9b01ff1b7a4d737ca291a3005b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461015e57602060031936011261015e57600435805f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2054168015610d51575b815f52600460205273ffffffffffffffffffffffffffffffffffffffff600360405f20015416918215610d48575b805f52600460205273ffffffffffffffffffffffffffffffffffffffff600560405f200154168015610d41575b73ffffffffffffffffffffffffffffffffffffffff6001541660405161056b81611d69565b8381526fffffffffffffffffffffffffffffffff60208201308152816040840181815273ffffffffffffffffffffffffffffffffffffffff6060860193838552604051967ffc6f78650000000000000000000000000000000000000000000000000000000088525160048801525116602486015251166044840152511660648201526040816084815f865af1908115610971575f905f92610d02575b50610180602493604051948580927f99fbab880000000000000000000000000000000000000000000000000000000082528960048301525afa928315610971575f905f94610c28575b5073ffffffffffffffffffffffffffffffffffffffff809116931690855f526004602052600160405f200154916014820282810460141483151715610bfb576064900493601481029181830460141482151715610bfb576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152602481018790526064909304966020846044815f855af19384156109715761076994610bde575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c1660048201526024810189905293602090859081906044820190565b03815f865af1928315610971578c948994610bc1575b50875f965f987f000000000000000000000000000000000000000000000000000000000000005081145f146109975750916107ca6107c260209361082295611e87565b968792611e87565b9660405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561097157858e6108949360209361097c575b5060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f875af1801561097157610942575b505b6040519a73ffffffffffffffffffffffffffffffffffffffff168b5260208b015260408a01526060890152608088015260a087015260c086015260e085015261010084015273ffffffffffffffffffffffffffffffffffffffff169273ffffffffffffffffffffffffffffffffffffffff16916101207ff18d15fcfcdd756d5e1fe9c0379d1f5acb552fdf231bc052916d1817b4b941e591a4005b6109639060203d60201161096a575b61095b8183611dce565b810190611ebe565b508c6108a5565b503d610951565b6040513d5f823e3d90fd5b61099290843d861161096a5761095b8183611dce565b61083c565b6109dd949950819398506109d2929750806109d26064806109bf6109d7956109c99c97611f22565b04998a938d611f22565b04998a96611e87565b611e87565b97611e87565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481018690529095906020816044815f865af1801561097157610ba4575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481018790526020816044815f875af1801561097157848e610afd9360209361097c575060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561097157858e610b6e9360209361097c575060405193849283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f875af1801561097157610b85575b506108a7565b610b9d9060203d60201161096a5761095b8183611dce565b508c610b7f565b610bbc9060203d60201161096a5761095b8183611dce565b610a3e565b610bd99060203d60201161096a5761095b8183611dce565b61077f565b610bf69060203d60201161096a5761095b8183611dce565b610710565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b935050610180833d8211610cfa575b81610c456101809383611dce565b8101031261015e5782516bffffffffffffffffffffffff81160361015e57610c6f60208401611ed6565b50610c7c60408401611ed6565b610c8860608501611ed6565b93608081015162ffffff81160361015e5773ffffffffffffffffffffffffffffffffffffffff91610cf261016083610cc360a0879601611ef7565b50610cd060c08201611ef7565b50610cdd60e08201611f05565b50610ceb6101408201611f05565b5001611f05565b509150610650565b3d9150610c37565b929150506040823d604011610d39575b81610d1f60409383611dce565b8101031261015e5781516020909201519091610180610607565b3d9150610d12565b5081610546565b91508091610519565b5073ffffffffffffffffffffffffffffffffffffffff600354166104eb565b3461015e57604060031936011261015e57610d89611d46565b73ffffffffffffffffffffffffffffffffffffffff610da6611d23565b91610daf611f35565b1690604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa918215610971575f92610e79575b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810191909152906020908290815f81604481015b03925af1801561097157610e5f57005b610e779060203d60201161096a5761095b8183611dce565b005b91506020823d602011610ea7575b81610e9460209383611dce565b8101031261015e57905190610e4f610df5565b3d9150610e87565b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461015e575f60031936011261015e57610f2c611f35565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461015e5760c060031936011261015e57604051610fad81611d69565b60043581526020810190602435825260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc36011261015e5760405191610ff383611db2565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361015e57835260643573ffffffffffffffffffffffffffffffffffffffff8116810361015e5760208401526040820192835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261015e576040519161107883611db2565b60843573ffffffffffffffffffffffffffffffffffffffff8116810361015e57835260a43573ffffffffffffffffffffffffffffffffffffffff8116810361015e5760208401526060810192835273ffffffffffffffffffffffffffffffffffffffff6002541633036103215780515f52600460205260405f20546112b05781517f0000000000000000000000000000000000000000000000000000000000000050811180156112a8575b61127d57507fa825a93a934d13b1aa1603bb96058f0fe57f01306803bd7df2c8b259ccf8d5b79173ffffffffffffffffffffffffffffffffffffffff8083604094515f52600460205281855f20825181558551600182015589519082825116836002830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905582602083015116836003830191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558260058160208d5182815116836004880191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055015116920191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905551165f526006602052611264855f20825190611e94565b51925196515116945151169482519182526020820152a3005b7f55a71794000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b508015611123565b517fab51f9c7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461015e57602060031936011261015e575f8080806112f9611d46565b611301611f35565b47908290821561132b575b73ffffffffffffffffffffffffffffffffffffffff1690f11561097157005b6108fc915061130c565b3461015e57602060031936011261015e5773ffffffffffffffffffffffffffffffffffffffff611363611d46565b165f52600660205260405f20604051806020835491828152019081935f5260205f20905f5b8181106113e0575050508161139e910382611dce565b604051918291602083019060208452518091526040830191905f5b8181106113c7575050500390f35b82518452859450602093840193909201916001016113b9565b8254845260209093019260019283019201611388565b3461015e575f60031936011261015e57602060405160148152f35b3461015e575f60031936011261015e5760405161142d81611db2565b60058152604060208201917f302e302e3200000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461015e575f60031936011261015e57602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b3461015e57604060031936011261015e576114f0611d46565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20805482101561015e5760209161152a91611e45565b90549060031b1c604051908152f35b3461015e57604060031936011261015e57600435611555611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff606060405f206115b060046040519261158b84611d69565b80548452600181015460208501526115a560028201611e0f565b604085015201611e0f565b918291015251163303610321575f8181526004602081815260409283902090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f81c087afd6e0515c84a3516ff82c92e261554d53c3e85ed966d4405df38ebb5a91a3005b3461015e57608060031936011261015e5761165c611d46565b50611665611d23565b60643567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e573691016024011161015e5773ffffffffffffffffffffffffffffffffffffffff8060025416911690810361171a577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460206040516044358152a260206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b7ffa5cd00f000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461015e57602060031936011261015e5761175e611d46565b611766611f35565b73ffffffffffffffffffffffffffffffffffffffff600354911690817fffffffffffffffffffffffff000000000000000000000000000000000000000082161760035581156117f357602073ffffffffffffffffffffffffffffffffffffffff7f9c8d2fbc53c8a056ff82dd9584168baaa1205b29a5236d0f57f280606bb9c89a926040519485521692a2005b7f9906e542000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461015e57602060031936011261015e576004355f52600460205260c060405f206118c781549161189b600182015491611863600461185c60028401611e0f565b9201611e0f565b926040519586526020860152604085019073ffffffffffffffffffffffffffffffffffffffff60208092828151168552015116910152565b608083019073ffffffffffffffffffffffffffffffffffffffff60208092828151168552015116910152565bf35b3461015e57604060031936011261015e576004356118e5611d23565b90805f52600460205273ffffffffffffffffffffffffffffffffffffffff606060405f2061191b60046040519261158b84611d69565b918291015251163303610321575f8181526004602090815260409182902060050180547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff968716908117909255925190815291909316927f34c04f2dce83f7e45ef1b0c14cdb5dea1c3f7dcaf9bdf0f0965a5c7d12911a2691a3005b3461015e57604060031936011261015e576004356119ca611d23565b90805f52600460205260405f2090604051926119e584611d69565b8254845260018301546020850152611a126004611a0460028601611e0f565b946040870195865201611e0f565b606085015273ffffffffffffffffffffffffffffffffffffffff8351511633036103215773ffffffffffffffffffffffffffffffffffffffff835151165f52600660205260405f20545f5b818110611b18575b8584611a9673ffffffffffffffffffffffffffffffffffffffff861692835f52600660205260405f20905190611e94565b5f8181526004602090815260409182902060020180547fffffffffffffffffffffffff000000000000000000000000000000000000000081168617909155915193845273ffffffffffffffffffffffffffffffffffffffff909116927fb3f139d249876e05e0c358b24a29fbba14f5a620809b85bf6de5e6db0edf217c9190a3005b73ffffffffffffffffffffffffffffffffffffffff855151165f526006602052611b458160405f20611e45565b90549060031b1c865114611b5b57600101611a5d565b73ffffffffffffffffffffffffffffffffffffffff85929394955151165f52600660205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938411610bfb57611bf0611bd373ffffffffffffffffffffffffffffffffffffffff95611c2694611e45565b90549060031b1c9185855151165f52600660205260405f20611e45565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b5151165f52600660205260405f20908154908115611cba57611a96927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff930190611c858282611e45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b1916905555908392611a65565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b3461015e57602060031936011261015e576020906004355f526005825273ffffffffffffffffffffffffffffffffffffffff60405f2054168152f35b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b6080810190811067ffffffffffffffff821117611d8557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff821117611d8557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d8557604052565b90604051611e1c81611db2565b602073ffffffffffffffffffffffffffffffffffffffff60018395828154168552015416910152565b8054821015611e5a575f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908203918211610bfb57565b9081549168010000000000000000831015611d855782611bf0916001611ebc95018155611e45565b565b9081602091031261015e5751801515810361015e5790565b519073ffffffffffffffffffffffffffffffffffffffff8216820361015e57565b51908160020b820361015e57565b51906fffffffffffffffffffffffffffffffff8216820361015e57565b81810292918115918404141715610bfb57565b73ffffffffffffffffffffffffffffffffffffffff5f54163303611f5557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffdfea264697066735822122046e7ae804b2b149596ca6854b0755b9983ed7431aac12ec23781098e2900faf564736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 | |
| Uniswap V3 Positions NFT-V1 (UNI-V3-POS) | UNI-V3-POS | 76 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xa1e21d…ee7b38 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xf18d15…41e5 | [0] 0x000000000000…000271e6 [1] 0x000000000000…c64355bb [2] 0x000000000000…87b737b1 data: 0x000000000000000000…6a9611b4 |
| 0x048b3e…405b20 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xf18d15…41e5 | [0] 0x000000000000…00070961 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…6cda5db6 |
| 0xd82829…cafbd7 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xf18d15…41e5 | [0] 0x000000000000…00078ca3 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…ffaf3ebc |
| 0x33dabd…1885e9 | 17 days agoFri, 31 Jul 2026 13:54:03 UTC | 0xf18d15…41e5 | [0] 0x000000000000…00026b06 [1] 0x000000000000…dd3d118f [2] 0x000000000000…87b737b1 data: 0x000000000000000000…2360c175 |
| 0x0a28f6…d7f299 | 18 days agoThu, 30 Jul 2026 04:10:04 UTC | 0xf18d15…41e5 | [0] 0x000000000000…000321cf [1] 0x000000000000…a35b0a76 [2] 0x000000000000…87b737b1 data: 0x000000000000000000…eb0dab60 |
| 0x06d0af…2ccd52 | 18 days agoWed, 29 Jul 2026 21:21:05 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| 0x06d0af…2ccd52 | 18 days agoWed, 29 Jul 2026 21:21:05 UTC | 0x88a596…5874 | [0] 0x000000000000…20bc7734 data: 0x000000000000000000…00078d09 |
| 0x1085ba…6e9cbb | 18 days agoWed, 29 Jul 2026 21:13:05 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| 0x1085ba…6e9cbb | 18 days agoWed, 29 Jul 2026 21:13:05 UTC | 0x88a596…5874 | [0] 0x000000000000…20bc7734 data: 0x000000000000000000…00078ca3 |
| 0x5210a7…d26fba | 19 days agoWed, 29 Jul 2026 00:28:42 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0007339c [1] 0x000000000000…87b737b1 [2] 0x000000000000…87b737b1 data: 0x000000000000000000…00000000 |
| 0x71d4b5…5da293 | 19 days agoWed, 29 Jul 2026 00:28:04 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0007339c [1] 0x000000000000…87b737b1 [2] 0x000000000000…87b737b1 data: 0x000000000000000000…e9ba58a4 |
| 0xafbb66…e1eef3 | 19 days agoTue, 28 Jul 2026 22:05:48 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| 0xafbb66…e1eef3 | 19 days agoTue, 28 Jul 2026 22:05:48 UTC | 0x88a596…5874 | [0] 0x000000000000…20bc7734 data: 0x000000000000000000…0007339c |
| 0x8e108f…c02142 | 20 days agoTue, 28 Jul 2026 14:52:49 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| 0x8e108f…c02142 | 20 days agoTue, 28 Jul 2026 14:52:49 UTC | 0x88a596…5874 | [0] 0x000000000000…20bc7734 data: 0x000000000000000000…00070961 |
| 0x0a2c10…fa5fa1 | 21 days agoMon, 27 Jul 2026 16:16:01 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0003f536 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…612fe1ed |
| 0xb26943…5421d6 | 21 days agoMon, 27 Jul 2026 16:15:51 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0003c0fd [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…1b6f4c59 |
| 0x6e848a…3b00d5 | 21 days agoMon, 27 Jul 2026 16:14:55 UTC | 0xf18d15…41e5 | [0] 0x000000000000…000302ce [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…7c362d87 |
| 0xed38f4…1a67c1 | 21 days agoMon, 27 Jul 2026 16:14:46 UTC | 0xf18d15…41e5 | [0] 0x000000000000…00030210 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…00000000 |
| 0xeb724e…abdc38 | 21 days agoMon, 27 Jul 2026 16:14:39 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0002ff88 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…0badf7d7 |
| 0x2ca93e…015d23 | 21 days agoMon, 27 Jul 2026 16:13:39 UTC | 0xf18d15…41e5 | [0] 0x000000000000…0004df40 [1] 0x000000000000…d25e86bd [2] 0x000000000000…87b737b1 data: 0x000000000000000000…c171810a |
| 0x5cbc3d…a94bf8 | 23 days agoSat, 25 Jul 2026 15:08:54 UTC | 0xf18d15…41e5 | [0] 0x000000000000…00026b06 [1] 0x000000000000…dd3d118f [2] 0x000000000000…87b737b1 data: 0x000000000000000000…59b3cf9f |
| 0xad0f64…3812a9 | 23 days agoSat, 25 Jul 2026 03:19:22 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| 0xad0f64…3812a9 | 23 days agoSat, 25 Jul 2026 03:19:22 UTC | 0x88a596…5874 | [0] 0x000000000000…20bc7734 data: 0x000000000000000000…0005bec7 |
| 0x772ea9…dff5ab | 26 days agoWed, 22 Jul 2026 18:28:09 UTC | 0xa825a9…d5b7 | [0] 0x000000000000…87b737b1 [1] 0x000000000000…87b737b1 data: 0x000000000000000000…0000003c |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| no transactions indexed for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x06d0af2a…2ccd52 | Transfer | 22,772,582 | 18 days agoWed, 29 Jul 2026 21:21:05 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #494857 | |
| 0x1085baeb…6e9cbb | Transfer | 22,767,788 | 18 days agoWed, 29 Jul 2026 21:13:05 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #494755 | |
| 0xafbb66d9…e1eef3 | Transfer | 21,937,487 | 19 days agoTue, 28 Jul 2026 22:05:48 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #471964 | |
| 0x8e108fb1…c02142 | Transfer | 21,678,368 | 20 days agoTue, 28 Jul 2026 14:52:49 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #461153 | |
| 0xad0f640e…3812a9 | Transfer | 18,682,076 | 23 days agoSat, 25 Jul 2026 03:19:22 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #376519 | |
| 0x772ea9b8…dff5ab | Transfer | 16,640,945 | 26 days agoWed, 22 Jul 2026 18:28:09 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #319296 | |
| 0x33daf38d…b56a75 | Transfer | 15,044,793 | 27 days agoMon, 20 Jul 2026 22:02:19 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #259382 | |
| 0xaaad103f…d5c91d | Transfer | 14,714,959 | 28 days agoMon, 20 Jul 2026 12:51:36 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #246013 | |
| 0x9fdc6641…2d583a | Transfer | 14,228,633 | 28 days agoSun, 19 Jul 2026 23:17:41 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #236955 | |
| 0x7a20e67d…9fcc86 | Transfer | 13,719,046 | 29 days agoSun, 19 Jul 2026 09:04:38 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #224322 | |
| 0xbcd86219…abff80 | Transfer | 13,714,642 | 29 days agoSun, 19 Jul 2026 08:57:14 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #224276 | |
| 0xa44ad71e…c10c2a | Transfer | 12,611,774 | 30 days agoSat, 18 Jul 2026 02:11:20 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #205263 | |
| 0x7f53c489…89b7de | Transfer | 12,599,200 | 30 days agoSat, 18 Jul 2026 01:50:20 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #205069 | |
| 0xce3e0650…549773 | Transfer | 12,508,990 | 30 days agoFri, 17 Jul 2026 23:19:39 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #202545 | |
| 0x8b3c30a5…1d9f3b | Transfer | 12,335,832 | 31 days agoFri, 17 Jul 2026 18:30:23 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #197326 | |
| 0x8783c9fc…da8492 | Transfer | 12,329,809 | 31 days agoFri, 17 Jul 2026 18:20:18 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #197136 | |
| 0x8004d904…922fc0 | Transfer | 12,323,089 | 31 days agoFri, 17 Jul 2026 18:09:05 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #196937 | |
| 0x8ab49803…311311 | Transfer | 12,311,437 | 31 days agoFri, 17 Jul 2026 17:49:37 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #196488 | |
| 0xeead986b…122e78 | Transfer | 12,122,963 | 31 days agoFri, 17 Jul 2026 12:34:41 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #190829 | |
| 0xbe04f615…d35e4f | Transfer | 11,712,077 | 31 days agoFri, 17 Jul 2026 01:07:13 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #182699 | |
| 0xbcc501c8…b834b9 | Transfer | 11,571,384 | 31 days agoThu, 16 Jul 2026 21:12:29 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #178101 | |
| 0x6d58d7b9…77d321 | Transfer | 11,562,861 | 31 days agoThu, 16 Jul 2026 20:58:17 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #177718 | |
| 0x33554e23…2d86de | Transfer | 11,336,677 | 32 days agoThu, 16 Jul 2026 14:40:55 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #168958 | |
| 0x5082358b…ebe5b0 | Transfer | 11,260,273 | 32 days agoThu, 16 Jul 2026 12:34:02 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #166793 | |
| 0xf526f22d…458068 | Transfer | 11,256,252 | 32 days agoThu, 16 Jul 2026 12:27:19 UTC | 0xe769…7734 | IN | 0xdf54…4a4c | Transfer | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #166692 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0xca5d…55bb | $NaN3,260,928.607421 JUGGERNAUT | JUGGERNAUT (JUGGERNAUT) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0xca5d…55bb | 0 WETH | WETH (WETH) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | $NaN1,086,976.202473 JUGGERNAUT | JUGGERNAUT (JUGGERNAUT) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | 0 WETH | WETH (WETH) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | $NaN1,086,976.202473 JUGGERNAUT | JUGGERNAUT (JUGGERNAUT) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | 0 WETH | WETH (WETH) | |
| 0xa1e21dee…ee7b38 | Transfer | 36,492,728 | 3 days agoFri, 14 Aug 2026 19:09:14 UTC | 0x058c…53b1 | IN | 0xdf54…4a4c | $NaN5,434,881.012369 JUGGERNAUT | JUGGERNAUT (JUGGERNAUT) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x42ea…86bd | 60,837,037.970590 gTIBBIR | gtibbir (gTIBBIR) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x42ea…86bd | 0.001162 WETH | WETH (WETH) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | 20,279,012.656863 gTIBBIR | gtibbir (gTIBBIR) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | 0.000387 WETH | WETH (WETH) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | 20,279,012.656863 gTIBBIR | gtibbir (gTIBBIR) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | 0.000387 WETH | WETH (WETH) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0x67fd…054d | IN | 0xdf54…4a4c | 101,395,063.284317 gTIBBIR | gtibbir (gTIBBIR) | |
| 0x048b3e41…405b20 | Transfer | 26,965,635 | 14 days agoMon, 03 Aug 2026 18:07:51 UTC | 0x67fd…054d | IN | 0xdf54…4a4c | 0.001937 WETH | WETH (WETH) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x42ea…86bd | 28,939,287.421765 WFI | WonderFi (WFI) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x42ea…86bd | 0.000560 WETH | WETH (WETH) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | 9,646,429.140588 WFI | WonderFi (WFI) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x792e…37b1 | 0.000186 WETH | WETH (WETH) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | 9,646,429.140588 WFI | WonderFi (WFI) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xdf54…4a4c | OUT | 0x5f51…522d | 0.000186 WETH | WETH (WETH) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xaef5…9f4f | IN | 0xdf54…4a4c | 48,232,145.702941 WFI | WonderFi (WFI) | |
| 0xd828297e…cafbd7 | Transfer | 26,965,441 | 14 days agoMon, 03 Aug 2026 18:07:31 UTC | 0xaef5…9f4f | IN | 0xdf54…4a4c | 0.000934 WETH | WETH (WETH) | |
| 0x33dabd91…1885e9 | Transfer | 24,228,478 | 17 days agoFri, 31 Jul 2026 13:54:03 UTC | 0xdf54…4a4c | OUT | 0x5f29…118f | $NaN205,474,665.303025 ROSIE | ||
| 0x33dabd91…1885e9 | Transfer | 24,228,478 | 17 days agoFri, 31 Jul 2026 13:54:03 UTC | 0xdf54…4a4c | OUT | 0x5f29…118f | 0.008886 WETH | WETH (WETH) |