// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
/*//////////////////////////////////////////////////////////////////////////
UpBurnLaunchFactory — forked from Up33LaunchFactory (up33.xyz / onlyuprbh.com)
on Robinhood Chain (4663).
One-sided CL (v3/Slipstream) token launcher with a Pons-style
buyback-and-hold fee model:
- Deploys a fixed-supply, no-tax ERC-20 (100% of supply to the pool).
- Creates + initializes the up33 CL pool at a starting FDV/mcap given
in ETH (wei) via the NonfungiblePositionManager (Slipstream-style
mint() that auto-creates the pool from sqrtPriceX96).
- Mints a ONE-SIDED position (all tokens, zero WETH) from the starting
price up to the max usable tick (or down to min if WETH < token).
- The LP NFT is custodied by THIS factory forever. No function to
withdraw or decrease liquidity — permanently locked.
FEES (claimFees) — swap fees accrued on the locked position split as:
50% -> converted to UP (via the UP/WETH CL pool) and HELD in the
factory (buyback-and-hold, no vesting); the owner transfers
it out later via withdrawUp()
25% -> token creator (dev fee recipient, rotatable by the dev)
25% -> team fee vault (vaultFeeRecipient, rotatable by owner)
If the UP conversion fails (thin pool / price impact), the 50% share
folds back 50/50 into the creator + team vault legs (raw fee token),
mirroring Pons' fold-back — it can never brick a claim.
Up33 / Robinhood Chain constants:
CL (v3) pool factory 0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3
v3 position manager 0x07F44c47743A2f36414A82b9F558ECFCf0EEdCEf
WETH 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
UP 0x57C0E45cB534413D1C20A4240955d6bB250BB4F1
UP/WETH pool (ts200) 0x23d641feccd207e8794c593e8240444a0674c4ba
//////////////////////////////////////////////////////////////////////////*/
// ---------------------------------------------------------------------------
// Minimal interfaces
// ---------------------------------------------------------------------------
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
interface ICLFactory {
function getPool(address tokenA, address tokenB, int24 tickSpacing) external view returns (address);
function tickSpacingToFee(int24 tickSpacing) external view returns (uint24);
}
interface ICLPool {
function slot0()
external
view
returns (
uint160 sqrtPriceX96,
int24 tick,
uint16 observationIndex,
uint16 observationCardinality,
uint16 observationCardinalityNext,
bool unlocked
);
function swap(
address recipient,
bool zeroForOne,
int256 amountSpecified,
uint160 sqrtPriceLimitX96,
bytes calldata data
) external returns (int256 amount0, int256 amount1);
}
interface INonfungiblePositionManager {
struct MintParams {
address token0;
address token1;
int24 tickSpacing;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
uint256 amount0Min;
uint256 amount1Min;
address recipient;
uint256 deadline;
uint160 sqrtPriceX96; // Slipstream: creates+initializes pool if it does not exist
}
struct CollectParams {
uint256 tokenId;
address recipient;
uint128 amount0Max;
uint128 amount1Max;
}
function mint(MintParams calldata params)
external
payable
returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
function collect(CollectParams calldata params)
external
payable
returns (uint256 amount0, uint256 amount1);
}
// ---------------------------------------------------------------------------
// Launch token: fixed supply, 18 decimals, no tax, no owner, no mint/burn
// ---------------------------------------------------------------------------
contract LaunchToken is IERC20 {
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
constructor(string memory _name, string memory _symbol, uint256 _supply, address _to) {
name = _name;
symbol = _symbol;
totalSupply = _supply;
balanceOf[_to] = _supply;
emit Transfer(address(0), _to, _supply);
}
function transfer(address to, uint256 amount) external returns (bool) {
return _transfer(msg.sender, to, amount);
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 allowed = allowance[from][msg.sender];
if (allowed != type(uint256).max) {
require(allowed >= amount, "allowance");
allowance[from][msg.sender] = allowed - amount;
}
return _transfer(from, to, amount);
}
function approve(address spender, uint256 amount) external returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) internal returns (bool) {
require(balanceOf[from] >= amount, "balance");
unchecked {
balanceOf[from] -= amount;
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
return true;
}
}
// ---------------------------------------------------------------------------
// Math libraries (Uniswap V3 FullMath + getSqrtRatioAtTick, 0.8 ports)
// ---------------------------------------------------------------------------
library FullMath {
/// @notice floor(a*b/denominator) with full 512-bit intermediate precision
function mulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {
unchecked {
uint256 prod0;
uint256 prod1;
assembly {
let mm := mulmod(a, b, not(0))
prod0 := mul(a, b)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
if (prod1 == 0) {
require(denominator > 0);
assembly {
result := div(prod0, denominator)
}
return result;
}
require(denominator > prod1);
uint256 remainder;
assembly {
remainder := mulmod(a, b, denominator)
}
assembly {
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
uint256 twos = denominator & (~denominator + 1);
assembly {
denominator := div(denominator, twos)
}
assembly {
prod0 := div(prod0, twos)
}
assembly {
twos := add(div(sub(0, twos), twos), 1)
}
prod0 |= prod1 * twos;
uint256 inv = (3 * denominator) ^ 2;
inv *= 2 - denominator * inv;
inv *= 2 - denominator * inv;
inv *= 2 - denominator * inv;
inv *= 2 - denominator * inv;
inv *= 2 - denominator * inv;
inv *= 2 - denominator * inv;
result = prod0 * inv;
return result;
}
}
}
library TickMath {
int24 internal constant MAX_TICK = 887272;
uint160 internal constant MIN_SQRT_RATIO = 4295128739;
uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;
/// @notice sqrt(1.0001^tick) * 2^96
function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
unchecked {
uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
require(absTick <= uint256(int256(MAX_TICK)), "T");
uint256 ratio = absTick & 0x1 != 0
? 0xfffcb933bd6fad37aa2d162d1a594001
: 0x100000000000000000000000000000000;
if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;
if (tick > 0) ratio = type(uint256).max / ratio;
sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
}
}
}
// ---------------------------------------------------------------------------
// Factory (fork)
// ---------------------------------------------------------------------------
contract UpBurnLaunchFactory {
// ----- Robinhood Chain constants -----
address public constant NFPM = 0x07F44c47743A2f36414A82b9F558ECFCf0EEdCEf;
address public constant CL_FACTORY = 0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3;
address public constant WETH = 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73;
address public constant UP = 0x57C0E45cB534413D1C20A4240955d6bB250BB4F1;
address public constant UP_WETH_POOL = 0x23D641FeCcD207E8794c593e8240444A0674C4Ba;
// ----- fee model: 50% UP buyback-and-hold / 25% creator / 25% team vault -----
uint256 public constant HOLD_BPS = 5000;
uint256 public constant CREATOR_BPS = 2500;
uint256 public constant VAULT_BPS = 2500;
/// @dev max price impact on the UP conversions: 2% (98/100 or 102/100)
uint256 public constant SLIP_BPS = 200;
// ----- launch defaults (hardcoded) -----
/// @dev fixed fee tier: tick spacing 2000 = 1.00% (base fee)
int24 public constant TICK_SPACING = 2000;
/// @dev fixed total supply: 1,000,000,000 tokens (18 decimals)
uint256 public constant SUPPLY = 1_000_000_000e18;
/// @dev fixed starting mcap: 1 ETH (wei)
uint256 public constant START_MCAP_WEI = 1e18;
/// @dev dev pre-buy cap: 5% of the token supply
uint256 public constant MAX_DEV_BUY_BPS = 500;
/// @dev flat deployment fee: 0.001 ETH, forwarded to the team vault
uint256 public constant DEPLOY_FEE_WEI = 0.001 ether;
struct Launch {
address pool;
uint256 tokenId;
bool tokenIs0;
int24 tickSpacing;
}
struct TokenMeta {
string logoURI; // ipfs:// CID (Pinata)
string x; // twitter/x profile url
string website;
}
address public owner;
address public vaultFeeRecipient;
mapping(address => Launch) public launches; // token => launch info
mapping(address => TokenMeta) public tokenMeta; // token => launch metadata (logo/x/website)
mapping(address => address) public devFeeRecipient; // token => dev fee recipient
address[] public allTokens;
event TokenLaunched(
address indexed token,
address indexed pool,
uint256 indexed tokenId,
address dev,
uint256 supply,
uint256 startMcapWei,
uint160 sqrtPriceX96,
int24 tickLower,
int24 tickUpper
);
event FeesClaimed(address indexed token, uint256 tokenAmount, uint256 wethAmount);
event UpHeld(address indexed feeToken, uint256 upAmount);
event LockFoldedBack(address indexed feeToken, uint256 amount);
event TokenMetaSet(address indexed token, string logoURI, string x, string website);
event DevFeeRecipientSet(address indexed token, address indexed recipient);
event VaultFeeRecipientSet(address indexed recipient);
event OwnerSet(address indexed owner);
modifier onlyOwner() {
require(msg.sender == owner, "not owner");
_;
}
constructor(address vaultFeeRecipient_) {
require(vaultFeeRecipient_ != address(0), "zero");
owner = msg.sender;
vaultFeeRecipient = vaultFeeRecipient_;
}
// ------------------------------------------------------------------
// Launch
// ------------------------------------------------------------------
/// @dev Create a token with hardcoded launch params:
/// supply = 1B, start mcap = 1 ETH, fee tier = 1% (ts 2000).
/// @param name token name
/// @param symbol token symbol
/// @param dev dev fee recipient (address(0) => msg.sender)
/// @param devBuyBps dev pre-buy share of supply, max 500 (5%);
/// dev pays ETH = startMcapWei * devBuyBps / 10000
/// (msg.value), which goes to the team vault.
/// @param logoURI ipfs:// photo CID (Pinata)
/// @param x twitter/x profile url
/// @param website project website
function launch(
string calldata name,
string calldata symbol,
address dev,
uint256 devBuyBps,
string calldata logoURI,
string calldata x,
string calldata website
) external payable returns (address token, address pool, uint256 tokenId) {
uint256 supply = SUPPLY;
uint256 startMcapWei = START_MCAP_WEI;
int24 tickSpacing = TICK_SPACING;
require(devBuyBps <= MAX_DEV_BUY_BPS, "dev buy >5%");
uint256 devAmount = (supply * devBuyBps) / 10000;
uint256 poolSupply = supply - devAmount;
// msg.value = 0.001 ETH deploy fee + optional dev pre-buy ETH
require(
msg.value == DEPLOY_FEE_WEI + (startMcapWei * devBuyBps) / 10000,
"fee + dev buy"
);
require(poolSupply > 0, "params");
token = address(new LaunchToken(name, symbol, supply, address(this)));
bool tokenIs0 = token < WETH;
int24 maxUsable = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;
int24 tickLower;
int24 tickUpper;
uint160 sqrtPriceX96;
if (tokenIs0) {
// price (token1/token0) = WETH per token = mcap / supply
uint256 target = _sqrt(FullMath.mulDiv(startMcapWei, 1 << 192, supply));
require(target >= TickMath.MIN_SQRT_RATIO && target <= TickMath.MAX_SQRT_RATIO, "price range");
// smallest spacing multiple with ratio >= target; init exactly on it
tickLower = _snapUp(uint160(target), tickSpacing, maxUsable);
tickUpper = maxUsable;
require(tickLower < tickUpper, "range");
sqrtPriceX96 = TickMath.getSqrtRatioAtTick(tickLower);
} else {
// price (token1/token0) = token per WETH = supply / mcap
uint256 target = _sqrt(FullMath.mulDiv(supply, 1 << 192, startMcapWei));
require(target >= TickMath.MIN_SQRT_RATIO && target <= TickMath.MAX_SQRT_RATIO, "price range");
// largest spacing multiple with ratio <= target; init exactly on it
tickUpper = _snapDown(uint160(target), tickSpacing, maxUsable);
tickLower = -maxUsable;
require(tickLower < tickUpper, "range");
sqrtPriceX96 = TickMath.getSqrtRatioAtTick(tickUpper);
}
address devRecipient = dev == address(0) ? msg.sender : dev;
if (devAmount > 0) {
// dev pre-buy: tokens at launch price
require(IERC20(token).transfer(devRecipient, devAmount), "xfer");
}
// deploy fee (0.001 ETH) + optional dev pre-buy ETH -> team vault
(bool ok, ) = vaultFeeRecipient.call{value: msg.value}("");
require(ok, "vault eth");
IERC20(token).approve(NFPM, poolSupply);
(address token0, address token1) = tokenIs0 ? (token, WETH) : (WETH, token);
uint256 amount0;
uint256 amount1;
(tokenId, , amount0, amount1) = INonfungiblePositionManager(NFPM).mint(
INonfungiblePositionManager.MintParams({
token0: token0,
token1: token1,
tickSpacing: tickSpacing,
tickLower: tickLower,
tickUpper: tickUpper,
amount0Desired: tokenIs0 ? poolSupply : 0,
amount1Desired: tokenIs0 ? 0 : poolSupply,
amount0Min: 0,
amount1Min: 0,
recipient: address(this),
deadline: block.timestamp,
sqrtPriceX96: sqrtPriceX96 // creates + initializes the pool
})
);
// sanity: position must be pure token-side (no WETH pulled)
require(tokenIs0 ? amount1 == 0 : amount0 == 0, "not one-sided");
pool = ICLFactory(CL_FACTORY).getPool(token0, token1, tickSpacing);
require(pool != address(0), "no pool");
launches[token] = Launch({pool: pool, tokenId: tokenId, tokenIs0: tokenIs0, tickSpacing: tickSpacing});
tokenMeta[token] = TokenMeta({logoURI: logoURI, x: x, website: website});
devFeeRecipient[token] = devRecipient;
allTokens.push(token);
emit TokenLaunched(
token, pool, tokenId, devRecipient, supply, startMcapWei, sqrtPriceX96, tickLower, tickUpper
);
emit TokenMetaSet(token, logoURI, x, website);
}
// ------------------------------------------------------------------
// Fees: permissionless claim, 50% UP buyback-and-hold / 25% creator / 25% vault
// ------------------------------------------------------------------
function claimFees(address token) external returns (uint256 tokenAmount, uint256 wethAmount) {
Launch memory l = launches[token];
require(l.pool != address(0), "unknown token");
(uint256 amount0, uint256 amount1) = INonfungiblePositionManager(NFPM).collect(
INonfungiblePositionManager.CollectParams({
tokenId: l.tokenId,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
})
);
(tokenAmount, wethAmount) = l.tokenIs0 ? (amount0, amount1) : (amount1, amount0);
address dev = devFeeRecipient[token];
if (tokenAmount > 0) _splitFees(token, tokenAmount, dev);
if (wethAmount > 0) _splitFees(WETH, wethAmount, dev);
emit FeesClaimed(token, tokenAmount, wethAmount);
}
/// @dev pull the held UP (50% buyback leg) out of the factory. Owner only.
function withdrawUp(address to, uint256 amount) external onlyOwner {
require(to != address(0), "zero");
require(IERC20(UP).transfer(to, amount), "xfer");
}
/// @dev split one fee side: 50% UP hold / 25% creator / 25% team vault.
function _splitFees(address feeToken, uint256 total, address dev) internal {
uint256 holdShare = (total * HOLD_BPS) / 10000;
uint256 devShare = (total * CREATOR_BPS) / 10000;
uint256 vaultShare = total - holdShare - devShare; // 25% + rounding remainder
if (holdShare > 0) _holdLeg(feeToken, holdShare, dev);
if (devShare > 0) require(IERC20(feeToken).transfer(dev, devShare), "xfer");
if (vaultShare > 0) require(IERC20(feeToken).transfer(vaultFeeRecipient, vaultShare), "xfer");
}
/// @dev 50% leg: convert fee token to UP and hold it in the factory.
/// Best-effort (try/catch); on failure folds back 50/50 into the
/// creator + team vault legs (raw fee token) — Pons-style, so a
/// thin pool can never brick the whole claim.
function _holdLeg(address feeToken, uint256 amount, address dev) internal {
try this._swapAndHold(feeToken, amount) {
// UP held in the factory (buyback-and-hold)
} catch {
uint256 half = amount / 2;
if (half > 0) require(IERC20(feeToken).transfer(dev, half), "xfer");
require(IERC20(feeToken).transfer(vaultFeeRecipient, amount - half), "xfer");
emit LockFoldedBack(feeToken, amount);
}
}
/// @dev external self-call so try/catch can observe conversion failures.
/// Swaps the fee leg to UP and KEEPS it in the factory (buyback-and-hold).
/// The owner pulls it out later via withdrawUp().
function _swapAndHold(address feeToken, uint256 amountIn) external {
require(msg.sender == address(this), "self");
uint256 upOut;
if (feeToken == WETH) {
upOut = _swapExactIn(UP_WETH_POOL, address(this), true, amountIn, WETH);
} else {
Launch memory l = launches[feeToken];
require(l.pool != address(0), "no pool");
// 1) sell launched token for WETH on its own pool (fee token is
// token0 when tokenIs0, else token1)
uint256 wethGot = _swapExactIn(l.pool, address(this), l.tokenIs0, amountIn, feeToken);
require(wethGot > 0, "no weth");
// 2) sell WETH for UP
upOut = _swapExactIn(UP_WETH_POOL, address(this), true, wethGot, WETH);
}
require(upOut > 0, "no up");
emit UpHeld(feeToken, upOut);
}
/// @dev exact-in swap on a Slipstream CL pool; callback pays tokenIn to the pool
function _swapExactIn(
address pool,
address recipient,
bool zeroForOne,
uint256 amountIn,
address tokenIn
) internal returns (uint256 out) {
(uint160 sqrtPriceX96, , , , , ) = ICLPool(pool).slot0();
// limit 2% away in the trade direction (zeroForOne => price falls)
uint160 limit = zeroForOne
? uint160((uint256(sqrtPriceX96) * (10000 - SLIP_BPS)) / 10000)
: uint160((uint256(sqrtPriceX96) * (10000 + SLIP_BPS)) / 10000);
require(zeroForOne ? limit < sqrtPriceX96 : limit > sqrtPriceX96, "lim");
(int256 amount0, int256 amount1) =
ICLPool(pool).swap(recipient, zeroForOne, int256(amountIn), limit, abi.encode(pool, tokenIn));
out = zeroForOne ? uint256(-amount1) : uint256(-amount0);
}
/// @dev the pool calls back here; only known pools may pull the input token
function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external {
(address pool, address tokenIn) = abi.decode(data, (address, address));
if (pool == UP_WETH_POOL) {
require(tokenIn == WETH, "bad token");
} else {
Launch memory l = launches[tokenIn];
require(l.pool != address(0) && l.pool == pool, "bad pool");
require(ICLFactory(CL_FACTORY).getPool(tokenIn, WETH, l.tickSpacing) == pool, "bad pool2");
}
uint256 pay = amount0Delta > 0 ? uint256(amount0Delta) : uint256(amount1Delta);
require(IERC20(tokenIn).transfer(msg.sender, pay), "xfer");
}
// ------------------------------------------------------------------
// Admin / rotation
// ------------------------------------------------------------------
function setOwner(address newOwner) external onlyOwner {
require(newOwner != address(0), "zero");
owner = newOwner;
emit OwnerSet(newOwner);
}
function setVaultFeeRecipient(address recipient) external onlyOwner {
require(recipient != address(0), "zero");
vaultFeeRecipient = recipient;
emit VaultFeeRecipientSet(recipient);
}
function setDevFeeRecipient(address token, address recipient) external {
require(msg.sender == devFeeRecipient[token], "not dev");
require(recipient != address(0), "zero");
devFeeRecipient[token] = recipient;
emit DevFeeRecipientSet(token, recipient);
}
function allTokensLength() external view returns (uint256) {
return allTokens.length;
}
/// @dev accept LP NFTs minted via safe transfer paths
function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {
return this.onERC721Received.selector;
}
// ------------------------------------------------------------------
// Internal math
// ------------------------------------------------------------------
/// @dev smallest multiple of `spacing` (as a tick) whose sqrt ratio >= target
function _snapUp(uint160 target, int24 spacing, int24 maxUsable) private pure returns (int24) {
int24 maxK = maxUsable / spacing;
require(TickMath.getSqrtRatioAtTick(maxK * spacing) >= target, "mcap too high");
int24 lo = -maxK;
int24 hi = maxK;
while (lo < hi) {
int24 mid = lo + (hi - lo) / 2;
if (TickMath.getSqrtRatioAtTick(mid * spacing) >= target) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo * spacing;
}
/// @dev largest multiple of `spacing` (as a tick) whose sqrt ratio <= target
function _snapDown(uint160 target, int24 spacing, int24 maxUsable) private pure returns (int24) {
int24 maxK = maxUsable / spacing;
require(TickMath.getSqrtRatioAtTick(-maxK * spacing) <= target, "mcap too low");
int24 lo = -maxK;
int24 hi = maxK;
while (lo < hi) {
int24 mid = lo + (hi - lo + 1) / 2;
if (TickMath.getSqrtRatioAtTick(mid * spacing) <= target) {
lo = mid;
} else {
hi = mid - 1;
}
}
return lo * spacing;
}
function _sqrt(uint256 x) private pure returns (uint256 y) {
if (x == 0) return 0;
uint256 z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "vaultFeeRecipient_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "DevFeeRecipientSet",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FeesClaimed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "wethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LockFoldedBack",
"type": "event",
"inputs": [
{
"name": "feeToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnerSet",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "TokenLaunched",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "dev",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "supply",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "startMcapWei",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sqrtPriceX96",
"type": "uint160",
"indexed": false,
"internalType": "uint160"
},
{
"name": "tickLower",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"indexed": false,
"internalType": "int24"
}
],
"anonymous": false
},
{
"name": "TokenMetaSet",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "logoURI",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "x",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "website",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "UpHeld",
"type": "event",
"inputs": [
{
"name": "feeToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "upAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "VaultFeeRecipientSet",
"type": "event",
"inputs": [
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "CL_FACTORY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "CREATOR_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "DEPLOY_FEE_WEI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "HOLD_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_DEV_BUY_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "NFPM",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "SLIP_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "START_MCAP_WEI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TICK_SPACING",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "UP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "UP_WETH_POOL",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "VAULT_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "WETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "_swapAndHold",
"type": "function",
"inputs": [
{
"name": "feeToken",
"type": "address",
"internalType": "address"
},
{
"name": "amountIn",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allTokens",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "allTokensLength",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "wethAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "devFeeRecipient",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "launch",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "dev",
"type": "address",
"internalType": "address"
},
{
"name": "devBuyBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "logoURI",
"type": "string",
"internalType": "string"
},
{
"name": "x",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "launches",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenIs0",
"type": "bool",
"internalType": "bool"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "setDevFeeRecipient",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setOwner",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setVaultFeeRecipient",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "tokenMeta",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "logoURI",
"type": "string",
"internalType": "string"
},
{
"name": "x",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "uniswapV3SwapCallback",
"type": "function",
"inputs": [
{
"name": "amount0Delta",
"type": "int256",
"internalType": "int256"
},
{
"name": "amount1Delta",
"type": "int256",
"internalType": "int256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "vaultFeeRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "withdrawUp",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60803460ad57601f613e1438819003918201601f19168301916001600160401b0383118484101760b15780849260209460405283398101031260ad57516001600160a01b0381169081900360ad5780156082575f80546001600160a01b0319908116331790915560018054909116919091179055604051613d4e90816100c68239f35b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f803560e01c806313af40351461282a578063150b7a02146127d457806315a0ea6a14611ebb5780631f2d855014611e5157806324f4ec5114611e22578063283b3a2114611de15780632f28452c14611db257806333bbacd914611d2357806345904567146109ea57806346ca626b14611d065780634845c54814611cd757806352b5aefa14611cba578063634282af14611c765780636b2712b414611c59578063836e9e2514611c3657806388a33aec14611b6c57806388e2a98e14611af15780638da5cb5b14611aca578063a2418395146109ef578063a5424df3146109ea578063ad5c4648146109c2578063c380b2741461091a578063c38bedf5146108f1578063c50497ae146108cb578063ce56de8e146108af578063dbb80e4214610891578063dd0bbd3a1461086f578063e3ee93bd14610486578063e70dd6cf146104575763fa461e3314610164575f80fd5b34610454576060366003190112610454576004356044356001600160401b0381116104505761019960409136906004016128d7565b9080929181010312610450576101ba60206101b383612cc3565b9201612cc3565b6001600160a01b0390811691167323d641feccd207e8794c593e8240444a0674c4ba81036102d557505f80516020613cd983398151915281036102a45761023360209184935b8481131561029b575b60405163a9059cbb60e01b8152336004820152602481019190915293849283919082906044820190565b03925af18015610290578290610251575b61024e9150612beb565b80f35b506020813d602011610288575b8161026b6020938361296b565b810103126102845761027f61024e91612bde565b610244565b5080fd5b3d915061025e565b6040513d84823e3d90fd5b50602435610209565b60405162461bcd60e51b81526020600482015260096024820152683130b2103a37b5b2b760b91b6044820152606490fd5b818452600260205260408420604051906102ee8261293c565b6060600260018060a01b03835416928385526001810154602086015201549260ff841615156040820152019160081c60020b8252828115159182610446575b505015610416575160020b604051906328af8d0b60e01b82528360048301525f80516020613cd983398151915260248301526044820152602081606481731ac9db4a2608ba45d6127b1737949b51bb54b7f35afa90811561040b5785916103dc575b506001600160a01b0316036103ab576102336020918493610200565b60405162461bcd60e51b81526020600482015260096024820152683130b2103837b7b61960b91b6044820152606490fd5b6103fe915060203d602011610404575b6103f6818361296b565b810190612c38565b5f61038f565b503d6103ec565b6040513d87823e3d90fd5b60405162461bcd60e51b8152602060048201526008602482015267189859081c1bdbdb60c21b6044820152606490fd5b149050825f61032d565b8280fd5b80fd5b50346104545780600319360112610454576020604051731ac9db4a2608ba45d6127b1737949b51bb54b7f38152f35b5034610454576040366003190112610454576104a06128ab565b60243590303303610844576001600160a01b0316905f80516020613cd98339815191528203610534576104d39030613131565b80156105075760207f22528f9198856b2bbd498eb8741c329ab108326db04d31d9f1d08ed7ce06afca91604051908152a280f35b60405162461bcd60e51b815260206004820152600560248201526406e6f2075760dc1b6044820152606490fd5b81835260026020526040832060405161054c8161293c565b61058b600260018060a01b038454169384845260018101546020850152015492604083019360ff81161515855260081c60020b60608401521515612c57565b519051604051633850c7bd60e01b8152901515926001600160a01b039092169160c082600481865afa9182156108395786926107a9575b508315610764576001600160a01b036127106105df848316612b02565b0416915b8415610750576001600160a01b03908116908316105b15610725576106649260409287845193836020860152888686015285855261062260608661296b565b855196879586948593630251596160e31b85523060048601528b6024860152604485015260018060a01b0316606484015260a0608484015260a4830190612a2c565b03925af191821561071a57849185936106db575b50156106cc575061068890613121565b801561069d576106989030613131565b6104d3565b60405162461bcd60e51b81526020600482015260076024820152660dcde40eecae8d60cb1b6044820152606490fd5b6106d69150613121565b610688565b915091506040813d604011610712575b816106f86040938361296b565b8101031261070e5760208151910151915f610678565b8380fd5b3d91506106eb565b6040513d86823e3d90fd5b60405162461bcd60e51b81526020600482015260036024820152626c696d60e81b6044820152606490fd5b6001600160a01b03908116908316116105f9565b6127d86001600160a01b0383168181029181159183041417156107955761271090046001600160a01b0316916105e3565b634e487b7160e01b87526011600452602487fd5b90915060c0813d60c011610831575b816107c560c0938361296b565b8101031261082d578051906001600160a01b03821682036108295760208101518060020b036108295760a08161080060406108219401613112565b5061080d60608201613112565b5061081a60808201613112565b5001612bde565b50905f6105c2565b8680fd5b8580fd5b3d91506107b8565b6040513d88823e3d90fd5b606460405162461bcd60e51b815260206004820152600460248201526339b2b63360e11b6044820152fd5b5034610454578060031936011261045457602060405166038d7ea4c680008152f35b50346104545780600319360112610454576020600554604051908152f35b5034610454578060031936011261045457602060405160c88152f35b50346104545780600319360112610454576020604051676765c793fa10079d601b1b8152f35b50346104545780600319360112610454576001546040516001600160a01b039091168152602090f35b50346104545760403660031901126104545761099260206109396128ab565b61094d60018060a01b038554163314612a98565b6109616001600160a01b0382161515612ad0565b60405163a9059cbb60e01b81526001600160a01b039091166004820152602480359082015291829081906044820190565b0381857357c0e45cb534413d1c20a4240955d6bb250bb4f15af180156102905782906102515761024e9150612beb565b503461045457806003193601126104545760206040515f80516020613cd98339815191528152f35b612a50565b5060e0366003190112610454576004356001600160401b03811161028457610a1b9036906004016128d7565b6024356001600160401b03811161070e57610a3a9036906004016128d7565b9093604435929091906001600160a01b038416840361045057606435956084356001600160401b038111611ac657610a769036906004016128d7565b92909660a4356001600160401b03811161082957610a989036906004016128d7565b91909260c4356001600160401b038111611ac257610aba9036906004016128d7565b9590976101f48d11611a8f578c676765c793fa10079d601b1b9d8e029d8e0481036119b257676765c793fa10079d601b1b6127108f048103116119b25780670de0b6b3a76400000290670de0b6b3a76400008204036119b257612710900466038d7ea4c68000018066038d7ea4c68000116119b2573403611a5a576127108d04676765c793fa10079d601b1b14611a2c57604051936109f993848601948686106001600160401b03871117611a185786959492610b979492610b89926132e08939608087526080870191612b27565b918483036020860152612b27565b90676765c793fa10079d601b1b6040820152606030910152039087f096871561083957610bc56101bb612b47565b5f80516020613cd98339815191526001600160a01b038a1610156118a957610c0174044b82fa09b5a52cb98b405447c4a98187eebb22f0612cd7565b6401000276a38110158061188b575b610c1990612b5d565b6107d0600283900b05906001600160a01b03908116908190610c42610c3d85612b47565b612d88565b161061185657610c5182612b97565b915b8060020b8360020b1261180b575050610c6b90612b47565b610c7c8260020b8260020b12612baa565b610c8581612d88565b925b6001600160a01b038116611805575033925b8a8d8b6127108204611775575b808093508092503460018060a01b03600154165af13d15611770573d610ccb81612c1d565b90610cd9604051928361296b565b81528b60203d92013e5b1561173f578a60206127108f6044908e604051958694859363095ea7b360e01b85527307f44c47743a2f36414a82b9f558ecfcf0eedcef600486015204676765c793fa10079d601b1b03602484015260018060a01b03165af180156115f2576116f8575b508a8a809c9d9e5f80516020613cd983398151915260018060a01b038416105f146116d6576001600160a01b038316925f80516020613cd9833981519152928391905b6001600160a01b0382168311156116d057506127108304676765c793fa10079d601b1b039f5b506001600160a01b031610156116b957508b5b6040519d8e61018081019081106001600160401b038211176116a557908f91604052600160a01b6001900385168252600160a01b6001900384166020830152604082016107d090528660020b60608301528760020b608083015260a082015260c001528b8d8160e082015261010001528c309061012001528c429061014001528c600160a01b600190038416906101600152604051809d63b5007d1f60e01b8252600160a01b600190038151166004830152600160a01b600190036020820151166024830152604081015160020b6044830152606081015160020b6064830152608081015160020b608483015260a081015160a483015260c081015160c483015260e081015160e4830152610100810151610104830152600160a01b6001900361012082015116610124830152610140810151610144830152600160a01b60019003906101600151169061016401528c808d5a92610184917307f44c47743a2f36414a82b9f558ecfcf0eedcef608095f1801561169a578c8f819f829361163a575b505f80516020613cd98339815191526001600160a01b0390911610156116325750155b156115fd576040516328af8d0b60e01b81526001600160a01b039283166004820152911660248201526107d06044820152602081606481731ac9db4a2608ba45d6127b1737949b51bb54b7f35afa9081156115f2578b916115d3575b506001600160a01b031699610fda8b1515612c57565b8b8d60028d60405190610fec8261293c565b81526020810193845260408101935f80516020613cd983398151915260018060a01b03851610855260608201936107d0855260018060a01b0316865282602052604086209160018060a01b039060018060a01b03905116166bffffffffffffffffffffffff60a01b83541617825551600182015501915115159060ff8354915160081b63ffffff001692169063ffffffff191617179055604051606081018181106001600160401b038211176115bf57908f8f92906110b0916040528c3691612c8d565b81526110bd36898b612c8d565b602082019081526110cf368c8f612c8d565b60408381019182526001600160a01b039094168552600360205292842091518051906001600160401b0382116114ee57819061110b8554612904565b601f811161156f575b50602090601f831160011461150d578792611502575b50508160011b915f199060031b1c19161782555b51805160018301916001600160401b0382116114ee5761115e8354612904565b601f81116114a9575b50602090601f831160011461144357600294939291879183611438575b50508160011b915f199060031b1c19161790555b0190518051906001600160401b0382116114245781906111b88454612904565b601f81116113d4575b50602090601f8311600114611372578592611367575b50508160011b915f199060031b1c19161790555b6001600160a01b038d8116825260046020526040822080546001600160a01b031916918716919091179055600554906801000000000000000082101561135357508a60609e98957fcf74bdcbe7289db73ff708466716fd711af7c1eeaf8abb1d1079a16fc268e5238f8f949061131b987ffd83936f21556a9468b12efd654a1cad63116d7e158898e98be164cbe17c60489e9c986113369c9861129685600160c09701600555612a6c565b81546001600160a01b0396871660039290921b82811b9088901b1990911617909155604080519886168952676765c793fa10079d601b1b60208a0152670de0b6b3a76400009089015293166060870152600290810b60808701520b60a085015292a461130d6040519788978f89528f890191612b27565b918683036020880152612b27565b83810360408501526001600160a01b038a1696909190612b27565b0390a26040519260018060a01b0316835260208301526040820152f35b634e487b7160e01b81526041600452602490fd5b015190505f806111d7565b8486528186209250601f198416865b8181106113bc57509084600195949392106113a4575b505050811b0190556111eb565b01515f1960f88460031b161c191690555f8080611397565b92936020600181928786015181550195019301611381565b90915083855260208520601f840160051c8101916020851061141a575b90601f859493920160051c01905b81811061140c57506111c1565b8681558493506001016113ff565b90915081906113f1565b634e487b7160e01b84526041600452602484fd5b015190505f80611184565b8387528187209190601f198416885b818110611491575091600193918560029897969410611479575b505050811b019055611198565b01515f1960f88460031b161c191690555f808061146c565b92936020600181928786015181550195019301611452565b83875260208720601f840160051c810191602085106114e4575b601f0160051c01905b8181106114d95750611167565b8781556001016114cc565b90915081906114c3565b634e487b7160e01b86526041600452602486fd5b015190505f8061112a565b8588528188209250601f198416885b818110611557575090846001959493921061153f575b505050811b01825561113e565b01515f1960f88460031b161c191690555f8080611532565b9293602060018192878601518155019501930161151c565b90915084875260208720601f840160051c810191602085106115b5575b90601f859493920160051c01905b8181106115a75750611114565b88815584935060010161159a565b909150819061158c565b634e487b7160e01b83526041600452602483fd5b6115ec915060203d602011610404576103f6818361296b565b5f610fc4565b6040513d8d823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081bdb994b5cda591959609a1b6044820152606490fd5b905015610f68565b9f5050505060808d3d608011611692575b816116586080938361296b565b8101031261168e578c5160208e01516001600160801b0381160361168a5760408e01516060909e0151909d8f8e610f45565b8c80fd5b8b80fd5b3d915061164b565b6040513d8e823e3d90fd5b634e487b7160e01b8f52604160045260248ffd5b6127109004676765c793fa10079d601b1b03610dc3565b9f610db0565b5f80516020613cd9833981519152926001600160a01b03811692849190610d8a565b6020813d602011611737575b816117116020938361296b565b81010312611733579a8a819d9e611728829e612bde565b509e9d9c5050610d47565b8a80fd5b3d9150611704565b60405162461bcd60e51b81526020600482015260096024820152680ecc2ead8e840cae8d60bb1b6044820152606490fd5b610ce3565b60405163a9059cbb60e01b81526001600160a01b03888116600483015261271090930460248201529260209284926044928492165af180156115f2578b906117ca575b6117c29150612beb565b8a8d8b610ca6565b506020813d6020116117fd575b816117e46020938361296b565b81010312611733576117f86117c291612bde565b6117b8565b3d91506117d7565b92610c99565b611823600261181a8584612d32565b810b0584612d6a565b90826001600160a01b03611839610c3d85612b47565b16106118455750610c53565b925061185090612d4f565b91610c53565b60405162461bcd60e51b815260206004820152600d60248201526c0dac6c2e040e8dede40d0d2ced609b1b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d26811115610c10565b6118b8621dcd6560c91b612cd7565b6401000276a3811015806119fa575b6118d090612b5d565b6107d0600283900b05906001600160a01b039081169081906118fc610c3d6118f786612b97565b612b47565b16116119c65761190b82612b97565b91905b8160020b8360020b1261194f57505061192961192f91612b47565b91612b97565b6119408260020b8260020b12612baa565b61194982612d88565b92610c87565b909161197160026119686119638487612d32565b612d4f565b810b0582612d6a565b90826001600160a01b03611987610c3d85612b47565b16116119965750915b9061190e565b925060020b5f1901627fffff198112627fffff82131715611990575b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152600c60248201526b6d63617020746f6f206c6f7760a01b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d268111156118c7565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c666565202b206465762062757960981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a64657620627579203e352560a81b6044820152606490fd5b8880fd5b8480fd5b5034610454578060031936011261045457546040516001600160a01b039091168152602090f35b503461045457602036600319011261045457611b0b6128ab565b611b1f60018060a01b038354163314612a98565b6001600160a01b0316611b33811515612ad0565b600180546001600160a01b031916821790557f51147c0622f96c2c6a034f0c8637a7c06a1368dc9c9e479968febf72750b3d4f8280a280f35b503461045457604036600319011261045457611b866128ab565b611b8e6128c1565b6001600160a01b03918216808452600460205260408420549092163303611c07576001600160a01b031690611bc4821515612ad0565b80835260046020526040832080546001600160a01b031916831790557fdc59cbf41951869b8df903918660f35d1fa9bfdda04bb5ceba487e0ea28995708380a380f35b60405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b6044820152606490fd5b50346104545780600319360112610454576020604051670de0b6b3a76400008152f35b503461045457806003193601126104545760206040516113888152f35b50346104545760203660031901126104545760043590600554821015610454576020611ca183612a6c565b905460405160039290921b1c6001600160a01b03168152f35b503461045457806003193601126104545760206040516101f48152f35b503461045457806003193601126104545760206040517323d641feccd207e8794c593e8240444a0674c4ba8152f35b503461045457806003193601126104545760206040516107d08152f35b503461045457602036600319011261045457611d92906040906001600160a01b03611d4c6128ab565b168152600360205220611dae611d618261298c565b91611da0611d7d6002611d766001850161298c565b930161298c565b91604051958695606087526060870190612a2c565b908582036020870152612a2c565b908382036040850152612a2c565b0390f35b503461045457806003193601126104545760206040517307f44c47743a2f36414a82b9f558ecfcf0eedcef8152f35b5034610454576020366003190112610454576020906001600160a01b03611e066128ab565b16815260048252604060018060a01b0391205416604051908152f35b503461045457806003193601126104545760206040517357c0e45cb534413d1c20a4240955d6bb250bb4f18152f35b5034610454576020366003190112610454576080906040906001600160a01b03611e796128ab565b16815260026020522060018060a01b03815416906002600182015491015490604051928352602083015260ff81161515604083015260081c60020b6060820152f35b503461273b57602036600319011261273b57611ed56128ab565b6001600160a01b0381165f81815260026020526040908190209051929190611efc8461293c565b60018060a01b038154168085526002600183015492602087019384520154946060604082019660ff81161515885260081c60020b9101521561279f575160405190611f468261293c565b815230602082019081526001600160801b03604080840182815260608501838152825163fc6f786560e01b81529551600487015293516001600160a01b0316602486015251821660448501529151166064830152816084815f7307f44c47743a2f36414a82b9f558ecfcf0eedcef5af1938415612794575f915f95612759575b5051156127535792915b5f828152600460205260409020546001600160a01b03169084158015612414575b5050821590811561203d575b5050604093507f1ac537f0ad67b64ac68a04587ff3a4cb6977de22eb2c37ee560897a92c6d07c7848051858152846020820152a282519182526020820152f35b611388840284810461138814831715610795576127109004916109c48502908582046109c4141715610795576127109004906120828261207d8588612b1a565b612b1a565b92806121e1575b508161214b575b50508061209e575b80611ffd565b60015460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152602081604481885f80516020613cd98339815191525af194851561213f5780956120fe575b50506120f8604094612beb565b5f612098565b9094506020853d602011612137575b8161211a6020938361296b565b8101031261045457506120f8612131604095612bde565b946120eb565b3d915061210d565b604051903d90823e3d90fd5b60405163a9059cbb60e01b81526001600160a01b039190911660048201526024810191909152602081604481895f80516020613cd98339815191525af180156108395786906121a6575b61219f9150612beb565b5f80612090565b506020813d6020116121d9575b816121c06020938361296b565b8101031261082d576121d461219f91612bde565b612195565b3d91506121b3565b303b156124105760405163e3ee93bd60e01b81525f80516020613cd983398151915260048201526024810182905288808260448183305af191826123fb575b50506123f5578060011c9081612340575b60015461227d926020916001600160a01b03169061224f9084612b1a565b60405163a9059cbb60e01b81526001600160a01b039092166004830152602482015292839081906044820190565b03818c5f80516020613cd98339815191525af19182156123355789926122d5575b5060205f80516020613cf9833981519152916122c75f80516020613cd983398151915294612beb565b604051908152a25b5f612089565b91506020823d60201161232d575b816122f06020938361296b565b81010312611ac25760205f80516020613cf9833981519152916122c76123235f80516020613cd983398151915295612bde565b945050915061229e565b3d91506122e3565b6040513d8b823e3d90fd5b60405163a9059cbb60e01b81526001600160a01b0384166004820152602481018390526020816044818d5f80516020613cd98339815191525af19081156123ea578a916123a0575b5061227d92612398602092612beb565b925050612231565b90506020813d6020116123e2575b816123bb6020938361296b565b810103126123de5761227d926123986123d5602093612bde565b92505092612388565b8980fd5b3d91506123ae565b6040513d8c823e3d90fd5b506122cf565b816124059161296b565b611ac257885f612220565b8780fd5b61138886028681046113881482171561273f576127109004906109c48702908782046109c414171561273f576127109004906124548261207d838a612b1a565b928161258b575b5050806124fa575b5080612470575b80611ff1565b60015460405163a9059cbb60e01b81526001600160a01b039091166004820152602481019190915260208160448189875af180156108395786906124bf575b6124b99150612beb565b5f61246a565b506020813d6020116124f2575b816124d96020938361296b565b8101031261082d576124ed6124b991612bde565b6124af565b3d91506124cc565b60405163a9059cbb60e01b81526001600160a01b038416600482015260248101919091526020816044818a885af18015612580578790612545575b61253f9150612beb565b5f612463565b506020813d602011612578575b8161255f6020938361296b565b810103126108295761257361253f91612bde565b612535565b3d9150612552565b6040513d89823e3d90fd5b303b1561273b5760405163e3ee93bd60e01b81526001600160a01b03919091166004820152602481018290525f8160448183305af19081612726575b50612720578060011c9081612687575b6001546125f5926020916001600160a01b03169061224f9084612b1a565b03818c8a5af180156123355786928a91612634575b505f80516020613cf983398151915291612625602092612beb565b604051908152a25b5f8061245b565b9250506020823d60201161267f575b816126506020938361296b565b81010312611ac25760205f80516020613cf9833981519152916126256126768995612bde565b9250509161260a565b3d9150612643565b60405163a9059cbb60e01b81526001600160a01b0386166004820152602481018390526020816044818d8b5af19081156123ea578a916126da575b506125f5926126d2602092612beb565b9250506125d7565b90506020813d602011612718575b816126f56020938361296b565b810103126123de576125f5926126d261270f602093612bde565b925050926126c2565b3d91506126e8565b5061262d565b6127339199505f9061296b565b5f975f6125c7565b5f80fd5b634e487b7160e01b5f52601160045260245ffd5b91611fd0565b915093506040813d60401161278c575b816127766040938361296b565b8101031261273b5760208151910151935f611fc6565b3d9150612769565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c3ab735b737bbb7103a37b5b2b760991b6044820152606490fd5b3461273b57608036600319011261273b576127ed6128ab565b506127f66128c1565b506064356001600160401b03811161273b576128169036906004016128d7565b5050604051630a85bd0160e11b8152602090f35b3461273b57602036600319011261273b576128436128ab565b5f549061285a336001600160a01b03841614612a98565b6001600160a01b0316908190612871821515612ad0565b6bffffffffffffffffffffffff60a01b16175f557f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe25f80a2005b600435906001600160a01b038216820361273b57565b602435906001600160a01b038216820361273b57565b9181601f8401121561273b578235916001600160401b03831161273b576020838186019501011161273b57565b90600182811c92168015612932575b602083101461291e57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612913565b608081019081106001600160401b0382111761295757604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761295757604052565b9060405191825f82549261299f84612904565b8084529360018116908115612a0a57506001146129c6575b506129c49250038361296b565b565b90505f9291925260205f20905f915b8183106129ee5750509060206129c4928201015f6129b7565b60209193508060019154838589010152019101909184926129d5565b9050602092506129c494915060ff191682840152151560051b8201015f6129b7565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461273b575f36600319011261273b5760206040516109c48152f35b600554811015612a845760055f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15612a9f57565b60405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606490fd5b15612ad757565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b90612648820291808304612648149015171561273f57565b9190820391821161273f57565b908060209392818452848401375f828201840152601f01601f1916010190565b6107d09060020b02908160020b91820361273f57565b15612b6457565b60405162461bcd60e51b815260206004820152600b60248201526a70726963652072616e676560a81b6044820152606490fd5b60020b627fffff19811461273f575f0390565b15612bb157565b60405162461bcd60e51b815260206004820152600560248201526472616e676560d81b6044820152606490fd5b5190811515820361273b57565b15612bf257565b606460405162461bcd60e51b81526020600482015260046024820152633c3332b960e11b6044820152fd5b6001600160401b03811161295757601f01601f191660200190565b9081602091031261273b57516001600160a01b038116810361273b5790565b15612c5e57565b60405162461bcd60e51b81526020600482015260076024820152661b9bc81c1bdbdb60ca1b6044820152606490fd5b929192612c9982612c1d565b91612ca7604051938461296b565b82948184528183011161273b578281602093845f960137010152565b35906001600160a01b038216820361273b57565b908115612d2d576001820180831161273f5760011c825b838210612cf9575050565b909250828015612d195780820490810180911161273f5760011c90612cee565b634e487b7160e01b5f52601260045260245ffd5b5f9150565b600291820b910b0390627fffff198212627fffff83131761273f57565b60020b60010190627fffff8213627fffff1983121761273f57565b9060020b9060020b0190627fffff198212627fffff83131761273f57565b60020b5f81121561310c57805f03905b620d89e882116130e35760018216156130d1576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b1691600281166130b5575b60048116613099575b6008811661307d575b60108116613061575b60208116613045575b60408116613029575b6080811661300d575b6101008116612ff1575b6102008116612fd5575b6104008116612fb9575b6108008116612f9d575b6110008116612f81575b6120008116612f65575b6140008116612f49575b6180008116612f2d575b620100008116612f11575b620200008116612ef6575b620400008116612edb575b6208000016612ec2575b5f12612eb4575b63ffffffff8116612eac575f905b60201c60ff91909116016001600160a01b031690565b600190612e96565b8015612d19575f1904612e88565b6b048a170391f7dc42444e8fa290910260801c90612e81565b6d2216e584f5fa1ea926041bedfe9890920260801c91612e77565b916e5d6af8dedb81196699c329225ee6040260801c91612e6c565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91612e61565b916f31be135f97d08fd981231505542fcfa60260801c91612e56565b916f70d869a156d2a1b890bb3df62baf32f70260801c91612e4c565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91612e42565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91612e38565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612e2e565b916ff3392b0822b70005940c7a398e4b70f30260801c91612e24565b916ff987a7253ac413176f2b074cf7815e540260801c91612e1a565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91612e10565b916ffe5dee046a99a2a811c461f1969c30530260801c91612e06565b916fff2ea16466c96a3843ec78b326b528610260801c91612dfd565b916fff973b41fa98c081472e6896dfb254c00260801c91612df4565b916fffcb9843d60f6159c9db58835c9266440260801c91612deb565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91612de2565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91612dd9565b916ffff97272373d413259a46990580e213a0260801c91612dd0565b6001600160881b03600160801b612dc5565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b80612d98565b519061ffff8216820361273b57565b600160ff1b811461273f575f0390565b604051633850c7bd60e01b815260c0816004817323d641feccd207e8794c593e8240444a0674c4ba5afa908115612794575f9161327a575b506001600160a01b03908116929061271061318385612b02565b0416928310156107255760409161320f83517323d641feccd207e8794c593e8240444a0674c4ba60208201525f80516020613cd9833981519152858201528481526131cf60608261296b565b84519586948594630251596160e31b865260018060a01b03166004860152600160248601526044850152606484015260a0608484015260a4830190612a2c565b03815f7323d641feccd207e8794c593e8240444a0674c4ba5af18015612794575f90613243575b6132409150613121565b90565b506040813d604011613272575b8161325d6040938361296b565b8101031261273b576020015161324090613236565b3d9150613250565b905060c0813d60c0116132d7575b8161329560c0938361296b565b8101031261273b578051906001600160a01b038216820361273b5760208101518060020b0361273b5760a08161080060406132d09401613112565b505f613169565b3d915061328856fe608060405234610371576109f98038038061001981610375565b9283398101906080818303126103715780516001600160401b038111610371578261004591830161039a565b602082015190926001600160401b0382116103715761006591830161039a565b60408201516060909201516001600160a01b0381169291908390036103715783516001600160401b038111610285575f54600181811c91168015610367575b602082101461026757601f8111610305575b50602094601f82116001146102a4579481929394955f92610299575b50508160011b915f199060031b1c1916175f555b8051906001600160401b03821161028557600154600181811c9116801561027b575b602082101461026757601f8111610204575b50602090601f831160011461018d5792825f805160206109d9833981519152936020935f968792610182575b50508160011b9186199060031b1c1916176001555b8060025584845260038252806040852055604051908152a36040516105ed90816103ec8239f35b015190505f80610146565b90601f1983169160015f52815f20925f5b8181106101ec5750936020935f9693600193835f805160206109d983398151915298106101d4575b505050811b0160015561015b565b0151871960f88460031b161c191690555f80806101c6565b9293602060018192878601518155019501930161019e565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c8101916020851061025d575b601f0160051c01905b818110610252575061011a565b5f8155600101610245565b909150819061023c565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610108565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d2565b601f198216955f8052805f20915f5b8881106102ed575083600195969798106102d5575b505050811b015f556100e6565b01515f1960f88460031b161c191690555f80806102c8565b919260206001819286850151815501940192016102b3565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c8101916020841061035d575b601f0160051c01905b81811061035257506100b6565b5f8155600101610345565b909150819061033c565b90607f16906100a4565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761028557604052565b81601f82011215610371578051906001600160401b038211610285576103c9601f8301601f1916602001610375565b928284526020838301011161037157815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146103e9578063095ea7b31461037057806318160ddd1461035357806323b872dd14610273578063313ce5671461025857806370a082311461022057806395d89b4114610102578063a9059cbb146100d05763dd62ed3e1461007c575f80fd5b346100cc5760403660031901126100cc576100956104e5565b61009d6104fb565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100cc5760403660031901126100cc5760206100f86100ee6104e5565b6024359033610511565b6040519015158152f35b346100cc575f3660031901126100cc576040515f6001548060011c90600181168015610216575b602083108114610202578285529081156101e65750600114610190575b50819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60015f9081529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8282106101d057506020915082010182610146565b60018160209254838588010152019101906101bb565b90506020925060ff191682840152151560051b82010182610146565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610129565b346100cc5760203660031901126100cc576001600160a01b036102416104e5565b165f526003602052602060405f2054604051908152f35b346100cc575f3660031901126100cc57602060405160128152f35b346100cc5760603660031901126100cc5761028c6104e5565b6102946104fb565b6001600160a01b0382165f8181526004602090815260408083203384529091529020546044359391600182016102d2575b60206100f8868686610511565b929093918285106103225782850394851161030e575f9384526004602090815260408086203387528252909420949094559092909182906102c5565b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b8152602060048201526009602482015268616c6c6f77616e636560b81b6044820152606490fd5b346100cc575f3660031901126100cc576020600254604051908152f35b346100cc5760403660031901126100cc576103896104e5565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100cc575f3660031901126100cc576040515f80548060011c906001811680156104b1575b602083108114610202578285529081156101e6575060011461045d5750819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b5f8080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b82821061049b57506020915082010182610146565b6001816020925483858801015201910190610486565b91607f169161040f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100cc57565b602435906001600160a01b03821682036100cc57565b60018060a01b031690815f5260036020528260405f2054106105885760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91835f526003825260405f2085815403905560018060a01b031693845f526003825260405f20818154019055604051908152a3600190565b60405162461bcd60e51b815260206004820152600760248201526662616c616e636560c81b6044820152606490fdfea26469706673582212201ba05c74e7351b493c7900eecfc23c901adce09b27694f6fd6f9ce55df68b82564736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73e1adb36b57983b27c5ad0523eefd631e293f167531ccf0540ebc359de10648cda2646970667358221220e1150af8017ec243de155364959c3a93500e13b8cb4a1d32a6191eeea4d538cf64736f6c634300081a0033000000000000000000000000c300b277c0a5c58e2b26b20dbfbdad72d6f18ee1
0x60806040526004361015610011575f80fd5b5f803560e01c806313af40351461282a578063150b7a02146127d457806315a0ea6a14611ebb5780631f2d855014611e5157806324f4ec5114611e22578063283b3a2114611de15780632f28452c14611db257806333bbacd914611d2357806345904567146109ea57806346ca626b14611d065780634845c54814611cd757806352b5aefa14611cba578063634282af14611c765780636b2712b414611c59578063836e9e2514611c3657806388a33aec14611b6c57806388e2a98e14611af15780638da5cb5b14611aca578063a2418395146109ef578063a5424df3146109ea578063ad5c4648146109c2578063c380b2741461091a578063c38bedf5146108f1578063c50497ae146108cb578063ce56de8e146108af578063dbb80e4214610891578063dd0bbd3a1461086f578063e3ee93bd14610486578063e70dd6cf146104575763fa461e3314610164575f80fd5b34610454576060366003190112610454576004356044356001600160401b0381116104505761019960409136906004016128d7565b9080929181010312610450576101ba60206101b383612cc3565b9201612cc3565b6001600160a01b0390811691167323d641feccd207e8794c593e8240444a0674c4ba81036102d557505f80516020613cd983398151915281036102a45761023360209184935b8481131561029b575b60405163a9059cbb60e01b8152336004820152602481019190915293849283919082906044820190565b03925af18015610290578290610251575b61024e9150612beb565b80f35b506020813d602011610288575b8161026b6020938361296b565b810103126102845761027f61024e91612bde565b610244565b5080fd5b3d915061025e565b6040513d84823e3d90fd5b50602435610209565b60405162461bcd60e51b81526020600482015260096024820152683130b2103a37b5b2b760b91b6044820152606490fd5b818452600260205260408420604051906102ee8261293c565b6060600260018060a01b03835416928385526001810154602086015201549260ff841615156040820152019160081c60020b8252828115159182610446575b505015610416575160020b604051906328af8d0b60e01b82528360048301525f80516020613cd983398151915260248301526044820152602081606481731ac9db4a2608ba45d6127b1737949b51bb54b7f35afa90811561040b5785916103dc575b506001600160a01b0316036103ab576102336020918493610200565b60405162461bcd60e51b81526020600482015260096024820152683130b2103837b7b61960b91b6044820152606490fd5b6103fe915060203d602011610404575b6103f6818361296b565b810190612c38565b5f61038f565b503d6103ec565b6040513d87823e3d90fd5b60405162461bcd60e51b8152602060048201526008602482015267189859081c1bdbdb60c21b6044820152606490fd5b149050825f61032d565b8280fd5b80fd5b50346104545780600319360112610454576020604051731ac9db4a2608ba45d6127b1737949b51bb54b7f38152f35b5034610454576040366003190112610454576104a06128ab565b60243590303303610844576001600160a01b0316905f80516020613cd98339815191528203610534576104d39030613131565b80156105075760207f22528f9198856b2bbd498eb8741c329ab108326db04d31d9f1d08ed7ce06afca91604051908152a280f35b60405162461bcd60e51b815260206004820152600560248201526406e6f2075760dc1b6044820152606490fd5b81835260026020526040832060405161054c8161293c565b61058b600260018060a01b038454169384845260018101546020850152015492604083019360ff81161515855260081c60020b60608401521515612c57565b519051604051633850c7bd60e01b8152901515926001600160a01b039092169160c082600481865afa9182156108395786926107a9575b508315610764576001600160a01b036127106105df848316612b02565b0416915b8415610750576001600160a01b03908116908316105b15610725576106649260409287845193836020860152888686015285855261062260608661296b565b855196879586948593630251596160e31b85523060048601528b6024860152604485015260018060a01b0316606484015260a0608484015260a4830190612a2c565b03925af191821561071a57849185936106db575b50156106cc575061068890613121565b801561069d576106989030613131565b6104d3565b60405162461bcd60e51b81526020600482015260076024820152660dcde40eecae8d60cb1b6044820152606490fd5b6106d69150613121565b610688565b915091506040813d604011610712575b816106f86040938361296b565b8101031261070e5760208151910151915f610678565b8380fd5b3d91506106eb565b6040513d86823e3d90fd5b60405162461bcd60e51b81526020600482015260036024820152626c696d60e81b6044820152606490fd5b6001600160a01b03908116908316116105f9565b6127d86001600160a01b0383168181029181159183041417156107955761271090046001600160a01b0316916105e3565b634e487b7160e01b87526011600452602487fd5b90915060c0813d60c011610831575b816107c560c0938361296b565b8101031261082d578051906001600160a01b03821682036108295760208101518060020b036108295760a08161080060406108219401613112565b5061080d60608201613112565b5061081a60808201613112565b5001612bde565b50905f6105c2565b8680fd5b8580fd5b3d91506107b8565b6040513d88823e3d90fd5b606460405162461bcd60e51b815260206004820152600460248201526339b2b63360e11b6044820152fd5b5034610454578060031936011261045457602060405166038d7ea4c680008152f35b50346104545780600319360112610454576020600554604051908152f35b5034610454578060031936011261045457602060405160c88152f35b50346104545780600319360112610454576020604051676765c793fa10079d601b1b8152f35b50346104545780600319360112610454576001546040516001600160a01b039091168152602090f35b50346104545760403660031901126104545761099260206109396128ab565b61094d60018060a01b038554163314612a98565b6109616001600160a01b0382161515612ad0565b60405163a9059cbb60e01b81526001600160a01b039091166004820152602480359082015291829081906044820190565b0381857357c0e45cb534413d1c20a4240955d6bb250bb4f15af180156102905782906102515761024e9150612beb565b503461045457806003193601126104545760206040515f80516020613cd98339815191528152f35b612a50565b5060e0366003190112610454576004356001600160401b03811161028457610a1b9036906004016128d7565b6024356001600160401b03811161070e57610a3a9036906004016128d7565b9093604435929091906001600160a01b038416840361045057606435956084356001600160401b038111611ac657610a769036906004016128d7565b92909660a4356001600160401b03811161082957610a989036906004016128d7565b91909260c4356001600160401b038111611ac257610aba9036906004016128d7565b9590976101f48d11611a8f578c676765c793fa10079d601b1b9d8e029d8e0481036119b257676765c793fa10079d601b1b6127108f048103116119b25780670de0b6b3a76400000290670de0b6b3a76400008204036119b257612710900466038d7ea4c68000018066038d7ea4c68000116119b2573403611a5a576127108d04676765c793fa10079d601b1b14611a2c57604051936109f993848601948686106001600160401b03871117611a185786959492610b979492610b89926132e08939608087526080870191612b27565b918483036020860152612b27565b90676765c793fa10079d601b1b6040820152606030910152039087f096871561083957610bc56101bb612b47565b5f80516020613cd98339815191526001600160a01b038a1610156118a957610c0174044b82fa09b5a52cb98b405447c4a98187eebb22f0612cd7565b6401000276a38110158061188b575b610c1990612b5d565b6107d0600283900b05906001600160a01b03908116908190610c42610c3d85612b47565b612d88565b161061185657610c5182612b97565b915b8060020b8360020b1261180b575050610c6b90612b47565b610c7c8260020b8260020b12612baa565b610c8581612d88565b925b6001600160a01b038116611805575033925b8a8d8b6127108204611775575b808093508092503460018060a01b03600154165af13d15611770573d610ccb81612c1d565b90610cd9604051928361296b565b81528b60203d92013e5b1561173f578a60206127108f6044908e604051958694859363095ea7b360e01b85527307f44c47743a2f36414a82b9f558ecfcf0eedcef600486015204676765c793fa10079d601b1b03602484015260018060a01b03165af180156115f2576116f8575b508a8a809c9d9e5f80516020613cd983398151915260018060a01b038416105f146116d6576001600160a01b038316925f80516020613cd9833981519152928391905b6001600160a01b0382168311156116d057506127108304676765c793fa10079d601b1b039f5b506001600160a01b031610156116b957508b5b6040519d8e61018081019081106001600160401b038211176116a557908f91604052600160a01b6001900385168252600160a01b6001900384166020830152604082016107d090528660020b60608301528760020b608083015260a082015260c001528b8d8160e082015261010001528c309061012001528c429061014001528c600160a01b600190038416906101600152604051809d63b5007d1f60e01b8252600160a01b600190038151166004830152600160a01b600190036020820151166024830152604081015160020b6044830152606081015160020b6064830152608081015160020b608483015260a081015160a483015260c081015160c483015260e081015160e4830152610100810151610104830152600160a01b6001900361012082015116610124830152610140810151610144830152600160a01b60019003906101600151169061016401528c808d5a92610184917307f44c47743a2f36414a82b9f558ecfcf0eedcef608095f1801561169a578c8f819f829361163a575b505f80516020613cd98339815191526001600160a01b0390911610156116325750155b156115fd576040516328af8d0b60e01b81526001600160a01b039283166004820152911660248201526107d06044820152602081606481731ac9db4a2608ba45d6127b1737949b51bb54b7f35afa9081156115f2578b916115d3575b506001600160a01b031699610fda8b1515612c57565b8b8d60028d60405190610fec8261293c565b81526020810193845260408101935f80516020613cd983398151915260018060a01b03851610855260608201936107d0855260018060a01b0316865282602052604086209160018060a01b039060018060a01b03905116166bffffffffffffffffffffffff60a01b83541617825551600182015501915115159060ff8354915160081b63ffffff001692169063ffffffff191617179055604051606081018181106001600160401b038211176115bf57908f8f92906110b0916040528c3691612c8d565b81526110bd36898b612c8d565b602082019081526110cf368c8f612c8d565b60408381019182526001600160a01b039094168552600360205292842091518051906001600160401b0382116114ee57819061110b8554612904565b601f811161156f575b50602090601f831160011461150d578792611502575b50508160011b915f199060031b1c19161782555b51805160018301916001600160401b0382116114ee5761115e8354612904565b601f81116114a9575b50602090601f831160011461144357600294939291879183611438575b50508160011b915f199060031b1c19161790555b0190518051906001600160401b0382116114245781906111b88454612904565b601f81116113d4575b50602090601f8311600114611372578592611367575b50508160011b915f199060031b1c19161790555b6001600160a01b038d8116825260046020526040822080546001600160a01b031916918716919091179055600554906801000000000000000082101561135357508a60609e98957fcf74bdcbe7289db73ff708466716fd711af7c1eeaf8abb1d1079a16fc268e5238f8f949061131b987ffd83936f21556a9468b12efd654a1cad63116d7e158898e98be164cbe17c60489e9c986113369c9861129685600160c09701600555612a6c565b81546001600160a01b0396871660039290921b82811b9088901b1990911617909155604080519886168952676765c793fa10079d601b1b60208a0152670de0b6b3a76400009089015293166060870152600290810b60808701520b60a085015292a461130d6040519788978f89528f890191612b27565b918683036020880152612b27565b83810360408501526001600160a01b038a1696909190612b27565b0390a26040519260018060a01b0316835260208301526040820152f35b634e487b7160e01b81526041600452602490fd5b015190505f806111d7565b8486528186209250601f198416865b8181106113bc57509084600195949392106113a4575b505050811b0190556111eb565b01515f1960f88460031b161c191690555f8080611397565b92936020600181928786015181550195019301611381565b90915083855260208520601f840160051c8101916020851061141a575b90601f859493920160051c01905b81811061140c57506111c1565b8681558493506001016113ff565b90915081906113f1565b634e487b7160e01b84526041600452602484fd5b015190505f80611184565b8387528187209190601f198416885b818110611491575091600193918560029897969410611479575b505050811b019055611198565b01515f1960f88460031b161c191690555f808061146c565b92936020600181928786015181550195019301611452565b83875260208720601f840160051c810191602085106114e4575b601f0160051c01905b8181106114d95750611167565b8781556001016114cc565b90915081906114c3565b634e487b7160e01b86526041600452602486fd5b015190505f8061112a565b8588528188209250601f198416885b818110611557575090846001959493921061153f575b505050811b01825561113e565b01515f1960f88460031b161c191690555f8080611532565b9293602060018192878601518155019501930161151c565b90915084875260208720601f840160051c810191602085106115b5575b90601f859493920160051c01905b8181106115a75750611114565b88815584935060010161159a565b909150819061158c565b634e487b7160e01b83526041600452602483fd5b6115ec915060203d602011610404576103f6818361296b565b5f610fc4565b6040513d8d823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081bdb994b5cda591959609a1b6044820152606490fd5b905015610f68565b9f5050505060808d3d608011611692575b816116586080938361296b565b8101031261168e578c5160208e01516001600160801b0381160361168a5760408e01516060909e0151909d8f8e610f45565b8c80fd5b8b80fd5b3d915061164b565b6040513d8e823e3d90fd5b634e487b7160e01b8f52604160045260248ffd5b6127109004676765c793fa10079d601b1b03610dc3565b9f610db0565b5f80516020613cd9833981519152926001600160a01b03811692849190610d8a565b6020813d602011611737575b816117116020938361296b565b81010312611733579a8a819d9e611728829e612bde565b509e9d9c5050610d47565b8a80fd5b3d9150611704565b60405162461bcd60e51b81526020600482015260096024820152680ecc2ead8e840cae8d60bb1b6044820152606490fd5b610ce3565b60405163a9059cbb60e01b81526001600160a01b03888116600483015261271090930460248201529260209284926044928492165af180156115f2578b906117ca575b6117c29150612beb565b8a8d8b610ca6565b506020813d6020116117fd575b816117e46020938361296b565b81010312611733576117f86117c291612bde565b6117b8565b3d91506117d7565b92610c99565b611823600261181a8584612d32565b810b0584612d6a565b90826001600160a01b03611839610c3d85612b47565b16106118455750610c53565b925061185090612d4f565b91610c53565b60405162461bcd60e51b815260206004820152600d60248201526c0dac6c2e040e8dede40d0d2ced609b1b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d26811115610c10565b6118b8621dcd6560c91b612cd7565b6401000276a3811015806119fa575b6118d090612b5d565b6107d0600283900b05906001600160a01b039081169081906118fc610c3d6118f786612b97565b612b47565b16116119c65761190b82612b97565b91905b8160020b8360020b1261194f57505061192961192f91612b47565b91612b97565b6119408260020b8260020b12612baa565b61194982612d88565b92610c87565b909161197160026119686119638487612d32565b612d4f565b810b0582612d6a565b90826001600160a01b03611987610c3d85612b47565b16116119965750915b9061190e565b925060020b5f1901627fffff198112627fffff82131715611990575b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152600c60248201526b6d63617020746f6f206c6f7760a01b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d268111156118c7565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c666565202b206465762062757960981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a64657620627579203e352560a81b6044820152606490fd5b8880fd5b8480fd5b5034610454578060031936011261045457546040516001600160a01b039091168152602090f35b503461045457602036600319011261045457611b0b6128ab565b611b1f60018060a01b038354163314612a98565b6001600160a01b0316611b33811515612ad0565b600180546001600160a01b031916821790557f51147c0622f96c2c6a034f0c8637a7c06a1368dc9c9e479968febf72750b3d4f8280a280f35b503461045457604036600319011261045457611b866128ab565b611b8e6128c1565b6001600160a01b03918216808452600460205260408420549092163303611c07576001600160a01b031690611bc4821515612ad0565b80835260046020526040832080546001600160a01b031916831790557fdc59cbf41951869b8df903918660f35d1fa9bfdda04bb5ceba487e0ea28995708380a380f35b60405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b6044820152606490fd5b50346104545780600319360112610454576020604051670de0b6b3a76400008152f35b503461045457806003193601126104545760206040516113888152f35b50346104545760203660031901126104545760043590600554821015610454576020611ca183612a6c565b905460405160039290921b1c6001600160a01b03168152f35b503461045457806003193601126104545760206040516101f48152f35b503461045457806003193601126104545760206040517323d641feccd207e8794c593e8240444a0674c4ba8152f35b503461045457806003193601126104545760206040516107d08152f35b503461045457602036600319011261045457611d92906040906001600160a01b03611d4c6128ab565b168152600360205220611dae611d618261298c565b91611da0611d7d6002611d766001850161298c565b930161298c565b91604051958695606087526060870190612a2c565b908582036020870152612a2c565b908382036040850152612a2c565b0390f35b503461045457806003193601126104545760206040517307f44c47743a2f36414a82b9f558ecfcf0eedcef8152f35b5034610454576020366003190112610454576020906001600160a01b03611e066128ab565b16815260048252604060018060a01b0391205416604051908152f35b503461045457806003193601126104545760206040517357c0e45cb534413d1c20a4240955d6bb250bb4f18152f35b5034610454576020366003190112610454576080906040906001600160a01b03611e796128ab565b16815260026020522060018060a01b03815416906002600182015491015490604051928352602083015260ff81161515604083015260081c60020b6060820152f35b503461273b57602036600319011261273b57611ed56128ab565b6001600160a01b0381165f81815260026020526040908190209051929190611efc8461293c565b60018060a01b038154168085526002600183015492602087019384520154946060604082019660ff81161515885260081c60020b9101521561279f575160405190611f468261293c565b815230602082019081526001600160801b03604080840182815260608501838152825163fc6f786560e01b81529551600487015293516001600160a01b0316602486015251821660448501529151166064830152816084815f7307f44c47743a2f36414a82b9f558ecfcf0eedcef5af1938415612794575f915f95612759575b5051156127535792915b5f828152600460205260409020546001600160a01b03169084158015612414575b5050821590811561203d575b5050604093507f1ac537f0ad67b64ac68a04587ff3a4cb6977de22eb2c37ee560897a92c6d07c7848051858152846020820152a282519182526020820152f35b611388840284810461138814831715610795576127109004916109c48502908582046109c4141715610795576127109004906120828261207d8588612b1a565b612b1a565b92806121e1575b508161214b575b50508061209e575b80611ffd565b60015460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152602081604481885f80516020613cd98339815191525af194851561213f5780956120fe575b50506120f8604094612beb565b5f612098565b9094506020853d602011612137575b8161211a6020938361296b565b8101031261045457506120f8612131604095612bde565b946120eb565b3d915061210d565b604051903d90823e3d90fd5b60405163a9059cbb60e01b81526001600160a01b039190911660048201526024810191909152602081604481895f80516020613cd98339815191525af180156108395786906121a6575b61219f9150612beb565b5f80612090565b506020813d6020116121d9575b816121c06020938361296b565b8101031261082d576121d461219f91612bde565b612195565b3d91506121b3565b303b156124105760405163e3ee93bd60e01b81525f80516020613cd983398151915260048201526024810182905288808260448183305af191826123fb575b50506123f5578060011c9081612340575b60015461227d926020916001600160a01b03169061224f9084612b1a565b60405163a9059cbb60e01b81526001600160a01b039092166004830152602482015292839081906044820190565b03818c5f80516020613cd98339815191525af19182156123355789926122d5575b5060205f80516020613cf9833981519152916122c75f80516020613cd983398151915294612beb565b604051908152a25b5f612089565b91506020823d60201161232d575b816122f06020938361296b565b81010312611ac25760205f80516020613cf9833981519152916122c76123235f80516020613cd983398151915295612bde565b945050915061229e565b3d91506122e3565b6040513d8b823e3d90fd5b60405163a9059cbb60e01b81526001600160a01b0384166004820152602481018390526020816044818d5f80516020613cd98339815191525af19081156123ea578a916123a0575b5061227d92612398602092612beb565b925050612231565b90506020813d6020116123e2575b816123bb6020938361296b565b810103126123de5761227d926123986123d5602093612bde565b92505092612388565b8980fd5b3d91506123ae565b6040513d8c823e3d90fd5b506122cf565b816124059161296b565b611ac257885f612220565b8780fd5b61138886028681046113881482171561273f576127109004906109c48702908782046109c414171561273f576127109004906124548261207d838a612b1a565b928161258b575b5050806124fa575b5080612470575b80611ff1565b60015460405163a9059cbb60e01b81526001600160a01b039091166004820152602481019190915260208160448189875af180156108395786906124bf575b6124b99150612beb565b5f61246a565b506020813d6020116124f2575b816124d96020938361296b565b8101031261082d576124ed6124b991612bde565b6124af565b3d91506124cc565b60405163a9059cbb60e01b81526001600160a01b038416600482015260248101919091526020816044818a885af18015612580578790612545575b61253f9150612beb565b5f612463565b506020813d602011612578575b8161255f6020938361296b565b810103126108295761257361253f91612bde565b612535565b3d9150612552565b6040513d89823e3d90fd5b303b1561273b5760405163e3ee93bd60e01b81526001600160a01b03919091166004820152602481018290525f8160448183305af19081612726575b50612720578060011c9081612687575b6001546125f5926020916001600160a01b03169061224f9084612b1a565b03818c8a5af180156123355786928a91612634575b505f80516020613cf983398151915291612625602092612beb565b604051908152a25b5f8061245b565b9250506020823d60201161267f575b816126506020938361296b565b81010312611ac25760205f80516020613cf9833981519152916126256126768995612bde565b9250509161260a565b3d9150612643565b60405163a9059cbb60e01b81526001600160a01b0386166004820152602481018390526020816044818d8b5af19081156123ea578a916126da575b506125f5926126d2602092612beb565b9250506125d7565b90506020813d602011612718575b816126f56020938361296b565b810103126123de576125f5926126d261270f602093612bde565b925050926126c2565b3d91506126e8565b5061262d565b6127339199505f9061296b565b5f975f6125c7565b5f80fd5b634e487b7160e01b5f52601160045260245ffd5b91611fd0565b915093506040813d60401161278c575b816127766040938361296b565b8101031261273b5760208151910151935f611fc6565b3d9150612769565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c3ab735b737bbb7103a37b5b2b760991b6044820152606490fd5b3461273b57608036600319011261273b576127ed6128ab565b506127f66128c1565b506064356001600160401b03811161273b576128169036906004016128d7565b5050604051630a85bd0160e11b8152602090f35b3461273b57602036600319011261273b576128436128ab565b5f549061285a336001600160a01b03841614612a98565b6001600160a01b0316908190612871821515612ad0565b6bffffffffffffffffffffffff60a01b16175f557f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe25f80a2005b600435906001600160a01b038216820361273b57565b602435906001600160a01b038216820361273b57565b9181601f8401121561273b578235916001600160401b03831161273b576020838186019501011161273b57565b90600182811c92168015612932575b602083101461291e57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612913565b608081019081106001600160401b0382111761295757604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761295757604052565b9060405191825f82549261299f84612904565b8084529360018116908115612a0a57506001146129c6575b506129c49250038361296b565b565b90505f9291925260205f20905f915b8183106129ee5750509060206129c4928201015f6129b7565b60209193508060019154838589010152019101909184926129d5565b9050602092506129c494915060ff191682840152151560051b8201015f6129b7565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461273b575f36600319011261273b5760206040516109c48152f35b600554811015612a845760055f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15612a9f57565b60405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606490fd5b15612ad757565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b90612648820291808304612648149015171561273f57565b9190820391821161273f57565b908060209392818452848401375f828201840152601f01601f1916010190565b6107d09060020b02908160020b91820361273f57565b15612b6457565b60405162461bcd60e51b815260206004820152600b60248201526a70726963652072616e676560a81b6044820152606490fd5b60020b627fffff19811461273f575f0390565b15612bb157565b60405162461bcd60e51b815260206004820152600560248201526472616e676560d81b6044820152606490fd5b5190811515820361273b57565b15612bf257565b606460405162461bcd60e51b81526020600482015260046024820152633c3332b960e11b6044820152fd5b6001600160401b03811161295757601f01601f191660200190565b9081602091031261273b57516001600160a01b038116810361273b5790565b15612c5e57565b60405162461bcd60e51b81526020600482015260076024820152661b9bc81c1bdbdb60ca1b6044820152606490fd5b929192612c9982612c1d565b91612ca7604051938461296b565b82948184528183011161273b578281602093845f960137010152565b35906001600160a01b038216820361273b57565b908115612d2d576001820180831161273f5760011c825b838210612cf9575050565b909250828015612d195780820490810180911161273f5760011c90612cee565b634e487b7160e01b5f52601260045260245ffd5b5f9150565b600291820b910b0390627fffff198212627fffff83131761273f57565b60020b60010190627fffff8213627fffff1983121761273f57565b9060020b9060020b0190627fffff198212627fffff83131761273f57565b60020b5f81121561310c57805f03905b620d89e882116130e35760018216156130d1576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b1691600281166130b5575b60048116613099575b6008811661307d575b60108116613061575b60208116613045575b60408116613029575b6080811661300d575b6101008116612ff1575b6102008116612fd5575b6104008116612fb9575b6108008116612f9d575b6110008116612f81575b6120008116612f65575b6140008116612f49575b6180008116612f2d575b620100008116612f11575b620200008116612ef6575b620400008116612edb575b6208000016612ec2575b5f12612eb4575b63ffffffff8116612eac575f905b60201c60ff91909116016001600160a01b031690565b600190612e96565b8015612d19575f1904612e88565b6b048a170391f7dc42444e8fa290910260801c90612e81565b6d2216e584f5fa1ea926041bedfe9890920260801c91612e77565b916e5d6af8dedb81196699c329225ee6040260801c91612e6c565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91612e61565b916f31be135f97d08fd981231505542fcfa60260801c91612e56565b916f70d869a156d2a1b890bb3df62baf32f70260801c91612e4c565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91612e42565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91612e38565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612e2e565b916ff3392b0822b70005940c7a398e4b70f30260801c91612e24565b916ff987a7253ac413176f2b074cf7815e540260801c91612e1a565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91612e10565b916ffe5dee046a99a2a811c461f1969c30530260801c91612e06565b916fff2ea16466c96a3843ec78b326b528610260801c91612dfd565b916fff973b41fa98c081472e6896dfb254c00260801c91612df4565b916fffcb9843d60f6159c9db58835c9266440260801c91612deb565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91612de2565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91612dd9565b916ffff97272373d413259a46990580e213a0260801c91612dd0565b6001600160881b03600160801b612dc5565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b80612d98565b519061ffff8216820361273b57565b600160ff1b811461273f575f0390565b604051633850c7bd60e01b815260c0816004817323d641feccd207e8794c593e8240444a0674c4ba5afa908115612794575f9161327a575b506001600160a01b03908116929061271061318385612b02565b0416928310156107255760409161320f83517323d641feccd207e8794c593e8240444a0674c4ba60208201525f80516020613cd9833981519152858201528481526131cf60608261296b565b84519586948594630251596160e31b865260018060a01b03166004860152600160248601526044850152606484015260a0608484015260a4830190612a2c565b03815f7323d641feccd207e8794c593e8240444a0674c4ba5af18015612794575f90613243575b6132409150613121565b90565b506040813d604011613272575b8161325d6040938361296b565b8101031261273b576020015161324090613236565b3d9150613250565b905060c0813d60c0116132d7575b8161329560c0938361296b565b8101031261273b578051906001600160a01b038216820361273b5760208101518060020b0361273b5760a08161080060406132d09401613112565b505f613169565b3d915061328856fe608060405234610371576109f98038038061001981610375565b9283398101906080818303126103715780516001600160401b038111610371578261004591830161039a565b602082015190926001600160401b0382116103715761006591830161039a565b60408201516060909201516001600160a01b0381169291908390036103715783516001600160401b038111610285575f54600181811c91168015610367575b602082101461026757601f8111610305575b50602094601f82116001146102a4579481929394955f92610299575b50508160011b915f199060031b1c1916175f555b8051906001600160401b03821161028557600154600181811c9116801561027b575b602082101461026757601f8111610204575b50602090601f831160011461018d5792825f805160206109d9833981519152936020935f968792610182575b50508160011b9186199060031b1c1916176001555b8060025584845260038252806040852055604051908152a36040516105ed90816103ec8239f35b015190505f80610146565b90601f1983169160015f52815f20925f5b8181106101ec5750936020935f9693600193835f805160206109d983398151915298106101d4575b505050811b0160015561015b565b0151871960f88460031b161c191690555f80806101c6565b9293602060018192878601518155019501930161019e565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c8101916020851061025d575b601f0160051c01905b818110610252575061011a565b5f8155600101610245565b909150819061023c565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610108565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d2565b601f198216955f8052805f20915f5b8881106102ed575083600195969798106102d5575b505050811b015f556100e6565b01515f1960f88460031b161c191690555f80806102c8565b919260206001819286850151815501940192016102b3565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c8101916020841061035d575b601f0160051c01905b81811061035257506100b6565b5f8155600101610345565b909150819061033c565b90607f16906100a4565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761028557604052565b81601f82011215610371578051906001600160401b038211610285576103c9601f8301601f1916602001610375565b928284526020838301011161037157815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146103e9578063095ea7b31461037057806318160ddd1461035357806323b872dd14610273578063313ce5671461025857806370a082311461022057806395d89b4114610102578063a9059cbb146100d05763dd62ed3e1461007c575f80fd5b346100cc5760403660031901126100cc576100956104e5565b61009d6104fb565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100cc5760403660031901126100cc5760206100f86100ee6104e5565b6024359033610511565b6040519015158152f35b346100cc575f3660031901126100cc576040515f6001548060011c90600181168015610216575b602083108114610202578285529081156101e65750600114610190575b50819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60015f9081529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8282106101d057506020915082010182610146565b60018160209254838588010152019101906101bb565b90506020925060ff191682840152151560051b82010182610146565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610129565b346100cc5760203660031901126100cc576001600160a01b036102416104e5565b165f526003602052602060405f2054604051908152f35b346100cc575f3660031901126100cc57602060405160128152f35b346100cc5760603660031901126100cc5761028c6104e5565b6102946104fb565b6001600160a01b0382165f8181526004602090815260408083203384529091529020546044359391600182016102d2575b60206100f8868686610511565b929093918285106103225782850394851161030e575f9384526004602090815260408086203387528252909420949094559092909182906102c5565b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b8152602060048201526009602482015268616c6c6f77616e636560b81b6044820152606490fd5b346100cc575f3660031901126100cc576020600254604051908152f35b346100cc5760403660031901126100cc576103896104e5565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100cc575f3660031901126100cc576040515f80548060011c906001811680156104b1575b602083108114610202578285529081156101e6575060011461045d5750819003601f01601f191681019067ffffffffffffffff82118183101761017c576040829052819061017890826104bb565b5f8080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b82821061049b57506020915082010182610146565b6001816020925483858801015201910190610486565b91607f169161040f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100cc57565b602435906001600160a01b03821682036100cc57565b60018060a01b031690815f5260036020528260405f2054106105885760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91835f526003825260405f2085815403905560018060a01b031693845f526003825260405f20818154019055604051908152a3600190565b60405162461bcd60e51b815260206004820152600760248201526662616c616e636560c81b6044820152606490fdfea26469706673582212201ba05c74e7351b493c7900eecfc23c901adce09b27694f6fd6f9ce55df68b82564736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73e1adb36b57983b27c5ad0523eefd631e293f167531ccf0540ebc359de10648cda2646970667358221220e1150af8017ec243de155364959c3a93500e13b8cb4a1d32a6191eeea4d538cf64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| up Position NFT (UP-POS) | UP-POS | 10 | — | — |
| UPAPE (UPAPE) | UPAPE | 0.000000 | — | — |
| UPDOG (UPDOG) | UPDOG | 0.000000 | — | — |
| UPCAT (UPCAT) | UPCAT | 0.000000 | — | — |
| LONGUP (LONGUP) | LONGUP | 0.000000 | — | — |
| SHORTUP (SHORTUP) | SHORTUP | 0.000000 | — | — |
| UPFOX (UPFOX) | UPFOX | 0.000000 | — | — |
| UPWOLF (UPWOLF) | UPWOLF | 0.000000 | — | — |
| UPNUT (UPNUT) | UPNUT | 0.000000 | — | — |
| UPGEM (UPGEM) | UPGEM | 0.000000 | — | — |
| Uppiestest (Uppies.fun) | Uppies.fun | 0.000000 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xc56fef…fd88ba | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xfd8393…6048 | [0] 0x000000000000…60b1b79a data: 0x000000000000000000…00000000 |
| 0xc56fef…fd88ba | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xcf74bd…e523 | [0] 0x000000000000…60b1b79a [1] 0x000000000000…be3009c3 [2] 0x000000000000…0000cb5d data: 0x000000000000000000…000324b0 |
| 0x66d3cd…aeee74 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0xfd8393…6048 | [0] 0x000000000000…5a1c7e99 data: 0x000000000000000000…00000000 |
| 0x66d3cd…aeee74 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0xcf74bd…e523 | [0] 0x000000000000…5a1c7e99 [1] 0x000000000000…7e4ab8f1 [2] 0x000000000000…0000cb5c data: 0x000000000000000000…000324b0 |
| 0x1549ec…1e1f2e | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0xfd8393…6048 | [0] 0x000000000000…01ff7c80 data: 0x000000000000000000…00000000 |
| 0x1549ec…1e1f2e | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0xcf74bd…e523 | [0] 0x000000000000…01ff7c80 [1] 0x000000000000…0517cedf [2] 0x000000000000…0000cb5b data: 0x000000000000000000…000324b0 |
| 0xfcd7d4…84d921 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xfd8393…6048 | [0] 0x000000000000…ca0b96fd data: 0x000000000000000000…00000000 |
| 0xfcd7d4…84d921 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xcf74bd…e523 | [0] 0x000000000000…ca0b96fd [1] 0x000000000000…53a5adb8 [2] 0x000000000000…0000cb59 data: 0x000000000000000000…000324b0 |
| 0x0f9b14…0794de | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0xfd8393…6048 | [0] 0x000000000000…be82ff02 data: 0x000000000000000000…00000000 |
| 0x0f9b14…0794de | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0xcf74bd…e523 | [0] 0x000000000000…be82ff02 [1] 0x000000000000…2474d1d2 [2] 0x000000000000…0000cb58 data: 0x000000000000000000…000324b0 |
| 0xe7c7d1…ce9a3e | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xfd8393…6048 | [0] 0x000000000000…acc36507 data: 0x000000000000000000…00000000 |
| 0xe7c7d1…ce9a3e | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xcf74bd…e523 | [0] 0x000000000000…acc36507 [1] 0x000000000000…b56b6416 [2] 0x000000000000…0000c9a2 data: 0x000000000000000000…000324b0 |
| 0x6c5ccb…5918ff | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0xfd8393…6048 | [0] 0x000000000000…a0381e20 data: 0x000000000000000000…00000000 |
| 0x6c5ccb…5918ff | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0xcf74bd…e523 | [0] 0x000000000000…a0381e20 [1] 0x000000000000…48cd5904 [2] 0x000000000000…0000c9a1 data: 0x000000000000000000…000324b0 |
| 0x2104dd…f76605 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0xfd8393…6048 | [0] 0x000000000000…8f8dc5d2 data: 0x000000000000000000…00000000 |
| 0x2104dd…f76605 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0xcf74bd…e523 | [0] 0x000000000000…8f8dc5d2 [1] 0x000000000000…afdf39c4 [2] 0x000000000000…0000c9a0 data: 0x000000000000000000…000324b0 |
| 0x1500c7…36bcdc | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0xfd8393…6048 | [0] 0x000000000000…9159b18f data: 0x000000000000000000…00000000 |
| 0x1500c7…36bcdc | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0xcf74bd…e523 | [0] 0x000000000000…9159b18f [1] 0x000000000000…9dedcc28 [2] 0x000000000000…0000c99f data: 0x000000000000000000…000324b0 |
| 0x035350…33024d | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0xfd8393…6048 | [0] 0x000000000000…b10e51bb data: 0x000000000000000000…00000000 |
| 0x035350…33024d | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0xcf74bd…e523 | [0] 0x000000000000…b10e51bb [1] 0x000000000000…9117084f [2] 0x000000000000…0000c99e data: 0x000000000000000000…000324b0 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xc56fef…fd88ba | launch | 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006197 | |
| 0x66d3cd…aeee74 | launch | 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006092 | |
| 0x1549ec…1e1f2e | launch | 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006104 | |
| 0xfcd7d4…84d921 | launch | 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006075 | |
| 0x0f9b14…0794de | launch | 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006138 | |
| 0xe7c7d1…ce9a3e | launch | 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006296 | |
| 0x6c5ccb…5918ff | launch | 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006335 | |
| 0x2104dd…f76605 | launch | 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006298 | |
| 0x1500c7…36bcdc | launch | 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006314 | |
| 0x035350…33024d | launch | 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0xc737…5f5d | IN | UpBurnLaunchFactory | $1.900.001 ETH | 0.00006462 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xc56fef…fd88ba | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xc56fef…fd88ba | CREATE | launch | 0xbd79…8d58 | OUT | 0x0c41…b79a | 0 ETH |
| 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0x66d3cd…aeee74 | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0x66d3cd…aeee74 | CREATE | launch | 0xbd79…8d58 | OUT | 0x5249…7e99 | 0 ETH |
| 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0x1549ec…1e1f2e | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0x1549ec…1e1f2e | CREATE | launch | 0xbd79…8d58 | OUT | 0x93fd…7c80 | 0 ETH |
| 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xfcd7d4…84d921 | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xfcd7d4…84d921 | CREATE | launch | 0xbd79…8d58 | OUT | 0x766f…96fd | 0 ETH |
| 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0x0f9b14…0794de | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0x0f9b14…0794de | CREATE | launch | 0xbd79…8d58 | OUT | 0x6afd…ff02 | 0 ETH |
| 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xe7c7d1…ce9a3e | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xe7c7d1…ce9a3e | CREATE | launch | 0xbd79…8d58 | OUT | 0x4b5d…6507 | 0 ETH |
| 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0x6c5ccb…5918ff | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0x6c5ccb…5918ff | CREATE | launch | 0xbd79…8d58 | OUT | 0x7315…1e20 | 0 ETH |
| 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0x2104dd…f76605 | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0x2104dd…f76605 | CREATE | launch | 0xbd79…8d58 | OUT | 0xfd8c…c5d2 | 0 ETH |
| 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0x1500c7…36bcdc | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0x1500c7…36bcdc | CREATE | launch | 0xbd79…8d58 | OUT | 0x96f6…b18f | 0 ETH |
| 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0x035350…33024d | CALL | launch | 0xbd79…8d58 | OUT | 0xc300…8ee1 | 0.001 ETH |
| 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0x035350…33024d | CREATE | launch | 0xbd79…8d58 | OUT | 0x169f…51bb | 0 ETH |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xc56fef71…fd88ba | Transfer | 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #52061 | |
| 0x66d3cd48…aeee74 | Transfer | 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #52060 | |
| 0x1549ecd9…1e1f2e | Transfer | 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #52059 | |
| 0xfcd7d4d8…84d921 | Transfer | 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #52057 | |
| 0x0f9b1468…0794de | Transfer | 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #52056 | |
| 0xe7c7d12b…ce9a3e | Transfer | 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #51618 | |
| 0x6c5ccb13…5918ff | Transfer | 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #51617 | |
| 0x2104dd16…f76605 | Transfer | 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #51616 | |
| 0x1500c7fa…36bcdc | Transfer | 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #51615 | |
| 0x03535066…33024d | Transfer | 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | Mint | up Position NFT (UP-POS) #51614 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xc56fef71…fd88ba | Transfer | 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0xbd79…8d58 | OUT | 0x08ef…09c3 | 1,000,000,000.000000 UPAPE | UPAPE (UPAPE) | |
| 0xc56fef71…fd88ba | Transfer | 35,984,930 | 4 days agoFri, 14 Aug 2026 05:01:10 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPAPE | UPAPE (UPAPE) | |
| 0x66d3cd48…aeee74 | Transfer | 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0xbd79…8d58 | OUT | 0x707a…b8f1 | 1,000,000,000.000000 UPGEM | UPGEM (UPGEM) | |
| 0x66d3cd48…aeee74 | Transfer | 35,984,907 | 4 days agoFri, 14 Aug 2026 05:01:08 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPGEM | UPGEM (UPGEM) | |
| 0x1549ecd9…1e1f2e | Transfer | 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0xbd79…8d58 | OUT | 0xa674…cedf | 1,000,000,000.000000 UPNUT | UPNUT (UPNUT) | |
| 0x1549ecd9…1e1f2e | Transfer | 35,984,841 | 4 days agoFri, 14 Aug 2026 05:01:01 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPNUT | UPNUT (UPNUT) | |
| 0xfcd7d4d8…84d921 | Transfer | 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0xbd79…8d58 | OUT | 0x572f…adb8 | 1,000,000,000.000000 UPWOLF | UPWOLF (UPWOLF) | |
| 0xfcd7d4d8…84d921 | Transfer | 35,984,775 | 4 days agoFri, 14 Aug 2026 05:00:55 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPWOLF | UPWOLF (UPWOLF) | |
| 0x0f9b1468…0794de | Transfer | 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0xbd79…8d58 | OUT | 0xf62b…d1d2 | 1,000,000,000.000000 UPFOX | UPFOX (UPFOX) | |
| 0x0f9b1468…0794de | Transfer | 35,984,752 | 4 days agoFri, 14 Aug 2026 05:00:52 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPFOX | UPFOX (UPFOX) | |
| 0xe7c7d12b…ce9a3e | Transfer | 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0xbd79…8d58 | OUT | 0xaae5…6416 | 1,000,000,000.000000 SHORTUP | SHORTUP (SHORTUP) | |
| 0xe7c7d12b…ce9a3e | Transfer | 35,865,980 | 4 days agoFri, 14 Aug 2026 01:42:26 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 SHORTUP | SHORTUP (SHORTUP) | |
| 0x6c5ccb13…5918ff | Transfer | 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0xbd79…8d58 | OUT | 0x2edd…5904 | 1,000,000,000.000000 LONGUP | LONGUP (LONGUP) | |
| 0x6c5ccb13…5918ff | Transfer | 35,865,914 | 4 days agoFri, 14 Aug 2026 01:42:20 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 LONGUP | LONGUP (LONGUP) | |
| 0x2104dd16…f76605 | Transfer | 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0xbd79…8d58 | OUT | 0xf618…39c4 | 1,000,000,000.000000 UPCAT | UPCAT (UPCAT) | |
| 0x2104dd16…f76605 | Transfer | 35,865,890 | 4 days agoFri, 14 Aug 2026 01:42:17 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPCAT | UPCAT (UPCAT) | |
| 0x1500c7fa…36bcdc | Transfer | 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0xbd79…8d58 | OUT | 0x4ece…cc28 | 1,000,000,000.000000 UPDOG | UPDOG (UPDOG) | |
| 0x1500c7fa…36bcdc | Transfer | 35,865,824 | 4 days agoFri, 14 Aug 2026 01:42:10 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 UPDOG | UPDOG (UPDOG) | |
| 0x03535066…33024d | Transfer | 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0xbd79…8d58 | OUT | 0xd89b…084f | 1,000,000,000.000000 Uppies.fun | Uppiestest (Uppies.fun) | |
| 0x03535066…33024d | Transfer | 35,865,801 | 4 days agoFri, 14 Aug 2026 01:42:08 UTC | 0x0000…0000 | IN | 0xbd79…8d58 | 1,000,000,000.000000 Uppies.fun | Uppiestest (Uppies.fun) |