// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import {ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import {ERC2981} from "@openzeppelin/contracts/token/common/ERC2981.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import {MerkleProof} from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
import {ITransferValidator} from "./TransferValidator.sol";
interface IERC20Burnable {
function transferFrom(address from, address to, uint256 amount) external returns (bool);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
}
/// The ERC721-C surface OpenSea checks for. Their own support article is
/// explicit: enforced creator earnings are offered to "an ERC721-C or
/// ERC1155-C compatible contract", and to nothing else.
interface ICreatorToken {
event TransferValidatorUpdated(address oldValidator, address newValidator);
function getTransferValidator() external view returns (address);
function getTransferValidationFunction()
external
view
returns (bytes4 functionSignature, bool isViewFunction);
function setTransferValidator(address validator) external;
}
/// @title GpuCardsV2
/// @notice The machines, rebuilt so the things V1 got wrong can be fixed.
///
/// V1 is a good contract that welded itself shut. Its mint price, its
/// overclock and fusion costs and its 70/30 split are all `immutable`,
/// its rig address is one-shot, and it has no transfer hook of any
/// kind. Every complaint this game has had — a 30-day drip nobody
/// wanted, upgrades priced at a fiftieth of the hashrate they create,
/// and a royalty that OpenSea leaves switched off — traces back to one
/// of those decisions. None of them could be undone.
///
/// So the numbers move here, and the reason they can is written on the
/// tin: this collection has an owner and that owner can change what a
/// machine costs. Every setter emits an event, because the deal is
/// flexibility in exchange for being watched, not in exchange for
/// trust.
///
/// ## The mirror
///
/// 2,745 machines across 414 wallets exist in V1. They are reissued
/// here at their OWN serial numbers — #42 stays #42 — with their tier
/// and their paid overclock levels intact, against a merkle root taken
/// at a published block. Serials 1..MIRROR_MAX belong to that past;
/// new mints start at NEW_SERIAL_BASE and cannot collide with it.
///
/// Nobody has to trust the list: the snapshot script, the block number
/// and the root are all in the repository, and re-running it produces
/// the same root or it produces a bug report.
///
/// ## Why the royalty finally bites
///
/// ERC-2981 only ever declared a number. Here every operator transfer
/// asks a validator first, which is the shape OpenSea requires before
/// it will enforce creator earnings at all. A player moving their own
/// machine is never blocked — see TransferValidator for why that line
/// is drawn where it is.
contract GpuCardsV2 is ERC721Enumerable, ERC2981, Ownable, EIP712, ICreatorToken {
using Strings for uint256;
uint8 public constant MAX_LEVEL = 5;
uint256 public constant LEVEL_BONUS_BPS = 2_000; // +20% of base per level
/// Base hashrate per tier, index 0 = tier 1. A TABLE, not a `pure`
/// function: V1 hardcoded six tiers into its bytecode, so the Singularity
/// was the end of the road forever and nothing could ever be built past it.
/// 172 wallets reached that end. Tiers can be appended here, which is what
/// lets the PC forge exist at all.
uint256[] public tierHash;
/// The highest serial V1 ever issued. Everything at or below this number is
/// reserved for the mirror and can only ever be claimed, never minted.
uint256 public constant MIRROR_MAX = 9_999;
/// Where machines made in V2 begin. Deliberately past the old range so a
/// serial can never mean two different cards.
uint256 public constant NEW_SERIAL_BASE = 10_001;
struct Card {
uint8 tier;
uint8 level;
}
mapping(uint256 => Card) private _cards;
/// Machines minted here, in V2. The mirror does not count: those are not
/// new machines, they are old ones being handed back.
uint256 public minted;
/// Machines reissued from V1.
uint256 public mirrored;
uint256 public nextSerial = NEW_SERIAL_BASE;
// ---- economics, all movable ----
uint256 public mintPrice;
uint256 public ocCostPerMh;
uint256 public fusionCostPerMh;
/// Miners' share of every fee, in bps.
uint256 public minerBps;
/// Hard ceiling on V2 mints. 0 = no ceiling.
uint256 public maxSupply;
uint256 public maxPerTx = 8;
/// Where the miners' share goes. Not one-shot this time — V1's `setRig`
/// could only ever be called once, which is why a new rig could never be
/// given the revenue and why this contract had to exist at all.
address payable public rig;
// ---- anti-bot, all movable ----
uint32 public mintCooldown = 30;
uint16 public maxPerWallet;
address public mintSigner;
uint16 public mintWindowCap = 400;
uint32 public mintWindowSecs = 1 hours;
uint32 private _windowStart;
uint16 private _windowMinted;
mapping(address => uint64) public lastMintAt;
mapping(address => uint16) public mintedBy;
mapping(address => uint256) public permitNonce;
// ---- the mirror ----
bytes32 public mirrorRoot;
/// Closes the door for good. Once shut, no serial from the old range can
/// ever be issued again, whatever an owner wants.
bool public mirrorClosed;
mapping(uint256 => bool) public mirrorClaimed;
// ---- ERC721-C ----
address public transferValidator;
/// Contracts allowed to mint and burn machines (the PC forge, and whatever
/// comes after it).
mapping(address => bool) public forges;
/// The PONSRIG half of the mint price, burned inside `mint` itself.
///
/// V1 could not do this. GpuCards was immutable and understood only ETH, so
/// the burn had to live in a separate MintPass and was enforced by the
/// SITE's signature rather than by the chain — which meant it held exactly
/// as long as the site kept signing, and `setMintSigner(0)` would have
/// stranded every unspent pass. Here the tokens go to 0x…dEaD in the same
/// transaction that makes the machine, or the machine is not made.
address public constant BURN = 0x000000000000000000000000000000000000dEaD;
IERC20Burnable public burnToken;
uint256 public burnPerMint;
string private _base;
string public contractURI;
bytes32 private constant PERMIT_TYPEHASH =
keccak256("MintPermit(address minter,uint256 count,uint256 nonce,uint256 deadline)");
event MintedCard(uint256 indexed serial, address indexed owner, uint8 tier);
event Mirrored(uint256 indexed serial, address indexed owner, uint8 tier, uint8 level);
event MirrorRootSet(bytes32 root);
event MirrorClosed(uint256 total);
event Overclocked(uint256 indexed serial, uint8 level, uint256 cost);
event Fused(uint256 indexed a, uint256 indexed b, uint256 indexed newSerial, uint8 tier, uint256 cost);
event EconomicsSet(uint256 mintPrice, uint256 ocCostPerMh, uint256 fusionCostPerMh, uint256 minerBps);
event SupplySet(uint256 maxSupply, uint256 maxPerTx);
event RigSet(address rig);
event GateSet(uint32 cooldown, uint16 maxPerWallet, uint16 windowCap, uint32 windowSecs);
event MintSignerSet(address signer);
event MetadataUpdate(uint256 _tokenId);
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
event ContractURIUpdated();
event TierSet(uint8 indexed tier, uint256 baseHash);
event ForgeSet(address indexed forge, bool allowed);
event MintBurnSet(address token, uint256 perMint);
error SoldOut();
error BadCount();
error WrongValue();
error Cooldown();
error WalletCapReached();
error NotYours();
error MaxedOut();
error TierMismatch();
error TopTier();
error SameCard();
error UnknownCard();
error RigNotSet();
error BadBps();
error EthSplitFailed();
error NotEOA();
error BadPermit();
error PermitExpired();
error WindowFull();
error MirrorIsClosed();
error MirrorNotOpen();
error AlreadyMirrored();
error BadProof();
error BadSerial();
error LengthMismatch();
error NotForge();
error BurnFailed();
constructor(
uint256 mintPrice_,
uint256 ocCostPerMh_,
uint256 fusionCostPerMh_,
uint256 minerBps_,
uint256 maxSupply_,
string memory baseURI_,
address royaltyReceiver
) ERC721("PonsRig Machines", "PRIG") Ownable(msg.sender) EIP712("PonsRig Machines", "2") {
if (minerBps_ > 10_000) revert BadBps();
mintPrice = mintPrice_;
ocCostPerMh = ocCostPerMh_;
fusionCostPerMh = fusionCostPerMh_;
minerBps = minerBps_;
maxSupply = maxSupply_;
_base = baseURI_;
_setDefaultRoyalty(royaltyReceiver, 500); // 5%
// The six V1 tiers, seeded so a mirrored machine weighs exactly what it
// weighed before. Spud, Miner, Volt, Blaze, Quantum, Singularity.
tierHash.push(10);
tierHash.push(25);
tierHash.push(60);
tierHash.push(150);
tierHash.push(400);
tierHash.push(1_000);
emit EconomicsSet(mintPrice_, ocCostPerMh_, fusionCostPerMh_, minerBps_);
}
// ============================================================
// Tier table
// ============================================================
function baseHashOf(uint8 tier) public view returns (uint256) {
if (tier == 0 || tier > tierHash.length) revert UnknownCard();
return tierHash[tier - 1];
}
/// How many tiers exist. Fusion tops out here, so appending a tier extends
/// the ladder for everyone at once.
function tiers() public view returns (uint8) {
return uint8(tierHash.length);
}
function _rollTier(uint256 serial) internal view virtual returns (uint8) {
uint256 r = uint256(
keccak256(
abi.encodePacked(
blockhash(block.number - 1),
block.prevrandao,
block.timestamp,
msg.sender,
serial,
address(this)
)
)
) % 10_000;
if (r < 5_200) return 1;
if (r < 7_800) return 2;
if (r < 9_100) return 3;
if (r < 9_800) return 4;
return 5;
}
// ============================================================
// The mirror — V1 holders take their machines back
// ============================================================
/// Reissue machines you held in V1, at their own serial numbers.
///
/// Batched because 414 wallets hold 2,745 machines and one of them holds
/// 114: a claim-one-at-a-time design would cost that wallet 114 signatures
/// to be made whole, which is a tax on the people this is meant to repay.
function claimMirror(
uint256[] calldata serials,
uint8[] calldata cardTiers,
uint8[] calldata levels,
bytes32[][] calldata proofs
) external returns (uint256 claimed) {
if (mirrorRoot == bytes32(0)) revert MirrorNotOpen();
if (mirrorClosed) revert MirrorIsClosed();
if (
serials.length != cardTiers.length || serials.length != levels.length
|| serials.length != proofs.length
) revert LengthMismatch();
for (uint256 i = 0; i < serials.length; i++) {
uint256 serial = serials[i];
if (serial == 0 || serial > MIRROR_MAX) revert BadSerial();
if (mirrorClaimed[serial]) revert AlreadyMirrored();
if (cardTiers[i] == 0 || cardTiers[i] > tierHash.length || levels[i] > MAX_LEVEL) revert UnknownCard();
// The leaf binds the machine to the wallet that held it at the
// snapshot block: a proof is worthless in anybody else's hands.
bytes32 leaf = keccak256(abi.encodePacked(msg.sender, serial, cardTiers[i], levels[i]));
if (!MerkleProof.verify(proofs[i], mirrorRoot, leaf)) revert BadProof();
mirrorClaimed[serial] = true;
_cards[serial] = Card({tier: cardTiers[i], level: levels[i]});
_safeMint(msg.sender, serial);
emit Mirrored(serial, msg.sender, cardTiers[i], levels[i]);
}
mirrored += serials.length;
return serials.length;
}
/// Publish the snapshot. Settable until the mirror is closed, because a
/// root that turns out to disagree with the chain has to be fixable — the
/// first snapshot run of this migration found 304 machines out of 2,745
/// and looked entirely plausible doing it.
function setMirrorRoot(bytes32 root) external onlyOwner {
if (mirrorClosed) revert MirrorIsClosed();
mirrorRoot = root;
emit MirrorRootSet(root);
}
/// One-way. After this no old serial can ever be issued again, which is the
/// promise that stops the mirror from becoming a back door to free mints.
function closeMirror() external onlyOwner {
mirrorClosed = true;
emit MirrorClosed(mirrored);
}
// ============================================================
// Mint
// ============================================================
function mint(uint256 count, uint256 deadline, bytes calldata permit)
external
payable
returns (uint256 first)
{
if (msg.sender != tx.origin) revert NotEOA();
if (count == 0 || count > maxPerTx) revert BadCount();
if (maxSupply != 0 && minted + count > maxSupply) revert SoldOut();
if (msg.value != mintPrice * count) revert WrongValue();
if (mintCooldown != 0 && block.timestamp < lastMintAt[msg.sender] + mintCooldown) {
revert Cooldown();
}
if (maxPerWallet != 0 && mintedBy[msg.sender] + count > maxPerWallet) {
revert WalletCapReached();
}
if (mintSigner != address(0)) {
if (block.timestamp > deadline) revert PermitExpired();
bytes32 digest = _hashTypedDataV4(
keccak256(
abi.encode(PERMIT_TYPEHASH, msg.sender, count, permitNonce[msg.sender], deadline)
)
);
(address recovered,,) = ECDSA.tryRecover(digest, permit);
if (recovered != mintSigner) revert BadPermit();
permitNonce[msg.sender] += 1;
}
if (mintWindowCap != 0) {
if (block.timestamp >= uint256(_windowStart) + mintWindowSecs) {
_windowStart = uint32(block.timestamp);
_windowMinted = 0;
}
if (_windowMinted + count > mintWindowCap) revert WindowFull();
_windowMinted += uint16(count);
}
// The PONSRIG half. Burned here, in the same transaction, so a machine
// cannot exist without it — no pass to buy, nothing to strand, and no
// way for the site to be the thing that enforces it.
if (burnPerMint > 0 && address(burnToken) != address(0)) {
if (!burnToken.transferFrom(msg.sender, BURN, burnPerMint * count)) revert BurnFailed();
}
lastMintAt[msg.sender] = uint64(block.timestamp);
mintedBy[msg.sender] += uint16(count);
minted += count;
first = nextSerial;
for (uint256 i = 0; i < count; i++) {
uint256 serial = nextSerial++;
uint8 tier = _rollTier(serial);
_cards[serial] = Card({tier: tier, level: 0});
_safeMint(msg.sender, serial);
emit MintedCard(serial, msg.sender, tier);
}
if (rig != address(0)) _split(msg.value);
}
function cooldownLeft(address who) external view returns (uint64) {
uint256 readyAt = uint256(lastMintAt[who]) + mintCooldown;
return block.timestamp >= readyAt ? 0 : uint64(readyAt - block.timestamp);
}
function windowMintsLeft() external view returns (uint256) {
if (mintWindowCap == 0) return type(uint256).max;
if (block.timestamp >= uint256(_windowStart) + mintWindowSecs) return mintWindowCap;
return mintWindowCap - _windowMinted;
}
// ============================================================
// Upgrades
// ============================================================
function hashrateOf(uint256 serial) public view returns (uint256) {
Card memory c = _cards[serial];
if (c.tier == 0) revert UnknownCard();
uint256 base = baseHashOf(c.tier);
return base + (base * LEVEL_BONUS_BPS * c.level) / 10_000;
}
function ocCost(uint256 serial) public view returns (uint256) {
Card memory c = _cards[serial];
if (c.tier == 0) revert UnknownCard();
return baseHashOf(c.tier) * ocCostPerMh * (1 << c.level);
}
function overclock(uint256 serial) external payable {
if (ownerOf(serial) != msg.sender) revert NotYours();
Card storage c = _cards[serial];
if (c.level >= MAX_LEVEL) revert MaxedOut();
uint256 cost = baseHashOf(c.tier) * ocCostPerMh * (1 << c.level);
if (msg.value != cost) revert WrongValue();
c.level += 1;
_split(msg.value);
emit Overclocked(serial, c.level, cost);
emit MetadataUpdate(serial);
}
function fusionCost(uint8 tier) public view returns (uint256) {
return baseHashOf(tier) * fusionCostPerMh;
}
function fuse(uint256 serialA, uint256 serialB) external payable returns (uint256 newSerial) {
if (serialA == serialB) revert SameCard();
if (ownerOf(serialA) != msg.sender || ownerOf(serialB) != msg.sender) revert NotYours();
Card memory a = _cards[serialA];
Card memory b = _cards[serialB];
if (a.tier != b.tier) revert TierMismatch();
if (a.tier >= tierHash.length) revert TopTier();
uint256 cost = baseHashOf(a.tier) * fusionCostPerMh;
if (msg.value != cost) revert WrongValue();
uint8 newTier = a.tier + 1;
_burn(serialA);
_burn(serialB);
delete _cards[serialA];
delete _cards[serialB];
newSerial = nextSerial++;
_cards[newSerial] = Card({tier: newTier, level: 0});
_safeMint(msg.sender, newSerial);
_split(msg.value);
emit Fused(serialA, serialB, newSerial, newTier, cost);
}
// ============================================================
// Money
// ============================================================
function _split(uint256 amount) internal {
if (rig == address(0)) return;
uint256 toMiners = (amount * minerBps) / 10_000;
if (toMiners == 0) return;
(bool ok,) = rig.call{value: toMiners}("");
if (!ok) revert EthSplitFailed();
}
receive() external payable {}
function sweep(address payable to) external onlyOwner {
(bool ok,) = to.call{value: address(this).balance}("");
if (!ok) revert EthSplitFailed();
}
// ============================================================
// Views the site reads
// ============================================================
function cardInfo(uint256 serial)
external
view
returns (uint8 tier, uint8 level, uint256 hashrate, address holder)
{
Card memory c = _cards[serial];
if (c.tier == 0) revert UnknownCard();
return (c.tier, c.level, hashrateOf(serial), ownerOf(serial));
}
function cardsOf(address who)
external
view
returns (
uint256[] memory serials,
uint8[] memory cardTiers,
uint8[] memory levels,
uint256[] memory hashes
)
{
uint256 n = balanceOf(who);
serials = new uint256[](n);
cardTiers = new uint8[](n);
levels = new uint8[](n);
hashes = new uint256[](n);
for (uint256 i = 0; i < n; i++) {
uint256 s = tokenOfOwnerByIndex(who, i);
Card memory c = _cards[s];
serials[i] = s;
cardTiers[i] = c.tier;
levels[i] = c.level;
hashes[i] = hashrateOf(s);
}
}
// ============================================================
// ERC721-C
// ============================================================
function getTransferValidator() external view returns (address) {
return transferValidator;
}
function getTransferValidationFunction()
external
pure
returns (bytes4 functionSignature, bool isViewFunction)
{
return (ITransferValidator.validateTransfer.selector, true);
}
function setTransferValidator(address validator) external onlyOwner {
address old = transferValidator;
transferValidator = validator;
emit TransferValidatorUpdated(old, validator);
}
/// The one hook the whole royalty story hangs on.
///
/// `auth` is non-zero only when somebody called `transferFrom` — mints,
/// burns and the contract's own internal moves come through with zero and
/// are never questioned. So the validator sees exactly the case it exists
/// for: an operator moving a machine that is not theirs.
function _update(address to, uint256 tokenId, address auth)
internal
override(ERC721Enumerable)
returns (address)
{
address from = super._update(to, tokenId, auth);
address v = transferValidator;
if (v != address(0) && auth != address(0)) {
ITransferValidator(v).validateTransfer(auth, from, to, tokenId);
}
return from;
}
// ============================================================
// Owner
// ============================================================
function setEconomics(
uint256 mintPrice_,
uint256 ocCostPerMh_,
uint256 fusionCostPerMh_,
uint256 minerBps_
) external onlyOwner {
if (minerBps_ > 10_000) revert BadBps();
mintPrice = mintPrice_;
ocCostPerMh = ocCostPerMh_;
fusionCostPerMh = fusionCostPerMh_;
minerBps = minerBps_;
emit EconomicsSet(mintPrice_, ocCostPerMh_, fusionCostPerMh_, minerBps_);
}
function setSupply(uint256 maxSupply_, uint256 maxPerTx_) external onlyOwner {
if (maxPerTx_ == 0) revert BadCount();
maxSupply = maxSupply_;
maxPerTx = maxPerTx_;
emit SupplySet(maxSupply_, maxPerTx_);
}
function setRig(address payable r) external onlyOwner {
rig = r;
emit RigSet(r);
}
// ============================================================
// Forges — contracts allowed to make machines
// ============================================================
/// Append a tier to the ladder. This is how the PC exists: 172 wallets hold
/// a Singularity and V1 had nothing above it, so their only remaining move
/// was to sell.
function addTier(uint256 baseHash) external onlyOwner returns (uint8 tier) {
if (baseHash == 0) revert UnknownCard();
tierHash.push(baseHash);
tier = uint8(tierHash.length);
emit TierSet(tier, baseHash);
}
/// Retune an existing tier's hashrate. Live machines change weight the next
/// time the rig reads them, which is why the rig re-reads on stake.
function setTierHash(uint8 tier, uint256 baseHash) external onlyOwner {
if (tier == 0 || tier > tierHash.length || baseHash == 0) revert UnknownCard();
tierHash[tier - 1] = baseHash;
emit TierSet(tier, baseHash);
emit BatchMetadataUpdate(1, nextSerial);
}
/// Let a contract mint machines of a given tier — the PC forge, and
/// whatever comes after it. Deliberately a role rather than a hardcoded
/// address: V1 could never grant this to anything, which is why every new
/// mechanic had to be built around the collection instead of into it.
function setForge(address forge, bool ok) external onlyOwner {
forges[forge] = ok;
emit ForgeSet(forge, ok);
}
/// Mint a machine at a chosen tier. Forge-only, and it can never touch the
/// mirror range: a forge that could issue old serials would be a back door
/// straight past the snapshot.
function forgeMint(address to, uint8 tier, uint8 level)
external
returns (uint256 serial)
{
if (!forges[msg.sender]) revert NotForge();
if (tier == 0 || tier > tierHash.length) revert UnknownCard();
if (level > MAX_LEVEL) revert MaxedOut();
serial = nextSerial++;
_cards[serial] = Card({tier: tier, level: level});
_safeMint(to, serial);
emit MintedCard(serial, to, tier);
}
/// Burn a machine on a forge's behalf. The holder must have approved the
/// forge, exactly as they would for any other contract taking a token.
function forgeBurn(uint256 serial) external {
if (!forges[msg.sender]) revert NotForge();
address holder = ownerOf(serial);
if (holder != msg.sender && !isApprovedForAll(holder, msg.sender)
&& getApproved(serial) != msg.sender) revert NotYours();
_burn(serial);
delete _cards[serial];
}
function setGate(uint32 cooldown, uint16 walletCap, uint16 windowCap, uint32 windowSecs)
external
onlyOwner
{
mintCooldown = cooldown;
maxPerWallet = walletCap;
mintWindowCap = windowCap;
mintWindowSecs = windowSecs == 0 ? 1 hours : windowSecs;
emit GateSet(cooldown, walletCap, windowCap, mintWindowSecs);
}
function setMintBurn(IERC20Burnable token, uint256 perMint) external onlyOwner {
burnToken = token;
burnPerMint = perMint;
emit MintBurnSet(address(token), perMint);
}
/// Everything the shop needs to decide whether a wallet can mint.
function mintStatusOf(address who)
external
view
returns (uint256 ethPrice, uint256 burn, uint256 balance, uint256 allowed, uint256 left)
{
ethPrice = mintPrice;
burn = burnPerMint;
if (address(burnToken) != address(0)) {
balance = burnToken.balanceOf(who);
allowed = burnToken.allowance(who, address(this));
}
left = maxSupply == 0 ? type(uint256).max : maxSupply - minted;
}
function setMintSigner(address signer) external onlyOwner {
mintSigner = signer;
emit MintSignerSet(signer);
}
function setRoyalty(address receiver, uint96 bps) external onlyOwner {
_setDefaultRoyalty(receiver, bps);
}
function setBaseURI(string calldata b) external onlyOwner {
_base = b;
emit BatchMetadataUpdate(1, nextSerial);
}
function setContractURI(string calldata u) external onlyOwner {
contractURI = u;
emit ContractURIUpdated();
}
function mintPermitDigest(address minter, uint256 count, uint256 deadline)
external
view
returns (bytes32)
{
return _hashTypedDataV4(
keccak256(abi.encode(PERMIT_TYPEHASH, minter, count, permitNonce[minter], deadline))
);
}
// ============================================================
// Plumbing
// ============================================================
function _baseURI() internal view override returns (string memory) {
return _base;
}
function _increaseBalance(address account, uint128 amount)
internal
override(ERC721Enumerable)
{
super._increaseBalance(account, amount);
}
function supportsInterface(bytes4 id)
public
view
override(ERC721Enumerable, ERC2981)
returns (bool)
{
return id == type(ICreatorToken).interfaceId || super.supportsInterface(id);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "mintPrice_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "ocCostPerMh_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fusionCostPerMh_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minerBps_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxSupply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "baseURI_",
"type": "string",
"internalType": "string"
},
{
"name": "royaltyReceiver",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyMirrored",
"type": "error",
"inputs": []
},
{
"name": "BadBps",
"type": "error",
"inputs": []
},
{
"name": "BadCount",
"type": "error",
"inputs": []
},
{
"name": "BadPermit",
"type": "error",
"inputs": []
},
{
"name": "BadProof",
"type": "error",
"inputs": []
},
{
"name": "BadSerial",
"type": "error",
"inputs": []
},
{
"name": "BurnFailed",
"type": "error",
"inputs": []
},
{
"name": "Cooldown",
"type": "error",
"inputs": []
},
{
"name": "ERC2981InvalidDefaultRoyalty",
"type": "error",
"inputs": [
{
"name": "numerator",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "denominator",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC2981InvalidDefaultRoyaltyReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC2981InvalidTokenRoyalty",
"type": "error",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "numerator",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "denominator",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC2981InvalidTokenRoyaltyReceiver",
"type": "error",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721EnumerableForbiddenBatchMint",
"type": "error",
"inputs": []
},
{
"name": "ERC721IncorrectOwner",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InsufficientApproval",
"type": "error",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC721InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidOperator",
"type": "error",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC721NonexistentToken",
"type": "error",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC721OutOfBoundsIndex",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "EthSplitFailed",
"type": "error",
"inputs": []
},
{
"name": "InvalidShortString",
"type": "error",
"inputs": []
},
{
"name": "LengthMismatch",
"type": "error",
"inputs": []
},
{
"name": "MaxedOut",
"type": "error",
"inputs": []
},
{
"name": "MirrorIsClosed",
"type": "error",
"inputs": []
},
{
"name": "MirrorNotOpen",
"type": "error",
"inputs": []
},
{
"name": "NotEOA",
"type": "error",
"inputs": []
},
{
"name": "NotForge",
"type": "error",
"inputs": []
},
{
"name": "NotYours",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "PermitExpired",
"type": "error",
"inputs": []
},
{
"name": "RigNotSet",
"type": "error",
"inputs": []
},
{
"name": "SameCard",
"type": "error",
"inputs": []
},
{
"name": "SoldOut",
"type": "error",
"inputs": []
},
{
"name": "StringTooLong",
"type": "error",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
},
{
"name": "TierMismatch",
"type": "error",
"inputs": []
},
{
"name": "TopTier",
"type": "error",
"inputs": []
},
{
"name": "UnknownCard",
"type": "error",
"inputs": []
},
{
"name": "WalletCapReached",
"type": "error",
"inputs": []
},
{
"name": "WindowFull",
"type": "error",
"inputs": []
},
{
"name": "WrongValue",
"type": "error",
"inputs": []
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ApprovalForAll",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "BatchMetadataUpdate",
"type": "event",
"inputs": [
{
"name": "_fromTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "_toTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ContractURIUpdated",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "EIP712DomainChanged",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "EconomicsSet",
"type": "event",
"inputs": [
{
"name": "mintPrice",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ocCostPerMh",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "fusionCostPerMh",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "minerBps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ForgeSet",
"type": "event",
"inputs": [
{
"name": "forge",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "allowed",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "Fused",
"type": "event",
"inputs": [
{
"name": "a",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "b",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "newSerial",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "tier",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
},
{
"name": "cost",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "GateSet",
"type": "event",
"inputs": [
{
"name": "cooldown",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "maxPerWallet",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "windowCap",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "windowSecs",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
}
],
"anonymous": false
},
{
"name": "MetadataUpdate",
"type": "event",
"inputs": [
{
"name": "_tokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MintBurnSet",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "perMint",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MintSignerSet",
"type": "event",
"inputs": [
{
"name": "signer",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MintedCard",
"type": "event",
"inputs": [
{
"name": "serial",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tier",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"anonymous": false
},
{
"name": "MirrorClosed",
"type": "event",
"inputs": [
{
"name": "total",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MirrorRootSet",
"type": "event",
"inputs": [
{
"name": "root",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "Mirrored",
"type": "event",
"inputs": [
{
"name": "serial",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tier",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
},
{
"name": "level",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"anonymous": false
},
{
"name": "Overclocked",
"type": "event",
"inputs": [
{
"name": "serial",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "level",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
},
{
"name": "cost",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RigSet",
"type": "event",
"inputs": [
{
"name": "rig",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "SupplySet",
"type": "event",
"inputs": [
{
"name": "maxSupply",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "maxPerTx",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TierSet",
"type": "event",
"inputs": [
{
"name": "tier",
"type": "uint8",
"indexed": true,
"internalType": "uint8"
},
{
"name": "baseHash",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TransferValidatorUpdated",
"type": "event",
"inputs": [
{
"name": "oldValidator",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "newValidator",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "BURN",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "LEVEL_BONUS_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_LEVEL",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "MIRROR_MAX",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "NEW_SERIAL_BASE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "addTier",
"type": "function",
"inputs": [
{
"name": "baseHash",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "nonpayable"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "baseHashOf",
"type": "function",
"inputs": [
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "burnPerMint",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "burnToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20Burnable"
}
],
"stateMutability": "view"
},
{
"name": "cardInfo",
"type": "function",
"inputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "level",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "hashrate",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "holder",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "cardsOf",
"type": "function",
"inputs": [
{
"name": "who",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "serials",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "cardTiers",
"type": "uint8[]",
"internalType": "uint8[]"
},
{
"name": "levels",
"type": "uint8[]",
"internalType": "uint8[]"
},
{
"name": "hashes",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "claimMirror",
"type": "function",
"inputs": [
{
"name": "serials",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "cardTiers",
"type": "uint8[]",
"internalType": "uint8[]"
},
{
"name": "levels",
"type": "uint8[]",
"internalType": "uint8[]"
},
{
"name": "proofs",
"type": "bytes32[][]",
"internalType": "bytes32[][]"
}
],
"outputs": [
{
"name": "claimed",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "closeMirror",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "contractURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "cooldownLeft",
"type": "function",
"inputs": [
{
"name": "who",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "eip712Domain",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "fields",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "version",
"type": "string",
"internalType": "string"
},
{
"name": "chainId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "verifyingContract",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "extensions",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "forgeBurn",
"type": "function",
"inputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "forgeMint",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "level",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "forges",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "fuse",
"type": "function",
"inputs": [
{
"name": "serialA",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "serialB",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "newSerial",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "fusionCost",
"type": "function",
"inputs": [
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "fusionCostPerMh",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getApproved",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getTransferValidationFunction",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "functionSignature",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "isViewFunction",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "getTransferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "hashrateOf",
"type": "function",
"inputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "isApprovedForAll",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "lastMintAt",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "maxPerTx",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxPerWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "maxSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "minerBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mint",
"type": "function",
"inputs": [
{
"name": "count",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "permit",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "first",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "mintCooldown",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"name": "mintPermitDigest",
"type": "function",
"inputs": [
{
"name": "minter",
"type": "address",
"internalType": "address"
},
{
"name": "count",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "mintPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mintSigner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "mintStatusOf",
"type": "function",
"inputs": [
{
"name": "who",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "ethPrice",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "burn",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "allowed",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "left",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mintWindowCap",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "mintWindowSecs",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"name": "minted",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mintedBy",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "mirrorClaimed",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "mirrorClosed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "mirrorRoot",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "mirrored",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "nextSerial",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ocCost",
"type": "function",
"inputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ocCostPerMh",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "overclock",
"type": "function",
"inputs": [
{
"name": "serial",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ownerOf",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "permitNonce",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rig",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address payable"
}
],
"stateMutability": "view"
},
{
"name": "royaltyInfo",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "salePrice",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setApprovalForAll",
"type": "function",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setBaseURI",
"type": "function",
"inputs": [
{
"name": "b",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setContractURI",
"type": "function",
"inputs": [
{
"name": "u",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setEconomics",
"type": "function",
"inputs": [
{
"name": "mintPrice_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "ocCostPerMh_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fusionCostPerMh_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minerBps_",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setForge",
"type": "function",
"inputs": [
{
"name": "forge",
"type": "address",
"internalType": "address"
},
{
"name": "ok",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setGate",
"type": "function",
"inputs": [
{
"name": "cooldown",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "walletCap",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "windowCap",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "windowSecs",
"type": "uint32",
"internalType": "uint32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMintBurn",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "contract IERC20Burnable"
},
{
"name": "perMint",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMintSigner",
"type": "function",
"inputs": [
{
"name": "signer",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMirrorRoot",
"type": "function",
"inputs": [
{
"name": "root",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRig",
"type": "function",
"inputs": [
{
"name": "r",
"type": "address",
"internalType": "address payable"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRoyalty",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "bps",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSupply",
"type": "function",
"inputs": [
{
"name": "maxSupply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxPerTx_",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTierHash",
"type": "function",
"inputs": [
{
"name": "tier",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "baseHash",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTransferValidator",
"type": "function",
"inputs": [
{
"name": "validator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "id",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "sweep",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address payable"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "tierHash",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tiers",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "tokenByIndex",
"type": "function",
"inputs": [
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokenOfOwnerByIndex",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokenURI",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "windowMintsLeft",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6101606040526127116013556008601955601a805463ffffffff60a01b1916600f60a11b179055601b805465ffffffffffff60a01b191662e1001960a41b17905534801561004b575f5ffd5b5060405161569638038061569683398101604081905261006a91610476565b6040518060400160405280601081526020016f506f6e73526967204d616368696e657360801b815250604051806040016040528060018152602001601960f91b815250336040518060400160405280601081526020016f506f6e73526967204d616368696e657360801b815250604051806040016040528060048152602001635052494760e01b815250815f908161010291906105eb565b50600161010f82826105eb565b5050506001600160a01b03811661014057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61014981610317565b5061015382610368565b6101205261016081610368565b61014052815160208084019190912060e052815190820120610100524660a0526101ec60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05261271084111561021857604051636e549e5960e01b815260040160405180910390fd5b60148790556015869055601685905560178490556018839055602661023d83826105eb565b5061024a816101f46103a5565b600f8054600180820183555f839052600a7f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802928301558254808201845560199083015582548082018455603c9083015582548082018455609690830155825480820184556101909083015582549081019092556103e89101556040805188815260208101889052908101869052606081018590527fbebb8930916fe922ee99c4ce187becfd067e5ee4bf124215aac4f34b67e858be9060800160405180910390a1505050505050506106fd565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f829050601f81511115610392578260405163305a27a960e01b815260040161013791906106a5565b805161039d826106da565b179392505050565b6127106001600160601b0382168110156103e457604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610137565b6001600160a01b03831661040d57604051635b6cc80560e11b81525f6004820152602401610137565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610471575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a03121561048c575f5ffd5b8751602089015160408a015160608b015160808c015160a08d0151949b50929950909750955093506001600160401b038111156104c7575f5ffd5b8801601f81018a136104d7575f5ffd5b80516001600160401b038111156104f0576104f0610447565b604051601f8201601f19908116603f011681016001600160401b038111828210171561051e5761051e610447565b6040528181528282016020018c1015610535575f5ffd5b8160208401602083015e5f6020838301015280945050505061055960c0890161045b565b905092959891949750929550565b600181811c9082168061057b57607f821691505b60208210810361059957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105e657805f5260205f20601f840160051c810160208510156105c45750805b601f840160051c820191505b818110156105e3575f81556001016105d0565b50505b505050565b81516001600160401b0381111561060457610604610447565b610618816106128454610567565b8461059f565b6020601f82116001811461064a575f83156106335750848201515b5f19600385901b1c1916600184901b1784556105e3565b5f84815260208120601f198516915b828110156106795787850151825560209485019460019092019101610659565b508482101561069657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610599575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051614f4861074e5f395f61372501525f6136f501525f613bad01525f613b8501525f613ae001525f613b0a01525f613b340152614f485ff3fe6080604052600436106104be575f3560e01c80637a6bcd111161026d578063bbfb2ac31161014a578063efac79ef116100be578063f6bc0f5111610083578063f6bc0f5114610ef4578063f77843dd14610f17578063f7ff752014610f64578063f968adbe14610f83578063faa0a26414610f98578063fc784d4914610fb7575f5ffd5b8063efac79ef14610e7a578063f17af48d14610e8e578063f2fde38b14610ead578063f482258114610ecc578063f68858e414610ee1575f5ffd5b8063d5abeb011161010f578063d5abeb0114610ddf578063d7f130f114610df4578063df3b89c014610e13578063e84a972814610e28578063e8a3d48514610e47578063e985e9c514610e5b575f5ffd5b8063bbfb2ac314610d48578063bc46d67514610d67578063c0a2526c14610d7c578063c7e93f2c14610d91578063c87b56dd14610dc0575f5ffd5b806396521064116101e1578063ab135df3116101a6578063ab135df314610c89578063abb890ec14610cb7578063b11b2b9214610ccc578063b245a0e514610ceb578063b52eea9b14610d0a578063b88d4fde14610d29575f5ffd5b80639652106414610c03578063a22cb46514610c22578063a49062d414610c41578063a939bd1714610c55578063a9fc664e14610c6a575f5ffd5b80638da5cb5b116102325780638da5cb5b14610b6b5780638e244acb14610b885780638f2fc60b14610b9c578063938e3d7b14610bbb5780639434ca5d14610bda57806395d89b4114610bef575f5ffd5b80637a6bcd1114610ac85780637c62950114610adb57806382fbcc6e14610b0657806383de199a14610b2557806384b0196e14610b44575f5ffd5b80632a84dd901161039b5780634f6ccce71161030f5780636352211e116102d45780636352211e14610a055780636817c76c14610a245780636d1f8b6214610a395780636ff152bc14610a4e57806370a0823114610a95578063715018a614610ab4575f5ffd5b80634f6ccce714610974578063536e60cd146109935780635425e072146109b257806355f804b3146109d157806363356ce6146109f0575f5ffd5b80633cef28d2116103605780633cef28d2146108bd5780633e9c5ad6146108ec57806342842e0e1461090b578063453c23101461092a5780634a95d9d51461094b5780634f02c4201461095f575f5ffd5b80632a84dd901461080d5780632d6e44a91461082c5780632f745c591461084b578063347415c91461086a578063384c40ba14610889575f5ffd5b806316ec2b811161043257806321a7178d116103f757806321a7178d1461072b57806323b872dd14610759578063251c64a2146107785780632811d32a1461079157806329e38d5e146107b05780632a55205a146107cf575f5ffd5b806316ec2b811461066257806318160ddd146106935780631dd7cb96146106a75780631e827e59146106bc5780632000d430146106f3575f5ffd5b8063089449a511610483578063089449a5146105aa57806308ae6377146105c957806308dc9f42146105ec578063095ea7b3146105ff578063098144d41461061e5780630d705df61461063b575f5ffd5b80630122795e146104c957806301681a621461050257806301ffc9a71461052357806306fdde0314610552578063081812fc14610573575f5ffd5b366104c557005b5f5ffd5b3480156104d4575f5ffd5b50601b546104ea90600160a01b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561050d575f5ffd5b5061052161051c36600461446b565b610fd6565b005b34801561052e575f5ffd5b5061054261053d36600461449b565b611052565b60405190151581526020016104f9565b34801561055d575f5ffd5b5061056661107c565b6040516104f991906144e4565b34801561057e575f5ffd5b5061059261058d3660046144f6565b61110b565b6040516001600160a01b0390911681526020016104f9565b3480156105b5575f5ffd5b506105216105c436600461451a565b611132565b3480156105d4575f5ffd5b506105de60135481565b6040519081526020016104f9565b6105de6105fa36600461458e565b611198565b34801561060a575f5ffd5b506105216106193660046145dc565b611784565b348015610629575f5ffd5b506022546001600160a01b0316610592565b348015610646575f5ffd5b506040805163657711f560e11b815260016020820152016104f9565b34801561066d575f5ffd5b5061068161067c3660046144f6565b61178f565b60405160ff90911681526020016104f9565b34801561069e575f5ffd5b506008546105de565b3480156106b2575f5ffd5b506105de60165481565b3480156106c7575f5ffd5b506106db6106d636600461446b565b61182a565b6040516001600160401b0390911681526020016104f9565b3480156106fe575f5ffd5b50601a5461071690600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016104f9565b348015610736575f5ffd5b5061054261074536600461446b565b60236020525f908152604090205460ff1681565b348015610764575f5ffd5b50610521610773366004614606565b61188b565b348015610783575f5ffd5b506020546105429060ff1681565b34801561079c575f5ffd5b506105de6107ab366004614659565b611919565b3480156107bb575f5ffd5b50602254610592906001600160a01b031681565b3480156107da575f5ffd5b506107ee6107e936600461469b565b611a4c565b604080516001600160a01b0390931683526020830191909152016104f9565b348015610818575f5ffd5b506105de6108273660046146bb565b611ac7565b348015610837575f5ffd5b506105de610846366004614714565b611b2a565b348015610856575f5ffd5b506105de6108653660046145dc565b611f88565b348015610875575f5ffd5b506105de6108843660046144f6565b611feb565b348015610894575f5ffd5b506106db6108a336600461446b565b601c6020525f90815260409020546001600160401b031681565b3480156108c8575f5ffd5b506104ea6108d736600461446b565b601d6020525f908152604090205461ffff1681565b3480156108f7575f5ffd5b506105216109063660046144f6565b612069565b348015610916575f5ffd5b50610521610925366004614606565b6120d1565b348015610935575f5ffd5b50601a546104ea90600160c01b900461ffff1681565b348015610956575f5ffd5b50600f54610681565b34801561096a575f5ffd5b506105de60115481565b34801561097f575f5ffd5b506105de61098e3660046144f6565b6120f0565b34801561099e575f5ffd5b50601a54610592906001600160a01b031681565b3480156109bd575f5ffd5b506105216109cc3660046147de565b612135565b3480156109dc575f5ffd5b506105216109eb36600461480d565b6121c3565b3480156109fb575f5ffd5b506105de601f5481565b348015610a10575f5ffd5b50610592610a1f3660046144f6565b61221c565b348015610a2f575f5ffd5b506105de60145481565b348015610a44575f5ffd5b506105de6107d081565b348015610a59575f5ffd5b50610a6d610a6836600461446b565b612226565b604080519586526020860194909452928401919091526060830152608082015260a0016104f9565b348015610aa0575f5ffd5b506105de610aaf36600461446b565b612352565b348015610abf575f5ffd5b50610521612397565b610521610ad63660046144f6565b6123aa565b348015610ae6575f5ffd5b506105de610af536600461446b565b601e6020525f908152604090205481565b348015610b11575f5ffd5b50610521610b2036600461484b565b612525565b348015610b30575f5ffd5b506105de610b3f3660046144f6565b61260d565b348015610b4f575f5ffd5b50610b586126a2565b6040516104f9979695949392919061489f565b348015610b76575f5ffd5b50600c546001600160a01b0316610592565b348015610b93575f5ffd5b506105216126e4565b348015610ba7575f5ffd5b50610521610bb636600461490e565b61272f565b348015610bc6575f5ffd5b50610521610bd536600461480d565b612741565b348015610be5575f5ffd5b506105de60175481565b348015610bfa575f5ffd5b50610566612783565b348015610c0e575f5ffd5b50610521610c1d366004614969565b612792565b348015610c2d575f5ffd5b50610521610c3c36600461451a565b61287b565b348015610c4c575f5ffd5b50610681600581565b348015610c60575f5ffd5b506105de61270f81565b348015610c75575f5ffd5b50610521610c8436600461446b565b612886565b348015610c94575f5ffd5b50610542610ca33660046144f6565b60216020525f908152604090205460ff1681565b348015610cc2575f5ffd5b506105de60125481565b348015610cd7575f5ffd5b50610521610ce636600461446b565b6128e8565b348015610cf6575f5ffd5b506105de610d053660046144f6565b61293e565b348015610d15575f5ffd5b50610521610d243660046145dc565b61295d565b348015610d34575f5ffd5b50610521610d433660046149ce565b6129be565b348015610d53575f5ffd5b50610521610d623660046144f6565b6129d6565b348015610d72575f5ffd5b506105de60155481565b348015610d87575f5ffd5b5061059261dead81565b348015610d9c575f5ffd5b50610db0610dab36600461446b565b612a8e565b6040516104f99493929190614adf565b348015610dcb575f5ffd5b50610566610dda3660046144f6565b612ca5565b348015610dea575f5ffd5b506105de60185481565b348015610dff575f5ffd5b506105de610e0e3660046146bb565b612d09565b348015610e1e575f5ffd5b506105de60255481565b348015610e33575f5ffd5b50610521610e4236600461446b565b612d20565b348015610e52575f5ffd5b50610566612d76565b348015610e66575f5ffd5b50610542610e75366004614b36565b612e02565b348015610e85575f5ffd5b506105de612e2f565b348015610e99575f5ffd5b50601b54610592906001600160a01b031681565b348015610eb8575f5ffd5b50610521610ec736600461446b565b612eb0565b348015610ed7575f5ffd5b506105de61271181565b6105de610eef36600461469b565b612eed565b348015610eff575f5ffd5b50601b5461071690600160b01b900463ffffffff1681565b348015610f22575f5ffd5b50610f36610f313660046144f6565b613136565b6040805160ff9586168152949093166020850152918301526001600160a01b031660608201526080016104f9565b348015610f6f575f5ffd5b506105de610f7e366004614b62565b6131b3565b348015610f8e575f5ffd5b506105de60195481565b348015610fa3575f5ffd5b50602454610592906001600160a01b031681565b348015610fc2575f5ffd5b50610521610fd136600461469b565b613222565b610fde61328a565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611027576040519150601f19603f3d011682016040523d82523d5f602084013e61102c565b606091505b505090508061104e5760405163e605dacf60e01b815260040160405180910390fd5b5050565b5f6001600160e01b03198216632b435fdb60e21b14806110765750611076826132b7565b92915050565b60605f805461108a90614b94565b80601f01602080910402602001604051908101604052809291908181526020018280546110b690614b94565b80156111015780601f106110d857610100808354040283529160200191611101565b820191905f5260205f20905b8154815290600101906020018083116110e457829003601f168201915b5050505050905090565b5f611115826132db565b505f828152600460205260409020546001600160a01b0316611076565b61113a61328a565b6001600160a01b0382165f81815260236020908152604091829020805460ff191685151590811790915591519182527f8fce04fc8cb69486cc44b0c59726bd42b95bc25d3527e0f969adecd0a0e4f81e910160405180910390a25050565b5f3332146111b957604051635d04968b60e11b815260040160405180910390fd5b8415806111c7575060195485115b156111e557604051630fe33f7d60e11b815260040160405180910390fd5b601854158015906112045750601854856011546112029190614be0565b115b15611222576040516352df9fe560e01b815260040160405180910390fd5b846014546112309190614bf3565b341461124f57604051632635240760e21b815260040160405180910390fd5b601a54600160a01b900463ffffffff16158015906112a65750601a54335f908152601c602052604090205461129a91600160a01b900463ffffffff16906001600160401b0316614c0a565b6001600160401b031642105b156112c45760405163b0782df760e01b815260040160405180910390fd5b601a54600160c01b900461ffff16158015906113095750601a54335f908152601d602052604090205461ffff600160c01b90920482169161130791889116614be0565b115b1561132757604051636163bd0760e11b815260040160405180910390fd5b601b546001600160a01b03161561147257834211156113595760405163068568f360e21b815260040160405180910390fd5b335f818152601e602090815260408083205481517f8f17c5a954c6cffda956893ca964d02255da4c3d4bbec884d641b396d86e959e938101939093529082019390935260608101889052608081019290925260a08201869052906113d69060c0015b60405160208183030381529060405280519060200120613313565b90505f6114188286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061333f92505050565b5050601b549091506001600160a01b0380831691161461144b57604051636781397960e11b815260040160405180910390fd5b335f908152601e6020526040812080546001929061146a908490614be0565b909155505050505b601b54600160a01b900461ffff161561155157601b546114a89063ffffffff600160b01b8204811691600160d01b900416614be0565b42106114d557601b80546001600160d01b0316600160d01b4263ffffffff16026001600160f01b03161790555b601b5461ffff600160a01b82048116916114f8918891600160f01b900416614be0565b111561151757604051634082f51f60e01b815260040160405180910390fd5b84601b601e8282829054906101000a900461ffff166115369190614c29565b92506101000a81548161ffff021916908361ffff1602179055505b5f60255411801561156c57506024546001600160a01b031615155b1561162c576024546025546001600160a01b03909116906323b872dd90339061dead9061159a908a90614bf3565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af11580156115eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f9190614c43565b61162c57604051631bc5aabf60e21b815260040160405180910390fd5b335f908152601c60209081526040808320805467ffffffffffffffff1916426001600160401b0316179055601d9091528120805487929061167290849061ffff16614c29565b92506101000a81548161ffff021916908361ffff1602179055508460115f82825461169d9190614be0565b909155505060135490505f5b8581101561176157601380545f91826116c183614c5e565b9190505590505f6116d182613388565b60408051808201825260ff80841682525f6020808401828152888352601090915293902091518254935182166101000261ffff19909416911617919091179055905061171d3383613457565b60405160ff82168152339083907f71f9583ead80184cd2e8733d90eeb2c055610d88e2ef07ad939fe9dad9f24aeb9060200160405180910390a350506001016116a9565b50601a546001600160a01b03161561177c5761177c34613470565b949350505050565b61104e82823361351d565b5f61179861328a565b815f036117b8576040516308a53f2d60e01b815260040160405180910390fd5b50600f80546001810182555f8290527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018290555460405182815260ff8216907f7fbdbd553b7e301d3c185b90bd49c9b547989b3d48cb8b668314d29240ccc3149060200160405180910390a2919050565b601a546001600160a01b0382165f908152601c60205260408120549091829161186991600160a01b900463ffffffff16906001600160401b0316614be0565b9050804210156118825761187d4282614c76565b611884565b5f5b9392505050565b6001600160a01b0382166118b957604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f6118c583833361352a565b9050836001600160a01b0316816001600160a01b031614611913576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016118b0565b50505050565b335f9081526023602052604081205460ff16611948576040516318331f6d60e11b815260040160405180910390fd5b60ff8316158061195c5750600f5460ff8416115b1561197a576040516308a53f2d60e01b815260040160405180910390fd5b600560ff8316111561199f57604051633f706ddf60e01b815260040160405180910390fd5b60138054905f6119ae83614c5e565b9091555060408051808201825260ff808716825285811660208084019182525f86815260109091529390932091518254935182166101000261ffff199094169116179190911790559050611a028482613457565b60405160ff841681526001600160a01b0385169082907f71f9583ead80184cd2e8733d90eeb2c055610d88e2ef07ad939fe9dad9f24aeb9060200160405180910390a39392505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b031681611a9f575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f611ab6876001600160601b0384166127106135d8565b9295509193505050505b9250929050565b5f60ff82161580611adc5750600f5460ff8316115b15611afa576040516308a53f2d60e01b815260040160405180910390fd5b600f611b07600184614c89565b60ff1681548110611b1a57611b1a614ca2565b905f5260205f2001549050919050565b601f545f90611b4b5760405162b35ec160e11b815260040160405180910390fd5b60205460ff1615611b6f576040516335fc79a360e11b815260040160405180910390fd5b8786141580611b7e5750878414155b80611b895750878214155b15611baa576040516001621398b960e31b0319815260040160405180910390fd5b5f5b88811015611f61575f8a8a83818110611bc757611bc7614ca2565b905060200201359050805f1480611bdf575061270f81115b15611bfd576040516330d15a2360e11b815260040160405180910390fd5b5f8181526021602052604090205460ff1615611c2c57604051637ad8e2f560e01b815260040160405180910390fd5b888883818110611c3e57611c3e614ca2565b9050602002016020810190611c5391906146bb565b60ff161580611c8c5750600f54898984818110611c7257611c72614ca2565b9050602002016020810190611c8791906146bb565b60ff16115b80611cc057506005878784818110611ca657611ca6614ca2565b9050602002016020810190611cbb91906146bb565b60ff16115b15611cde576040516308a53f2d60e01b815260040160405180910390fd5b5f33828b8b86818110611cf357611cf3614ca2565b9050602002016020810190611d0891906146bb565b8a8a87818110611d1a57611d1a614ca2565b9050602002016020810190611d2f91906146bb565b60405160609490941b6bffffffffffffffffffffffff19166020850152603484019290925260f890811b6001600160f81b0319908116605485015291901b166055820152605601604051602081830303815290604052805190602001209050611df0868685818110611da357611da3614ca2565b9050602002810190611db59190614cb6565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050601f549150849050613688565b611e0d57604051637ca55c7760e01b815260040160405180910390fd5b5f8281526021602052604090819020805460ff191660011790558051808201909152808b8b86818110611e4257611e42614ca2565b9050602002016020810190611e5791906146bb565b60ff168152602001898986818110611e7157611e71614ca2565b9050602002016020810190611e8691906146bb565b60ff9081169091525f84815260106020908152604090912083518154949092015183166101000261ffff199094169190921617919091179055611ec93383613457565b33827f0b7a04bffb5593d6ddb473c1e9280f2c19d8ae43194754c9de72be97668f44a68c8c87818110611efe57611efe614ca2565b9050602002016020810190611f1391906146bb565b8b8b88818110611f2557611f25614ca2565b9050602002016020810190611f3a91906146bb565b6040805160ff93841681529290911660208301520160405180910390a35050600101611bac565b508888905060125f828254611f769190614be0565b90915550979998505050505050505050565b5f611f9283612352565b8210611fc35760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016118b0565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b5f81815260106020908152604080832081518083019092525460ff808216808452610100909204169282019290925290820361203a576040516308a53f2d60e01b815260040160405180910390fd5b806020015160ff166001901b601554612055835f0151611ac7565b61205f9190614bf3565b6118849190614bf3565b61207161328a565b60205460ff1615612095576040516335fc79a360e11b815260040160405180910390fd5b601f8190556040518181527fe33591ecfd90c47ef51300ba4caef6e370112d20e712721bfcf611cd468ef0f8906020015b60405180910390a150565b6120eb83838360405180602001604052805f8152506129be565b505050565b5f6120fa60085490565b82106121225760405163295f44f760e21b81525f6004820152602481018390526044016118b0565b60088281548110611b1a57611b1a614ca2565b61213d61328a565b61271081111561216057604051636e549e5960e01b815260040160405180910390fd5b60148490556015839055601682905560178190556040805185815260208101859052908101839052606081018290527fbebb8930916fe922ee99c4ce187becfd067e5ee4bf124215aac4f34b67e858be906080015b60405180910390a150505050565b6121cb61328a565b60266121d8828483614d3f565b50601354604080516001815260208101929092527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91015b60405180910390a15050565b5f611076826132db565b6014546025546024545f90819081906001600160a01b03161561232757602480546040516370a0823160e01b81526001600160a01b038981166004830152909116916370a082319101602060405180830381865afa15801561228a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ae9190614df8565b60248054604051636eb1769f60e11b81526001600160a01b038a811660048301523093820193909352929550169063dd62ed3e90604401602060405180830381865afa158015612300573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123249190614df8565b91505b601854156123445760115460185461233f9190614c76565b612347565b5f195b905091939590929450565b5f6001600160a01b03821661237c576040516322718ad960e21b81525f60048201526024016118b0565b506001600160a01b03165f9081526003602052604090205490565b61239f61328a565b6123a85f61369d565b565b336123b48261221c565b6001600160a01b0316146123db576040516304a636d360e41b815260040160405180910390fd5b5f8181526010602052604090208054600561010090910460ff161061241357604051633f706ddf60e01b815260040160405180910390fd5b80546015545f91600160ff610100830481169190911b92916124359116611ac7565b61243f9190614bf3565b6124499190614bf3565b905080341461246b57604051632635240760e21b815260040160405180910390fd5b815460019083908290612487908290610100900460ff16614e0f565b92506101000a81548160ff021916908360ff1602179055506124a834613470565b81546040805161010090920460ff1682526020820183905284917fb49d9117945b53cfa336afc199e6e5090ffb666543623397ec8e4c17d1841f71910160405180910390a26040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b61252d61328a565b60ff821615806125415750600f5460ff8316115b8061254a575080155b15612568576040516308a53f2d60e01b815260040160405180910390fd5b80600f612576600185614c89565b60ff168154811061258957612589614ca2565b905f5260205f2001819055508160ff167f7fbdbd553b7e301d3c185b90bd49c9b547989b3d48cb8b668314d29240ccc314826040516125ca91815260200190565b60405180910390a2601354604080516001815260208101929092527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101612210565b5f81815260106020908152604080832081518083019092525460ff808216808452610100909204169282019290925290820361265c576040516308a53f2d60e01b815260040160405180910390fd5b5f612669825f0151611ac7565b9050612710826020015160ff166107d0836126849190614bf3565b61268e9190614bf3565b6126989190614e3c565b61177c9082614be0565b5f6060805f5f5f60606126b36136ee565b6126bb61371e565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6126ec61328a565b6020805460ff191660011781556012546040519081527fe7fc86d42974db8ecca838d206a69dde34d8231d5e9059357b3890c55e6b2563910160405180910390a1565b61273761328a565b61104e8282613749565b61274961328a565b6027612756828483614d3f565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962905f90a15050565b60606001805461108a90614b94565b61279a61328a565b601a805465ffffffffffff60a01b1916600160a01b63ffffffff878116820261ffff60c01b191692909217600160c01b61ffff8881169190910291909117909355601b805461ffff60a01b1916938616909102929092179091558116156128015780612805565b610e105b601b805463ffffffff60b01b1916600160b01b63ffffffff9384168102919091179182905560408051888516815261ffff8089166020830152871691810191909152910490911660608201527fa3bfc176e711c43c2775c1f29e75eb8324adc0aa8f819e62acabf2dcb6bfdd2a906080016121b5565b61104e3383836137eb565b61288e61328a565b602280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101612210565b6128f061328a565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7a3d5c86d1d991b152b8dc923f727649725bde9ef33bd6a3aafa693ad5d6ac49906020016120c6565b600f818154811061294d575f80fd5b5f91825260209091200154905081565b61296561328a565b602480546001600160a01b0319166001600160a01b038416908117909155602582905560408051918252602082018390527f8cc1f0cc771d3e12fc81178af83f75f10c808c5c5d8b65e962ede76051d724809101612210565b6129c984848461188b565b61191333858585856138b2565b335f9081526023602052604090205460ff16612a05576040516318331f6d60e11b815260040160405180910390fd5b5f612a0f8261221c565b90506001600160a01b0381163314801590612a315750612a2f8133612e02565b155b8015612a4e575033612a428361110b565b6001600160a01b031614155b15612a6c576040516304a636d360e41b815260040160405180910390fd5b612a75826139da565b505f908152601060205260409020805461ffff19169055565b6060806060805f612a9e86612352565b9050806001600160401b03811115612ab857612ab86149ba565b604051908082528060200260200182016040528015612ae1578160200160208202803683370190505b509450806001600160401b03811115612afc57612afc6149ba565b604051908082528060200260200182016040528015612b25578160200160208202803683370190505b509350806001600160401b03811115612b4057612b406149ba565b604051908082528060200260200182016040528015612b69578160200160208202803683370190505b509250806001600160401b03811115612b8457612b846149ba565b604051908082528060200260200182016040528015612bad578160200160208202803683370190505b5091505f5b81811015612c9c575f612bc58883611f88565b5f8181526010602090815260409182902082518084019093525460ff808216845261010090910416908201528851919250908290899085908110612c0b57612c0b614ca2565b602002602001018181525050805f0151878481518110612c2d57612c2d614ca2565b602002602001019060ff16908160ff16815250508060200151868481518110612c5857612c58614ca2565b602002602001019060ff16908160ff1681525050612c758261260d565b858481518110612c8757612c87614ca2565b60209081029190910101525050600101612bb2565b50509193509193565b6060612cb0826132db565b505f612cba613a12565b90505f815111612cd85760405180602001604052805f815250611884565b80612ce284613a21565b604051602001612cf3929190614e66565b6040516020818303038152906040529392505050565b5f601654612d1683611ac7565b6110769190614bf3565b612d2861328a565b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f0de0d6abd7eecfd8248954c356722ff45c3fa525729ccbd5dc3db2bcf2415c47906020016120c6565b60278054612d8390614b94565b80601f0160208091040260200160405190810160405280929190818152602001828054612daf90614b94565b8015612dfa5780601f10612dd157610100808354040283529160200191612dfa565b820191905f5260205f20905b815481529060010190602001808311612ddd57829003601f168201915b505050505081565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b601b545f90600160a01b900461ffff168103612e4b57505f1990565b601b54612e6e9063ffffffff600160b01b8204811691600160d01b900416614be0565b4210612e865750601b54600160a01b900461ffff1690565b601b54612ea79061ffff600160f01b8204811691600160a01b900416614e7a565b61ffff16905090565b612eb861328a565b6001600160a01b038116612ee157604051631e4fbdf760e01b81525f60048201526024016118b0565b612eea8161369d565b50565b5f818303612f0e57604051632b9978dd60e01b815260040160405180910390fd5b33612f188461221c565b6001600160a01b0316141580612f3f575033612f338361221c565b6001600160a01b031614155b15612f5d576040516304a636d360e41b815260040160405180910390fd5b5f83815260106020818152604080842081518083018352905460ff808216835261010091829004811683860152888752948452948290208251808401909352548085168084529590048416928201929092528151919390929190911614612fd75760405163030bf62f60e01b815260040160405180910390fd5b600f54825160ff1610612ffd5760405163b5f3b16560e01b815260040160405180910390fd5b5f60165461300d845f0151611ac7565b6130179190614bf3565b905080341461303957604051632635240760e21b815260040160405180910390fd5b82515f90613048906001614e0f565b9050613053876139da565b61305c866139da565b5f87815260106020526040808220805461ffff1990811690915588835290822080549091169055601380549161309183614c5e565b9091555060408051808201825260ff80851682525f6020808401828152868352601090915293902091518254935182166101000261ffff1990941691161791909117905594506130e13386613457565b6130ea34613470565b6040805160ff8316815260208101849052869188918a917f8437c6b3bccdf5320ded749e349c5f9f879d6c60dbfc238ddafb7b7d994f4d52910160405180910390a45050505092915050565b5f81815260106020908152604080832081518083019092525460ff8082168084526101009092041692820192909252829182918291820361318a576040516308a53f2d60e01b815260040160405180910390fd5b8051602082015161319a8861260d565b6131a38961221c565b9450945094509450509193509193565b6001600160a01b0383165f818152601e602090815260408083205481517f8f17c5a954c6cffda956893ca964d02255da4c3d4bbec884d641b396d86e959e938101939093529082019390935260608101859052608081019290925260a082018390529061177c9060c0016113bb565b61322a61328a565b805f0361324a57604051630fe33f7d60e11b815260040160405180910390fd5b6018829055601981905560408051838152602081018390527f1ee2da4e75679087a6229817b7c20e223ebbe6c0540cdaa148264b52e63686769101612210565b600c546001600160a01b031633146123a85760405163118cdaa760e01b81523360048201526024016118b0565b5f6001600160e01b0319821663152a902d60e11b1480611076575061107682613ab0565b5f818152600260205260408120546001600160a01b03168061107657604051637e27328960e01b8152600481018490526024016118b0565b5f61107661331f613ad4565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f8351604103613376576020840151604085015160608601515f1a61336888828585613bfd565b955095509550505050613381565b505081515f91506002905b9250925092565b5f80612710613398600143614c76565b60408051914060208301524490820152426060808301919091526bffffffffffffffffffffffff1933821b81166080840152609483018790523090911b1660b482015260c801604051602081830303815290604052805190602001205f1c6134009190614e94565b90506114508110156134155750600192915050565b611e788110156134285750600292915050565b61238c81101561343b5750600392915050565b61264881101561344e5750600492915050565b50600592915050565b61104e828260405180602001604052805f815250613cc5565b601a546001600160a01b03166134835750565b5f612710601754836134959190614bf3565b61349f9190614e3c565b9050805f036134ac575050565b601a546040515f916001600160a01b03169083908381818185875af1925050503d805f81146134f6576040519150601f19603f3d011682016040523d82523d5f602084013e6134fb565b606091505b50509050806120eb5760405163e605dacf60e01b815260040160405180910390fd5b6120eb8383836001613cdc565b5f5f613537858585613de0565b6022549091506001600160a01b0316801580159061355d57506001600160a01b03841615155b156135cf5760405163657711f560e11b81526001600160a01b038581166004830152838116602483015287811660448301526064820187905282169063caee23ea906084015f6040518083038186803b1580156135b8575f5ffd5b505afa1580156135ca573d5f5f3e3d5ffd5b505050505b50949350505050565b5f5f5f6135e58686613eab565b91509150815f03613609578381816135ff576135ff614e28565b0492505050611884565b818411613620576136206003851502601118613ec7565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f826136948584613ed8565b14949350505050565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606137197f0000000000000000000000000000000000000000000000000000000000000000613f1a565b905090565b60606137197f0000000000000000000000000000000000000000000000000000000000000000613f1a565b6127106001600160601b03821681101561378857604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044016118b0565b6001600160a01b0383166137b157604051635b6cc80560e11b81525f60048201526024016118b0565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b6001600160a01b0383166138145760405163a9fbf51f60e01b81525f60048201526024016118b0565b6001600160a01b03821661384657604051630b61174360e31b81526001600160a01b03831660048201526024016118b0565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156139d357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906138f4908890889087908790600401614ea7565b6020604051808303815f875af192505050801561392e575060408051601f3d908101601f1916820190925261392b91810190614ee3565b60015b613995573d80801561395b576040519150601f19603f3d011682016040523d82523d5f602084013e613960565b606091505b5080515f0361398d57604051633250574960e11b81526001600160a01b03851660048201526024016118b0565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b146139d157604051633250574960e11b81526001600160a01b03851660048201526024016118b0565b505b5050505050565b5f6139e65f835f61352a565b90506001600160a01b03811661104e57604051637e27328960e01b8152600481018390526024016118b0565b60606026805461108a90614b94565b60605f613a2d83613f57565b60010190505f816001600160401b03811115613a4b57613a4b6149ba565b6040519080825280601f01601f191660200182016040528015613a75576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613a7f57509392505050565b5f6001600160e01b0319821663780e9d6360e01b148061107657506110768261402e565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613b2c57507f000000000000000000000000000000000000000000000000000000000000000046145b15613b5657507f000000000000000000000000000000000000000000000000000000000000000090565b613719604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613c3657505f91506003905082613cbb565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613c87573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116613cb257505f925060019150829050613cbb565b92505f91508190505b9450945094915050565b613ccf838361407d565b6120eb335f8585856138b2565b8080613cf057506001600160a01b03821615155b15613db1575f613cff846132db565b90506001600160a01b03831615801590613d2b5750826001600160a01b0316816001600160a01b031614155b8015613d3e5750613d3c8184612e02565b155b15613d675760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016118b0565b8115613daf5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f613ded8585856140de565b90506001600160a01b038116613e4957613e4484600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613e6c565b846001600160a01b0316816001600160a01b031614613e6c57613e6c81856141d0565b6001600160a01b038516613e8857613e838461424d565b61177c565b846001600160a01b0316816001600160a01b03161461177c5761177c85856142f4565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f81815b8451811015613f1257613f0882868381518110613efb57613efb614ca2565b6020026020010151614342565b9150600101613edc565b509392505050565b60605f613f268361436b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613f955772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613fc1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613fdf57662386f26fc10000830492506010015b6305f5e1008310613ff7576305f5e100830492506008015b612710831061400b57612710830492506004015b6064831061401d576064830492506002015b600a83106110765760010192915050565b5f6001600160e01b031982166380ac58cd60e01b148061405e57506001600160e01b03198216635b5e139f60e01b145b8061107657506301ffc9a760e01b6001600160e01b0319831614611076565b6001600160a01b0382166140a657604051633250574960e11b81525f60048201526024016118b0565b5f6140b283835f61352a565b90506001600160a01b038116156120eb576040516339e3563760e11b81525f60048201526024016118b0565b5f828152600260205260408120546001600160a01b039081169083161561410a5761410a818486614392565b6001600160a01b03811615614144576141255f855f5f613cdc565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615614172576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f6141da83612352565b5f838152600760209081526040808320546001600160a01b038816845260069092529091209192509081831461422f575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f9061425e90600190614c76565b5f838152600960205260408120546008805493945090928490811061428557614285614ca2565b905f5260205f200154905080600883815481106142a4576142a4614ca2565b5f9182526020808320909101929092558281526009909152604080822084905585825281205560088054806142db576142db614efe565b600190038181905f5260205f20015f9055905550505050565b5f600161430084612352565b61430a9190614c76565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f81831061435c575f828152602084905260409020611884565b505f9182526020526040902090565b5f60ff8216601f81111561107657604051632cd44ac360e21b815260040160405180910390fd5b61439d8383836143f6565b6120eb576001600160a01b0383166143cb57604051637e27328960e01b8152600481018290526024016118b0565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016118b0565b5f6001600160a01b0383161580159061177c5750826001600160a01b0316846001600160a01b0316148061442f575061442f8484612e02565b8061177c5750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160a01b0381168114612eea575f5ffd5b5f6020828403121561447b575f5ffd5b813561188481614457565b6001600160e01b031981168114612eea575f5ffd5b5f602082840312156144ab575f5ffd5b813561188481614486565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61188460208301846144b6565b5f60208284031215614506575f5ffd5b5035919050565b8015158114612eea575f5ffd5b5f5f6040838503121561452b575f5ffd5b823561453681614457565b915060208301356145468161450d565b809150509250929050565b5f5f83601f840112614561575f5ffd5b5081356001600160401b03811115614577575f5ffd5b602083019150836020828501011115611ac0575f5ffd5b5f5f5f5f606085870312156145a1575f5ffd5b843593506020850135925060408501356001600160401b038111156145c4575f5ffd5b6145d087828801614551565b95989497509550505050565b5f5f604083850312156145ed575f5ffd5b82356145f881614457565b946020939093013593505050565b5f5f5f60608486031215614618575f5ffd5b833561462381614457565b9250602084013561463381614457565b929592945050506040919091013590565b803560ff81168114614654575f5ffd5b919050565b5f5f5f6060848603121561466b575f5ffd5b833561467681614457565b925061468460208501614644565b915061469260408501614644565b90509250925092565b5f5f604083850312156146ac575f5ffd5b50508035926020909101359150565b5f602082840312156146cb575f5ffd5b61188482614644565b5f5f83601f8401126146e4575f5ffd5b5081356001600160401b038111156146fa575f5ffd5b6020830191508360208260051b8501011115611ac0575f5ffd5b5f5f5f5f5f5f5f5f6080898b03121561472b575f5ffd5b88356001600160401b03811115614740575f5ffd5b61474c8b828c016146d4565b90995097505060208901356001600160401b0381111561476a575f5ffd5b6147768b828c016146d4565b90975095505060408901356001600160401b03811115614794575f5ffd5b6147a08b828c016146d4565b90955093505060608901356001600160401b038111156147be575f5ffd5b6147ca8b828c016146d4565b999c989b5096995094979396929594505050565b5f5f5f5f608085870312156147f1575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f6020838503121561481e575f5ffd5b82356001600160401b03811115614833575f5ffd5b61483f85828601614551565b90969095509350505050565b5f5f6040838503121561485c575f5ffd5b6145f883614644565b5f8151808452602084019350602083015f5b82811015614895578151865260209586019590910190600101614877565b5093949350505050565b60ff60f81b8816815260e060208201525f6148bd60e08301896144b6565b82810360408401526148cf81896144b6565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506149008185614865565b9a9950505050505050505050565b5f5f6040838503121561491f575f5ffd5b823561492a81614457565b915060208301356001600160601b0381168114614546575f5ffd5b803563ffffffff81168114614654575f5ffd5b803561ffff81168114614654575f5ffd5b5f5f5f5f6080858703121561497c575f5ffd5b61498585614945565b935061499360208601614958565b92506149a160408601614958565b91506149af60608601614945565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156149e1575f5ffd5b84356149ec81614457565b935060208501356149fc81614457565b92506040850135915060608501356001600160401b03811115614a1d575f5ffd5b8501601f81018713614a2d575f5ffd5b80356001600160401b03811115614a4657614a466149ba565b604051601f8201601f19908116603f011681016001600160401b0381118282101715614a7457614a746149ba565b604052818152828201602001891015614a8b575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f8151808452602084019350602083015f5b8281101561489557815160ff16865260209586019590910190600101614abe565b608081525f614af16080830187614865565b8281036020840152614b038187614aac565b90508281036040840152614b178186614aac565b90508281036060840152614b2b8185614865565b979650505050505050565b5f5f60408385031215614b47575f5ffd5b8235614b5281614457565b9150602083013561454681614457565b5f5f5f60608486031215614b74575f5ffd5b8335614b7f81614457565b95602085013595506040909401359392505050565b600181811c90821680614ba857607f821691505b602082108103614bc657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561107657611076614bcc565b808202811582820484141761107657611076614bcc565b6001600160401b03818116838216019081111561107657611076614bcc565b61ffff818116838216019081111561107657611076614bcc565b5f60208284031215614c53575f5ffd5b81516118848161450d565b5f60018201614c6f57614c6f614bcc565b5060010190565b8181038181111561107657611076614bcc565b60ff828116828216039081111561107657611076614bcc565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112614ccb575f5ffd5b8301803591506001600160401b03821115614ce4575f5ffd5b6020019150600581901b3603821315611ac0575f5ffd5b601f8211156120eb57805f5260205f20601f840160051c81016020851015614d205750805b601f840160051c820191505b818110156139d3575f8155600101614d2c565b6001600160401b03831115614d5657614d566149ba565b614d6a83614d648354614b94565b83614cfb565b5f601f841160018114614d9b575f8515614d845750838201355b5f19600387901b1c1916600186901b1783556139d3565b5f83815260208120601f198716915b82811015614dca5786850135825560209485019460019092019101614daa565b5086821015614de6575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215614e08575f5ffd5b5051919050565b60ff818116838216019081111561107657611076614bcc565b634e487b7160e01b5f52601260045260245ffd5b5f82614e4a57614e4a614e28565b500490565b5f81518060208401855e5f93019283525090919050565b5f61177c614e748386614e4f565b84614e4f565b61ffff828116828216039081111561107657611076614bcc565b5f82614ea257614ea2614e28565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614ed9908301846144b6565b9695505050505050565b5f60208284031215614ef3575f5ffd5b815161188481614486565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220f43d3abe0eb36c726da3e43636be1873ca44c17da0604b7bfb4e64d98427950b64736f6c634300081c00330000000000000000000000000000000000000000000000000001c6bf5263400000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000002d79883d2000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000008cf00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000095a3679216de62448f97dc0030405340d82a0a9c000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f7777772e706f6e737269672e78797a2f6170692f6e66742f
0x6080604052600436106104be575f3560e01c80637a6bcd111161026d578063bbfb2ac31161014a578063efac79ef116100be578063f6bc0f5111610083578063f6bc0f5114610ef4578063f77843dd14610f17578063f7ff752014610f64578063f968adbe14610f83578063faa0a26414610f98578063fc784d4914610fb7575f5ffd5b8063efac79ef14610e7a578063f17af48d14610e8e578063f2fde38b14610ead578063f482258114610ecc578063f68858e414610ee1575f5ffd5b8063d5abeb011161010f578063d5abeb0114610ddf578063d7f130f114610df4578063df3b89c014610e13578063e84a972814610e28578063e8a3d48514610e47578063e985e9c514610e5b575f5ffd5b8063bbfb2ac314610d48578063bc46d67514610d67578063c0a2526c14610d7c578063c7e93f2c14610d91578063c87b56dd14610dc0575f5ffd5b806396521064116101e1578063ab135df3116101a6578063ab135df314610c89578063abb890ec14610cb7578063b11b2b9214610ccc578063b245a0e514610ceb578063b52eea9b14610d0a578063b88d4fde14610d29575f5ffd5b80639652106414610c03578063a22cb46514610c22578063a49062d414610c41578063a939bd1714610c55578063a9fc664e14610c6a575f5ffd5b80638da5cb5b116102325780638da5cb5b14610b6b5780638e244acb14610b885780638f2fc60b14610b9c578063938e3d7b14610bbb5780639434ca5d14610bda57806395d89b4114610bef575f5ffd5b80637a6bcd1114610ac85780637c62950114610adb57806382fbcc6e14610b0657806383de199a14610b2557806384b0196e14610b44575f5ffd5b80632a84dd901161039b5780634f6ccce71161030f5780636352211e116102d45780636352211e14610a055780636817c76c14610a245780636d1f8b6214610a395780636ff152bc14610a4e57806370a0823114610a95578063715018a614610ab4575f5ffd5b80634f6ccce714610974578063536e60cd146109935780635425e072146109b257806355f804b3146109d157806363356ce6146109f0575f5ffd5b80633cef28d2116103605780633cef28d2146108bd5780633e9c5ad6146108ec57806342842e0e1461090b578063453c23101461092a5780634a95d9d51461094b5780634f02c4201461095f575f5ffd5b80632a84dd901461080d5780632d6e44a91461082c5780632f745c591461084b578063347415c91461086a578063384c40ba14610889575f5ffd5b806316ec2b811161043257806321a7178d116103f757806321a7178d1461072b57806323b872dd14610759578063251c64a2146107785780632811d32a1461079157806329e38d5e146107b05780632a55205a146107cf575f5ffd5b806316ec2b811461066257806318160ddd146106935780631dd7cb96146106a75780631e827e59146106bc5780632000d430146106f3575f5ffd5b8063089449a511610483578063089449a5146105aa57806308ae6377146105c957806308dc9f42146105ec578063095ea7b3146105ff578063098144d41461061e5780630d705df61461063b575f5ffd5b80630122795e146104c957806301681a621461050257806301ffc9a71461052357806306fdde0314610552578063081812fc14610573575f5ffd5b366104c557005b5f5ffd5b3480156104d4575f5ffd5b50601b546104ea90600160a01b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561050d575f5ffd5b5061052161051c36600461446b565b610fd6565b005b34801561052e575f5ffd5b5061054261053d36600461449b565b611052565b60405190151581526020016104f9565b34801561055d575f5ffd5b5061056661107c565b6040516104f991906144e4565b34801561057e575f5ffd5b5061059261058d3660046144f6565b61110b565b6040516001600160a01b0390911681526020016104f9565b3480156105b5575f5ffd5b506105216105c436600461451a565b611132565b3480156105d4575f5ffd5b506105de60135481565b6040519081526020016104f9565b6105de6105fa36600461458e565b611198565b34801561060a575f5ffd5b506105216106193660046145dc565b611784565b348015610629575f5ffd5b506022546001600160a01b0316610592565b348015610646575f5ffd5b506040805163657711f560e11b815260016020820152016104f9565b34801561066d575f5ffd5b5061068161067c3660046144f6565b61178f565b60405160ff90911681526020016104f9565b34801561069e575f5ffd5b506008546105de565b3480156106b2575f5ffd5b506105de60165481565b3480156106c7575f5ffd5b506106db6106d636600461446b565b61182a565b6040516001600160401b0390911681526020016104f9565b3480156106fe575f5ffd5b50601a5461071690600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016104f9565b348015610736575f5ffd5b5061054261074536600461446b565b60236020525f908152604090205460ff1681565b348015610764575f5ffd5b50610521610773366004614606565b61188b565b348015610783575f5ffd5b506020546105429060ff1681565b34801561079c575f5ffd5b506105de6107ab366004614659565b611919565b3480156107bb575f5ffd5b50602254610592906001600160a01b031681565b3480156107da575f5ffd5b506107ee6107e936600461469b565b611a4c565b604080516001600160a01b0390931683526020830191909152016104f9565b348015610818575f5ffd5b506105de6108273660046146bb565b611ac7565b348015610837575f5ffd5b506105de610846366004614714565b611b2a565b348015610856575f5ffd5b506105de6108653660046145dc565b611f88565b348015610875575f5ffd5b506105de6108843660046144f6565b611feb565b348015610894575f5ffd5b506106db6108a336600461446b565b601c6020525f90815260409020546001600160401b031681565b3480156108c8575f5ffd5b506104ea6108d736600461446b565b601d6020525f908152604090205461ffff1681565b3480156108f7575f5ffd5b506105216109063660046144f6565b612069565b348015610916575f5ffd5b50610521610925366004614606565b6120d1565b348015610935575f5ffd5b50601a546104ea90600160c01b900461ffff1681565b348015610956575f5ffd5b50600f54610681565b34801561096a575f5ffd5b506105de60115481565b34801561097f575f5ffd5b506105de61098e3660046144f6565b6120f0565b34801561099e575f5ffd5b50601a54610592906001600160a01b031681565b3480156109bd575f5ffd5b506105216109cc3660046147de565b612135565b3480156109dc575f5ffd5b506105216109eb36600461480d565b6121c3565b3480156109fb575f5ffd5b506105de601f5481565b348015610a10575f5ffd5b50610592610a1f3660046144f6565b61221c565b348015610a2f575f5ffd5b506105de60145481565b348015610a44575f5ffd5b506105de6107d081565b348015610a59575f5ffd5b50610a6d610a6836600461446b565b612226565b604080519586526020860194909452928401919091526060830152608082015260a0016104f9565b348015610aa0575f5ffd5b506105de610aaf36600461446b565b612352565b348015610abf575f5ffd5b50610521612397565b610521610ad63660046144f6565b6123aa565b348015610ae6575f5ffd5b506105de610af536600461446b565b601e6020525f908152604090205481565b348015610b11575f5ffd5b50610521610b2036600461484b565b612525565b348015610b30575f5ffd5b506105de610b3f3660046144f6565b61260d565b348015610b4f575f5ffd5b50610b586126a2565b6040516104f9979695949392919061489f565b348015610b76575f5ffd5b50600c546001600160a01b0316610592565b348015610b93575f5ffd5b506105216126e4565b348015610ba7575f5ffd5b50610521610bb636600461490e565b61272f565b348015610bc6575f5ffd5b50610521610bd536600461480d565b612741565b348015610be5575f5ffd5b506105de60175481565b348015610bfa575f5ffd5b50610566612783565b348015610c0e575f5ffd5b50610521610c1d366004614969565b612792565b348015610c2d575f5ffd5b50610521610c3c36600461451a565b61287b565b348015610c4c575f5ffd5b50610681600581565b348015610c60575f5ffd5b506105de61270f81565b348015610c75575f5ffd5b50610521610c8436600461446b565b612886565b348015610c94575f5ffd5b50610542610ca33660046144f6565b60216020525f908152604090205460ff1681565b348015610cc2575f5ffd5b506105de60125481565b348015610cd7575f5ffd5b50610521610ce636600461446b565b6128e8565b348015610cf6575f5ffd5b506105de610d053660046144f6565b61293e565b348015610d15575f5ffd5b50610521610d243660046145dc565b61295d565b348015610d34575f5ffd5b50610521610d433660046149ce565b6129be565b348015610d53575f5ffd5b50610521610d623660046144f6565b6129d6565b348015610d72575f5ffd5b506105de60155481565b348015610d87575f5ffd5b5061059261dead81565b348015610d9c575f5ffd5b50610db0610dab36600461446b565b612a8e565b6040516104f99493929190614adf565b348015610dcb575f5ffd5b50610566610dda3660046144f6565b612ca5565b348015610dea575f5ffd5b506105de60185481565b348015610dff575f5ffd5b506105de610e0e3660046146bb565b612d09565b348015610e1e575f5ffd5b506105de60255481565b348015610e33575f5ffd5b50610521610e4236600461446b565b612d20565b348015610e52575f5ffd5b50610566612d76565b348015610e66575f5ffd5b50610542610e75366004614b36565b612e02565b348015610e85575f5ffd5b506105de612e2f565b348015610e99575f5ffd5b50601b54610592906001600160a01b031681565b348015610eb8575f5ffd5b50610521610ec736600461446b565b612eb0565b348015610ed7575f5ffd5b506105de61271181565b6105de610eef36600461469b565b612eed565b348015610eff575f5ffd5b50601b5461071690600160b01b900463ffffffff1681565b348015610f22575f5ffd5b50610f36610f313660046144f6565b613136565b6040805160ff9586168152949093166020850152918301526001600160a01b031660608201526080016104f9565b348015610f6f575f5ffd5b506105de610f7e366004614b62565b6131b3565b348015610f8e575f5ffd5b506105de60195481565b348015610fa3575f5ffd5b50602454610592906001600160a01b031681565b348015610fc2575f5ffd5b50610521610fd136600461469b565b613222565b610fde61328a565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611027576040519150601f19603f3d011682016040523d82523d5f602084013e61102c565b606091505b505090508061104e5760405163e605dacf60e01b815260040160405180910390fd5b5050565b5f6001600160e01b03198216632b435fdb60e21b14806110765750611076826132b7565b92915050565b60605f805461108a90614b94565b80601f01602080910402602001604051908101604052809291908181526020018280546110b690614b94565b80156111015780601f106110d857610100808354040283529160200191611101565b820191905f5260205f20905b8154815290600101906020018083116110e457829003601f168201915b5050505050905090565b5f611115826132db565b505f828152600460205260409020546001600160a01b0316611076565b61113a61328a565b6001600160a01b0382165f81815260236020908152604091829020805460ff191685151590811790915591519182527f8fce04fc8cb69486cc44b0c59726bd42b95bc25d3527e0f969adecd0a0e4f81e910160405180910390a25050565b5f3332146111b957604051635d04968b60e11b815260040160405180910390fd5b8415806111c7575060195485115b156111e557604051630fe33f7d60e11b815260040160405180910390fd5b601854158015906112045750601854856011546112029190614be0565b115b15611222576040516352df9fe560e01b815260040160405180910390fd5b846014546112309190614bf3565b341461124f57604051632635240760e21b815260040160405180910390fd5b601a54600160a01b900463ffffffff16158015906112a65750601a54335f908152601c602052604090205461129a91600160a01b900463ffffffff16906001600160401b0316614c0a565b6001600160401b031642105b156112c45760405163b0782df760e01b815260040160405180910390fd5b601a54600160c01b900461ffff16158015906113095750601a54335f908152601d602052604090205461ffff600160c01b90920482169161130791889116614be0565b115b1561132757604051636163bd0760e11b815260040160405180910390fd5b601b546001600160a01b03161561147257834211156113595760405163068568f360e21b815260040160405180910390fd5b335f818152601e602090815260408083205481517f8f17c5a954c6cffda956893ca964d02255da4c3d4bbec884d641b396d86e959e938101939093529082019390935260608101889052608081019290925260a08201869052906113d69060c0015b60405160208183030381529060405280519060200120613313565b90505f6114188286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061333f92505050565b5050601b549091506001600160a01b0380831691161461144b57604051636781397960e11b815260040160405180910390fd5b335f908152601e6020526040812080546001929061146a908490614be0565b909155505050505b601b54600160a01b900461ffff161561155157601b546114a89063ffffffff600160b01b8204811691600160d01b900416614be0565b42106114d557601b80546001600160d01b0316600160d01b4263ffffffff16026001600160f01b03161790555b601b5461ffff600160a01b82048116916114f8918891600160f01b900416614be0565b111561151757604051634082f51f60e01b815260040160405180910390fd5b84601b601e8282829054906101000a900461ffff166115369190614c29565b92506101000a81548161ffff021916908361ffff1602179055505b5f60255411801561156c57506024546001600160a01b031615155b1561162c576024546025546001600160a01b03909116906323b872dd90339061dead9061159a908a90614bf3565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af11580156115eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f9190614c43565b61162c57604051631bc5aabf60e21b815260040160405180910390fd5b335f908152601c60209081526040808320805467ffffffffffffffff1916426001600160401b0316179055601d9091528120805487929061167290849061ffff16614c29565b92506101000a81548161ffff021916908361ffff1602179055508460115f82825461169d9190614be0565b909155505060135490505f5b8581101561176157601380545f91826116c183614c5e565b9190505590505f6116d182613388565b60408051808201825260ff80841682525f6020808401828152888352601090915293902091518254935182166101000261ffff19909416911617919091179055905061171d3383613457565b60405160ff82168152339083907f71f9583ead80184cd2e8733d90eeb2c055610d88e2ef07ad939fe9dad9f24aeb9060200160405180910390a350506001016116a9565b50601a546001600160a01b03161561177c5761177c34613470565b949350505050565b61104e82823361351d565b5f61179861328a565b815f036117b8576040516308a53f2d60e01b815260040160405180910390fd5b50600f80546001810182555f8290527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018290555460405182815260ff8216907f7fbdbd553b7e301d3c185b90bd49c9b547989b3d48cb8b668314d29240ccc3149060200160405180910390a2919050565b601a546001600160a01b0382165f908152601c60205260408120549091829161186991600160a01b900463ffffffff16906001600160401b0316614be0565b9050804210156118825761187d4282614c76565b611884565b5f5b9392505050565b6001600160a01b0382166118b957604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f6118c583833361352a565b9050836001600160a01b0316816001600160a01b031614611913576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016118b0565b50505050565b335f9081526023602052604081205460ff16611948576040516318331f6d60e11b815260040160405180910390fd5b60ff8316158061195c5750600f5460ff8416115b1561197a576040516308a53f2d60e01b815260040160405180910390fd5b600560ff8316111561199f57604051633f706ddf60e01b815260040160405180910390fd5b60138054905f6119ae83614c5e565b9091555060408051808201825260ff808716825285811660208084019182525f86815260109091529390932091518254935182166101000261ffff199094169116179190911790559050611a028482613457565b60405160ff841681526001600160a01b0385169082907f71f9583ead80184cd2e8733d90eeb2c055610d88e2ef07ad939fe9dad9f24aeb9060200160405180910390a39392505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b031681611a9f575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f611ab6876001600160601b0384166127106135d8565b9295509193505050505b9250929050565b5f60ff82161580611adc5750600f5460ff8316115b15611afa576040516308a53f2d60e01b815260040160405180910390fd5b600f611b07600184614c89565b60ff1681548110611b1a57611b1a614ca2565b905f5260205f2001549050919050565b601f545f90611b4b5760405162b35ec160e11b815260040160405180910390fd5b60205460ff1615611b6f576040516335fc79a360e11b815260040160405180910390fd5b8786141580611b7e5750878414155b80611b895750878214155b15611baa576040516001621398b960e31b0319815260040160405180910390fd5b5f5b88811015611f61575f8a8a83818110611bc757611bc7614ca2565b905060200201359050805f1480611bdf575061270f81115b15611bfd576040516330d15a2360e11b815260040160405180910390fd5b5f8181526021602052604090205460ff1615611c2c57604051637ad8e2f560e01b815260040160405180910390fd5b888883818110611c3e57611c3e614ca2565b9050602002016020810190611c5391906146bb565b60ff161580611c8c5750600f54898984818110611c7257611c72614ca2565b9050602002016020810190611c8791906146bb565b60ff16115b80611cc057506005878784818110611ca657611ca6614ca2565b9050602002016020810190611cbb91906146bb565b60ff16115b15611cde576040516308a53f2d60e01b815260040160405180910390fd5b5f33828b8b86818110611cf357611cf3614ca2565b9050602002016020810190611d0891906146bb565b8a8a87818110611d1a57611d1a614ca2565b9050602002016020810190611d2f91906146bb565b60405160609490941b6bffffffffffffffffffffffff19166020850152603484019290925260f890811b6001600160f81b0319908116605485015291901b166055820152605601604051602081830303815290604052805190602001209050611df0868685818110611da357611da3614ca2565b9050602002810190611db59190614cb6565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050601f549150849050613688565b611e0d57604051637ca55c7760e01b815260040160405180910390fd5b5f8281526021602052604090819020805460ff191660011790558051808201909152808b8b86818110611e4257611e42614ca2565b9050602002016020810190611e5791906146bb565b60ff168152602001898986818110611e7157611e71614ca2565b9050602002016020810190611e8691906146bb565b60ff9081169091525f84815260106020908152604090912083518154949092015183166101000261ffff199094169190921617919091179055611ec93383613457565b33827f0b7a04bffb5593d6ddb473c1e9280f2c19d8ae43194754c9de72be97668f44a68c8c87818110611efe57611efe614ca2565b9050602002016020810190611f1391906146bb565b8b8b88818110611f2557611f25614ca2565b9050602002016020810190611f3a91906146bb565b6040805160ff93841681529290911660208301520160405180910390a35050600101611bac565b508888905060125f828254611f769190614be0565b90915550979998505050505050505050565b5f611f9283612352565b8210611fc35760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016118b0565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b5f81815260106020908152604080832081518083019092525460ff808216808452610100909204169282019290925290820361203a576040516308a53f2d60e01b815260040160405180910390fd5b806020015160ff166001901b601554612055835f0151611ac7565b61205f9190614bf3565b6118849190614bf3565b61207161328a565b60205460ff1615612095576040516335fc79a360e11b815260040160405180910390fd5b601f8190556040518181527fe33591ecfd90c47ef51300ba4caef6e370112d20e712721bfcf611cd468ef0f8906020015b60405180910390a150565b6120eb83838360405180602001604052805f8152506129be565b505050565b5f6120fa60085490565b82106121225760405163295f44f760e21b81525f6004820152602481018390526044016118b0565b60088281548110611b1a57611b1a614ca2565b61213d61328a565b61271081111561216057604051636e549e5960e01b815260040160405180910390fd5b60148490556015839055601682905560178190556040805185815260208101859052908101839052606081018290527fbebb8930916fe922ee99c4ce187becfd067e5ee4bf124215aac4f34b67e858be906080015b60405180910390a150505050565b6121cb61328a565b60266121d8828483614d3f565b50601354604080516001815260208101929092527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91015b60405180910390a15050565b5f611076826132db565b6014546025546024545f90819081906001600160a01b03161561232757602480546040516370a0823160e01b81526001600160a01b038981166004830152909116916370a082319101602060405180830381865afa15801561228a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ae9190614df8565b60248054604051636eb1769f60e11b81526001600160a01b038a811660048301523093820193909352929550169063dd62ed3e90604401602060405180830381865afa158015612300573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123249190614df8565b91505b601854156123445760115460185461233f9190614c76565b612347565b5f195b905091939590929450565b5f6001600160a01b03821661237c576040516322718ad960e21b81525f60048201526024016118b0565b506001600160a01b03165f9081526003602052604090205490565b61239f61328a565b6123a85f61369d565b565b336123b48261221c565b6001600160a01b0316146123db576040516304a636d360e41b815260040160405180910390fd5b5f8181526010602052604090208054600561010090910460ff161061241357604051633f706ddf60e01b815260040160405180910390fd5b80546015545f91600160ff610100830481169190911b92916124359116611ac7565b61243f9190614bf3565b6124499190614bf3565b905080341461246b57604051632635240760e21b815260040160405180910390fd5b815460019083908290612487908290610100900460ff16614e0f565b92506101000a81548160ff021916908360ff1602179055506124a834613470565b81546040805161010090920460ff1682526020820183905284917fb49d9117945b53cfa336afc199e6e5090ffb666543623397ec8e4c17d1841f71910160405180910390a26040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b61252d61328a565b60ff821615806125415750600f5460ff8316115b8061254a575080155b15612568576040516308a53f2d60e01b815260040160405180910390fd5b80600f612576600185614c89565b60ff168154811061258957612589614ca2565b905f5260205f2001819055508160ff167f7fbdbd553b7e301d3c185b90bd49c9b547989b3d48cb8b668314d29240ccc314826040516125ca91815260200190565b60405180910390a2601354604080516001815260208101929092527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101612210565b5f81815260106020908152604080832081518083019092525460ff808216808452610100909204169282019290925290820361265c576040516308a53f2d60e01b815260040160405180910390fd5b5f612669825f0151611ac7565b9050612710826020015160ff166107d0836126849190614bf3565b61268e9190614bf3565b6126989190614e3c565b61177c9082614be0565b5f6060805f5f5f60606126b36136ee565b6126bb61371e565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6126ec61328a565b6020805460ff191660011781556012546040519081527fe7fc86d42974db8ecca838d206a69dde34d8231d5e9059357b3890c55e6b2563910160405180910390a1565b61273761328a565b61104e8282613749565b61274961328a565b6027612756828483614d3f565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962905f90a15050565b60606001805461108a90614b94565b61279a61328a565b601a805465ffffffffffff60a01b1916600160a01b63ffffffff878116820261ffff60c01b191692909217600160c01b61ffff8881169190910291909117909355601b805461ffff60a01b1916938616909102929092179091558116156128015780612805565b610e105b601b805463ffffffff60b01b1916600160b01b63ffffffff9384168102919091179182905560408051888516815261ffff8089166020830152871691810191909152910490911660608201527fa3bfc176e711c43c2775c1f29e75eb8324adc0aa8f819e62acabf2dcb6bfdd2a906080016121b5565b61104e3383836137eb565b61288e61328a565b602280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101612210565b6128f061328a565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7a3d5c86d1d991b152b8dc923f727649725bde9ef33bd6a3aafa693ad5d6ac49906020016120c6565b600f818154811061294d575f80fd5b5f91825260209091200154905081565b61296561328a565b602480546001600160a01b0319166001600160a01b038416908117909155602582905560408051918252602082018390527f8cc1f0cc771d3e12fc81178af83f75f10c808c5c5d8b65e962ede76051d724809101612210565b6129c984848461188b565b61191333858585856138b2565b335f9081526023602052604090205460ff16612a05576040516318331f6d60e11b815260040160405180910390fd5b5f612a0f8261221c565b90506001600160a01b0381163314801590612a315750612a2f8133612e02565b155b8015612a4e575033612a428361110b565b6001600160a01b031614155b15612a6c576040516304a636d360e41b815260040160405180910390fd5b612a75826139da565b505f908152601060205260409020805461ffff19169055565b6060806060805f612a9e86612352565b9050806001600160401b03811115612ab857612ab86149ba565b604051908082528060200260200182016040528015612ae1578160200160208202803683370190505b509450806001600160401b03811115612afc57612afc6149ba565b604051908082528060200260200182016040528015612b25578160200160208202803683370190505b509350806001600160401b03811115612b4057612b406149ba565b604051908082528060200260200182016040528015612b69578160200160208202803683370190505b509250806001600160401b03811115612b8457612b846149ba565b604051908082528060200260200182016040528015612bad578160200160208202803683370190505b5091505f5b81811015612c9c575f612bc58883611f88565b5f8181526010602090815260409182902082518084019093525460ff808216845261010090910416908201528851919250908290899085908110612c0b57612c0b614ca2565b602002602001018181525050805f0151878481518110612c2d57612c2d614ca2565b602002602001019060ff16908160ff16815250508060200151868481518110612c5857612c58614ca2565b602002602001019060ff16908160ff1681525050612c758261260d565b858481518110612c8757612c87614ca2565b60209081029190910101525050600101612bb2565b50509193509193565b6060612cb0826132db565b505f612cba613a12565b90505f815111612cd85760405180602001604052805f815250611884565b80612ce284613a21565b604051602001612cf3929190614e66565b6040516020818303038152906040529392505050565b5f601654612d1683611ac7565b6110769190614bf3565b612d2861328a565b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f0de0d6abd7eecfd8248954c356722ff45c3fa525729ccbd5dc3db2bcf2415c47906020016120c6565b60278054612d8390614b94565b80601f0160208091040260200160405190810160405280929190818152602001828054612daf90614b94565b8015612dfa5780601f10612dd157610100808354040283529160200191612dfa565b820191905f5260205f20905b815481529060010190602001808311612ddd57829003601f168201915b505050505081565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b601b545f90600160a01b900461ffff168103612e4b57505f1990565b601b54612e6e9063ffffffff600160b01b8204811691600160d01b900416614be0565b4210612e865750601b54600160a01b900461ffff1690565b601b54612ea79061ffff600160f01b8204811691600160a01b900416614e7a565b61ffff16905090565b612eb861328a565b6001600160a01b038116612ee157604051631e4fbdf760e01b81525f60048201526024016118b0565b612eea8161369d565b50565b5f818303612f0e57604051632b9978dd60e01b815260040160405180910390fd5b33612f188461221c565b6001600160a01b0316141580612f3f575033612f338361221c565b6001600160a01b031614155b15612f5d576040516304a636d360e41b815260040160405180910390fd5b5f83815260106020818152604080842081518083018352905460ff808216835261010091829004811683860152888752948452948290208251808401909352548085168084529590048416928201929092528151919390929190911614612fd75760405163030bf62f60e01b815260040160405180910390fd5b600f54825160ff1610612ffd5760405163b5f3b16560e01b815260040160405180910390fd5b5f60165461300d845f0151611ac7565b6130179190614bf3565b905080341461303957604051632635240760e21b815260040160405180910390fd5b82515f90613048906001614e0f565b9050613053876139da565b61305c866139da565b5f87815260106020526040808220805461ffff1990811690915588835290822080549091169055601380549161309183614c5e565b9091555060408051808201825260ff80851682525f6020808401828152868352601090915293902091518254935182166101000261ffff1990941691161791909117905594506130e13386613457565b6130ea34613470565b6040805160ff8316815260208101849052869188918a917f8437c6b3bccdf5320ded749e349c5f9f879d6c60dbfc238ddafb7b7d994f4d52910160405180910390a45050505092915050565b5f81815260106020908152604080832081518083019092525460ff8082168084526101009092041692820192909252829182918291820361318a576040516308a53f2d60e01b815260040160405180910390fd5b8051602082015161319a8861260d565b6131a38961221c565b9450945094509450509193509193565b6001600160a01b0383165f818152601e602090815260408083205481517f8f17c5a954c6cffda956893ca964d02255da4c3d4bbec884d641b396d86e959e938101939093529082019390935260608101859052608081019290925260a082018390529061177c9060c0016113bb565b61322a61328a565b805f0361324a57604051630fe33f7d60e11b815260040160405180910390fd5b6018829055601981905560408051838152602081018390527f1ee2da4e75679087a6229817b7c20e223ebbe6c0540cdaa148264b52e63686769101612210565b600c546001600160a01b031633146123a85760405163118cdaa760e01b81523360048201526024016118b0565b5f6001600160e01b0319821663152a902d60e11b1480611076575061107682613ab0565b5f818152600260205260408120546001600160a01b03168061107657604051637e27328960e01b8152600481018490526024016118b0565b5f61107661331f613ad4565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f8351604103613376576020840151604085015160608601515f1a61336888828585613bfd565b955095509550505050613381565b505081515f91506002905b9250925092565b5f80612710613398600143614c76565b60408051914060208301524490820152426060808301919091526bffffffffffffffffffffffff1933821b81166080840152609483018790523090911b1660b482015260c801604051602081830303815290604052805190602001205f1c6134009190614e94565b90506114508110156134155750600192915050565b611e788110156134285750600292915050565b61238c81101561343b5750600392915050565b61264881101561344e5750600492915050565b50600592915050565b61104e828260405180602001604052805f815250613cc5565b601a546001600160a01b03166134835750565b5f612710601754836134959190614bf3565b61349f9190614e3c565b9050805f036134ac575050565b601a546040515f916001600160a01b03169083908381818185875af1925050503d805f81146134f6576040519150601f19603f3d011682016040523d82523d5f602084013e6134fb565b606091505b50509050806120eb5760405163e605dacf60e01b815260040160405180910390fd5b6120eb8383836001613cdc565b5f5f613537858585613de0565b6022549091506001600160a01b0316801580159061355d57506001600160a01b03841615155b156135cf5760405163657711f560e11b81526001600160a01b038581166004830152838116602483015287811660448301526064820187905282169063caee23ea906084015f6040518083038186803b1580156135b8575f5ffd5b505afa1580156135ca573d5f5f3e3d5ffd5b505050505b50949350505050565b5f5f5f6135e58686613eab565b91509150815f03613609578381816135ff576135ff614e28565b0492505050611884565b818411613620576136206003851502601118613ec7565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f826136948584613ed8565b14949350505050565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606137197f506f6e73526967204d616368696e657300000000000000000000000000000010613f1a565b905090565b60606137197f3200000000000000000000000000000000000000000000000000000000000001613f1a565b6127106001600160601b03821681101561378857604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044016118b0565b6001600160a01b0383166137b157604051635b6cc80560e11b81525f60048201526024016118b0565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b6001600160a01b0383166138145760405163a9fbf51f60e01b81525f60048201526024016118b0565b6001600160a01b03821661384657604051630b61174360e31b81526001600160a01b03831660048201526024016118b0565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156139d357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906138f4908890889087908790600401614ea7565b6020604051808303815f875af192505050801561392e575060408051601f3d908101601f1916820190925261392b91810190614ee3565b60015b613995573d80801561395b576040519150601f19603f3d011682016040523d82523d5f602084013e613960565b606091505b5080515f0361398d57604051633250574960e11b81526001600160a01b03851660048201526024016118b0565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b146139d157604051633250574960e11b81526001600160a01b03851660048201526024016118b0565b505b5050505050565b5f6139e65f835f61352a565b90506001600160a01b03811661104e57604051637e27328960e01b8152600481018390526024016118b0565b60606026805461108a90614b94565b60605f613a2d83613f57565b60010190505f816001600160401b03811115613a4b57613a4b6149ba565b6040519080825280601f01601f191660200182016040528015613a75576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613a7f57509392505050565b5f6001600160e01b0319821663780e9d6360e01b148061107657506110768261402e565b5f306001600160a01b037f000000000000000000000000d19fe5b7f7cbabc7ea0a7213dfd306675d91867216148015613b2c57507f000000000000000000000000000000000000000000000000000000000000123746145b15613b5657507f1116b69353182fade2294eea278f36e0db92c4edbf6b90e9ce02588b86c9502590565b613719604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f2d22575e0a7585d7b4935a87441c42b115ecae93afaff0a02f4bc7548d7cdb18918101919091527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a560608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613c3657505f91506003905082613cbb565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613c87573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116613cb257505f925060019150829050613cbb565b92505f91508190505b9450945094915050565b613ccf838361407d565b6120eb335f8585856138b2565b8080613cf057506001600160a01b03821615155b15613db1575f613cff846132db565b90506001600160a01b03831615801590613d2b5750826001600160a01b0316816001600160a01b031614155b8015613d3e5750613d3c8184612e02565b155b15613d675760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016118b0565b8115613daf5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f613ded8585856140de565b90506001600160a01b038116613e4957613e4484600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613e6c565b846001600160a01b0316816001600160a01b031614613e6c57613e6c81856141d0565b6001600160a01b038516613e8857613e838461424d565b61177c565b846001600160a01b0316816001600160a01b03161461177c5761177c85856142f4565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f81815b8451811015613f1257613f0882868381518110613efb57613efb614ca2565b6020026020010151614342565b9150600101613edc565b509392505050565b60605f613f268361436b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613f955772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613fc1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613fdf57662386f26fc10000830492506010015b6305f5e1008310613ff7576305f5e100830492506008015b612710831061400b57612710830492506004015b6064831061401d576064830492506002015b600a83106110765760010192915050565b5f6001600160e01b031982166380ac58cd60e01b148061405e57506001600160e01b03198216635b5e139f60e01b145b8061107657506301ffc9a760e01b6001600160e01b0319831614611076565b6001600160a01b0382166140a657604051633250574960e11b81525f60048201526024016118b0565b5f6140b283835f61352a565b90506001600160a01b038116156120eb576040516339e3563760e11b81525f60048201526024016118b0565b5f828152600260205260408120546001600160a01b039081169083161561410a5761410a818486614392565b6001600160a01b03811615614144576141255f855f5f613cdc565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615614172576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f6141da83612352565b5f838152600760209081526040808320546001600160a01b038816845260069092529091209192509081831461422f575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f9061425e90600190614c76565b5f838152600960205260408120546008805493945090928490811061428557614285614ca2565b905f5260205f200154905080600883815481106142a4576142a4614ca2565b5f9182526020808320909101929092558281526009909152604080822084905585825281205560088054806142db576142db614efe565b600190038181905f5260205f20015f9055905550505050565b5f600161430084612352565b61430a9190614c76565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f81831061435c575f828152602084905260409020611884565b505f9182526020526040902090565b5f60ff8216601f81111561107657604051632cd44ac360e21b815260040160405180910390fd5b61439d8383836143f6565b6120eb576001600160a01b0383166143cb57604051637e27328960e01b8152600481018290526024016118b0565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016118b0565b5f6001600160a01b0383161580159061177c5750826001600160a01b0316846001600160a01b0316148061442f575061442f8484612e02565b8061177c5750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160a01b0381168114612eea575f5ffd5b5f6020828403121561447b575f5ffd5b813561188481614457565b6001600160e01b031981168114612eea575f5ffd5b5f602082840312156144ab575f5ffd5b813561188481614486565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61188460208301846144b6565b5f60208284031215614506575f5ffd5b5035919050565b8015158114612eea575f5ffd5b5f5f6040838503121561452b575f5ffd5b823561453681614457565b915060208301356145468161450d565b809150509250929050565b5f5f83601f840112614561575f5ffd5b5081356001600160401b03811115614577575f5ffd5b602083019150836020828501011115611ac0575f5ffd5b5f5f5f5f606085870312156145a1575f5ffd5b843593506020850135925060408501356001600160401b038111156145c4575f5ffd5b6145d087828801614551565b95989497509550505050565b5f5f604083850312156145ed575f5ffd5b82356145f881614457565b946020939093013593505050565b5f5f5f60608486031215614618575f5ffd5b833561462381614457565b9250602084013561463381614457565b929592945050506040919091013590565b803560ff81168114614654575f5ffd5b919050565b5f5f5f6060848603121561466b575f5ffd5b833561467681614457565b925061468460208501614644565b915061469260408501614644565b90509250925092565b5f5f604083850312156146ac575f5ffd5b50508035926020909101359150565b5f602082840312156146cb575f5ffd5b61188482614644565b5f5f83601f8401126146e4575f5ffd5b5081356001600160401b038111156146fa575f5ffd5b6020830191508360208260051b8501011115611ac0575f5ffd5b5f5f5f5f5f5f5f5f6080898b03121561472b575f5ffd5b88356001600160401b03811115614740575f5ffd5b61474c8b828c016146d4565b90995097505060208901356001600160401b0381111561476a575f5ffd5b6147768b828c016146d4565b90975095505060408901356001600160401b03811115614794575f5ffd5b6147a08b828c016146d4565b90955093505060608901356001600160401b038111156147be575f5ffd5b6147ca8b828c016146d4565b999c989b5096995094979396929594505050565b5f5f5f5f608085870312156147f1575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f6020838503121561481e575f5ffd5b82356001600160401b03811115614833575f5ffd5b61483f85828601614551565b90969095509350505050565b5f5f6040838503121561485c575f5ffd5b6145f883614644565b5f8151808452602084019350602083015f5b82811015614895578151865260209586019590910190600101614877565b5093949350505050565b60ff60f81b8816815260e060208201525f6148bd60e08301896144b6565b82810360408401526148cf81896144b6565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506149008185614865565b9a9950505050505050505050565b5f5f6040838503121561491f575f5ffd5b823561492a81614457565b915060208301356001600160601b0381168114614546575f5ffd5b803563ffffffff81168114614654575f5ffd5b803561ffff81168114614654575f5ffd5b5f5f5f5f6080858703121561497c575f5ffd5b61498585614945565b935061499360208601614958565b92506149a160408601614958565b91506149af60608601614945565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156149e1575f5ffd5b84356149ec81614457565b935060208501356149fc81614457565b92506040850135915060608501356001600160401b03811115614a1d575f5ffd5b8501601f81018713614a2d575f5ffd5b80356001600160401b03811115614a4657614a466149ba565b604051601f8201601f19908116603f011681016001600160401b0381118282101715614a7457614a746149ba565b604052818152828201602001891015614a8b575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f8151808452602084019350602083015f5b8281101561489557815160ff16865260209586019590910190600101614abe565b608081525f614af16080830187614865565b8281036020840152614b038187614aac565b90508281036040840152614b178186614aac565b90508281036060840152614b2b8185614865565b979650505050505050565b5f5f60408385031215614b47575f5ffd5b8235614b5281614457565b9150602083013561454681614457565b5f5f5f60608486031215614b74575f5ffd5b8335614b7f81614457565b95602085013595506040909401359392505050565b600181811c90821680614ba857607f821691505b602082108103614bc657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561107657611076614bcc565b808202811582820484141761107657611076614bcc565b6001600160401b03818116838216019081111561107657611076614bcc565b61ffff818116838216019081111561107657611076614bcc565b5f60208284031215614c53575f5ffd5b81516118848161450d565b5f60018201614c6f57614c6f614bcc565b5060010190565b8181038181111561107657611076614bcc565b60ff828116828216039081111561107657611076614bcc565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112614ccb575f5ffd5b8301803591506001600160401b03821115614ce4575f5ffd5b6020019150600581901b3603821315611ac0575f5ffd5b601f8211156120eb57805f5260205f20601f840160051c81016020851015614d205750805b601f840160051c820191505b818110156139d3575f8155600101614d2c565b6001600160401b03831115614d5657614d566149ba565b614d6a83614d648354614b94565b83614cfb565b5f601f841160018114614d9b575f8515614d845750838201355b5f19600387901b1c1916600186901b1783556139d3565b5f83815260208120601f198716915b82811015614dca5786850135825560209485019460019092019101614daa565b5086821015614de6575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215614e08575f5ffd5b5051919050565b60ff818116838216019081111561107657611076614bcc565b634e487b7160e01b5f52601260045260245ffd5b5f82614e4a57614e4a614e28565b500490565b5f81518060208401855e5f93019283525090919050565b5f61177c614e748386614e4f565b84614e4f565b61ffff828116828216039081111561107657611076614bcc565b5f82614ea257614ea2614e28565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614ed9908301846144b6565b9695505050505050565b5f60208284031215614ef3575f5ffd5b815161188481614486565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220f43d3abe0eb36c726da3e43636be1873ca44c17da0604b7bfb4e64d98427950b64736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7d235d…7eed87 | mint | 38,444,452 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0xcbb5…bbcd | IN | PonsRig Machines | $15.250.008 ETH | 0.00002564 | |
| 0x6a153d…cc3381 | claimMirror | 38,444,387 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | 0x3875…06bd | IN | PonsRig Machines | $0.000 ETH | 0.00003926 | |
| 0xd4dbeb…60b7d3 | Set Approval For All | 38,444,200 | 16 hrs agoMon, 17 Aug 2026 01:31:52 UTC | 0xd2d9…58bc | IN | PonsRig Machines | $0.000 ETH | 0.00000092 | |
| 0x808dd9…7d058a | Set Approval For All | 38,444,119 | 16 hrs agoMon, 17 Aug 2026 01:31:44 UTC | 0x769c…c44d | IN | PonsRig Machines | $0.000 ETH | 0.00000092 | |
| 0x124dfc…a7ca9f | mint | 38,443,618 | 16 hrs agoMon, 17 Aug 2026 01:30:54 UTC | 0xd2d9…58bc | IN | PonsRig Machines | $1.910.001 ETH | 0.00000574 | |
| 0x7b7ae4…bb0a79 | Set Approval For All | 38,442,786 | 16 hrs agoMon, 17 Aug 2026 01:29:30 UTC | 0x1d6b…4bc0 | IN | PonsRig Machines | $0.000 ETH | 0.00000092 | |
| 0xca4f64…478413 | claimMirror | 38,442,132 | 16 hrs agoMon, 17 Aug 2026 01:28:24 UTC | 0x183f…7503 | IN | PonsRig Machines | $0.000 ETH | 0.00000440 | |
| 0x667c3d…7fd1e7 | Set Approval For All | 38,441,206 | 16 hrs agoMon, 17 Aug 2026 01:26:52 UTC | 0x9a32…0edf | IN | PonsRig Machines | $0.000 ETH | 0.00000092 | |
| 0x4f3874…8a9140 | fuse | 38,439,896 | 16 hrs agoMon, 17 Aug 2026 01:24:40 UTC | 0x8a38…aa3a | IN | PonsRig Machines | $38.130.02 ETH | 0.00000374 | |
| 0x93ecef…01e7c6 | Set Approval For All | 38,439,649 | 16 hrs agoMon, 17 Aug 2026 01:24:15 UTC | 0x2b6d…66a9 | IN | PonsRig Machines | $0.000 ETH | 0.00000093 | |
| 0xd633fe…54f78d | setForge | 38,439,625 | 16 hrs agoMon, 17 Aug 2026 01:24:13 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000052 | |
| 0xca6f02…1a00e5 | forgeMint | 38,439,564 | 16 hrs agoMon, 17 Aug 2026 01:24:07 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000371 | |
| 0x369fef…de5e50 | forgeMint | 38,439,513 | 16 hrs agoMon, 17 Aug 2026 01:24:02 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000378 | |
| 0x65e600…de9996 | forgeMint | 38,439,469 | 16 hrs agoMon, 17 Aug 2026 01:23:57 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000372 | |
| 0x3a687f…cb0c89 | forgeMint | 38,439,433 | 16 hrs agoMon, 17 Aug 2026 01:23:54 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000370 | |
| 0x095707…7a74f2 | forgeMint | 38,439,346 | 16 hrs agoMon, 17 Aug 2026 01:23:45 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000370 | |
| 0x05a17e…93a7ad | forgeMint | 38,439,299 | 16 hrs agoMon, 17 Aug 2026 01:23:40 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000371 | |
| 0xa6d1a7…4a61ad | forgeMint | 38,439,260 | 16 hrs agoMon, 17 Aug 2026 01:23:36 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000371 | |
| 0x53a34f…9b51ed | forgeMint | 38,439,222 | 16 hrs agoMon, 17 Aug 2026 01:23:32 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000373 | |
| 0x4d00a5…abf030 | forgeMint | 38,439,121 | 16 hrs agoMon, 17 Aug 2026 01:23:22 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000371 | |
| 0xfceb5e…66d3ca | forgeMint | 38,439,074 | 16 hrs agoMon, 17 Aug 2026 01:23:17 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000373 | |
| 0x6d1e10…5deccb | forgeMint | 38,439,031 | 16 hrs agoMon, 17 Aug 2026 01:23:13 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000373 | |
| 0xbb82f4…1dc4b9 | forgeMint | 38,438,991 | 16 hrs agoMon, 17 Aug 2026 01:23:09 UTC | 0x95a3…0a9c | IN | PonsRig Machines | $0.000 ETH | 0.00000372 | |
| 0x878361…4b9ce0 | Set Approval For All | 38,438,329 | 16 hrs agoMon, 17 Aug 2026 01:22:03 UTC | 0x9a32…0edf | IN | PonsRig Machines | $0.000 ETH | 0.00000093 | |
| 0xfd4f05…faa5f0 | Set Approval For All | 38,438,311 | 16 hrs agoMon, 17 Aug 2026 01:22:01 UTC | 0x7cb3…5247 | IN | PonsRig Machines | $0.000 ETH | 0.00000092 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 39,032,083 | 8 mins agoMon, 17 Aug 2026 17:54:45 UTC | 0x0b05e8…a12b6f | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 39,018,800 | 30 mins agoMon, 17 Aug 2026 17:32:34 UTC | 0xb6b09e…bbed7c | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.0021 ETH |
| 39,018,538 | 31 mins agoMon, 17 Aug 2026 17:32:08 UTC | 0xfc875d…9f7cbf | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 39,018,404 | 31 mins agoMon, 17 Aug 2026 17:31:55 UTC | 0x145248…62f546 | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 39,018,165 | 32 mins agoMon, 17 Aug 2026 17:31:31 UTC | 0x150fab…3ea536 | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 39,017,706 | 32 mins agoMon, 17 Aug 2026 17:30:44 UTC | 0x2c5e13…84ce35 | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 39,017,578 | 33 mins agoMon, 17 Aug 2026 17:30:31 UTC | 0x9dfac8…3145b7 | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 39,017,233 | 33 mins agoMon, 17 Aug 2026 17:29:57 UTC | 0x77e917…ade0a0 | CALL | Transfer | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 38,302,763 | 20 hrs agoSun, 16 Aug 2026 21:35:20 UTC | 0x7376ec…33c70c | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 38,297,758 | 20 hrs agoSun, 16 Aug 2026 21:26:58 UTC | 0x4fb41a…7748c6 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 38,297,034 | 20 hrs agoSun, 16 Aug 2026 21:25:45 UTC | 0x663dd8…991dc2 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 38,296,491 | 20 hrs agoSun, 16 Aug 2026 21:24:50 UTC | 0x696e34…b20c44 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 38,296,222 | 20 hrs agoSun, 16 Aug 2026 21:24:23 UTC | 0xe16c00…6deb84 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 38,295,937 | 20 hrs agoSun, 16 Aug 2026 21:23:56 UTC | 0xc00154…3af5bb | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 38,294,868 | 20 hrs agoSun, 16 Aug 2026 21:22:08 UTC | 0xf072b3…1ca97a | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 38,289,286 | 20 hrs agoSun, 16 Aug 2026 21:12:48 UTC | 0xf996ef…8ae26b | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.014 ETH |
| 38,288,815 | 20 hrs agoSun, 16 Aug 2026 21:12:01 UTC | 0x503394…4220c0 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00525 ETH |
| 38,288,670 | 20 hrs agoSun, 16 Aug 2026 21:11:46 UTC | 0xdd1858…57f6d3 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00525 ETH |
| 38,287,403 | 20 hrs agoSun, 16 Aug 2026 21:09:40 UTC | 0xe17b34…f4b957 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00525 ETH |
| 38,286,314 | 20 hrs agoSun, 16 Aug 2026 21:07:51 UTC | 0x5ce559…bfb3d7 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.0021 ETH |
| 38,278,683 | 21 hrs agoSun, 16 Aug 2026 20:55:05 UTC | 0xc4659b…d00ddc | CALL | buyRack | 0x0569…4850 | IN | 0xd19f…8672 | 0.00075 ETH |
| 38,262,134 | 21 hrs agoSun, 16 Aug 2026 20:27:25 UTC | 0xe4f9fb…22353d | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| 38,256,808 | 21 hrs agoSun, 16 Aug 2026 20:18:32 UTC | 0xcbc266…9411a3 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00035 ETH |
| 38,256,287 | 21 hrs agoSun, 16 Aug 2026 20:17:39 UTC | 0xa85bd9…ed37b1 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.0021 ETH |
| 38,256,174 | 21 hrs agoSun, 16 Aug 2026 20:17:28 UTC | 0xf2e812…25c967 | CALL | fuse | 0xd19f…8672 | OUT | 0x0569…4850 | 0.00087 ETH |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xecb068…d8de9a | 16 hrs agoMon, 17 Aug 2026 01:32:47 UTC | Transfer | [0] 0x000000000000…6e0cecb1 [1] 0x000000000000…12184850 [2] 0x000000000000…00003470 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003607 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003607 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003606 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003606 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003605 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003605 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003604 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003604 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003603 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003603 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003602 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003602 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003601 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000004 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003601 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | 0x71f958…4aeb | [0] 0x000000000000…00003600 [1] 0x000000000000…061dbbcd data: 0x000000000000000000…00000001 |
| 0x7d235d…7eed87 | 16 hrs agoMon, 17 Aug 2026 01:32:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…061dbbcd [2] 0x000000000000…00003600 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | 0x0b7a04…44a6 | [0] 0x000000000000…000014d7 [1] 0x000000000000…e80c06bd data: 0x000000000000000000…00000000 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…e80c06bd [2] 0x000000000000…000014d7 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | 0x0b7a04…44a6 | [0] 0x000000000000…000014d6 [1] 0x000000000000…e80c06bd data: 0x000000000000000000…00000000 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…e80c06bd [2] 0x000000000000…000014d6 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | 0x0b7a04…44a6 | [0] 0x000000000000…0000145a [1] 0x000000000000…e80c06bd data: 0x000000000000000000…00000000 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…e80c06bd [2] 0x000000000000…0000145a |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | 0x0b7a04…44a6 | [0] 0x000000000000…00001360 [1] 0x000000000000…e80c06bd data: 0x000000000000000000…00000000 |
| 0x6a153d…cc3381 | 16 hrs agoMon, 17 Aug 2026 01:32:11 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…e80c06bd [2] 0x000000000000…00001360 |