// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "solady/src/utils/SSTORE2.sol";
contract PixelDataV2 is Ownable {
string private constant SVG_HEADER =
'<svg width="1200" height="1200" shape-rendering="crispEdges" xmlns="http://www.w3.org/2000/svg" version="1.2" viewBox="0 0 ';
string private constant SVG_FOOTER =
'"><style>rect{shape-rendering:crispEdges}</style>';
bytes private constant HEX_SYMBOLS = "0123456789abcdef";
uint256 private constant MAX_CONTRACT_SIZE = 24576;
uint256 public compositesPerChunk;
uint16 public canvasWidth;
uint16 public canvasHeight;
bool public isSealed;
bool public isRevealed;
address public palettePointer;
mapping(uint256 => address[]) public traitPointers;
address[] public compositesPointers;
mapping(uint256 => string) public layerNames;
uint256 public numberOfLayers;
struct Trait {
uint256 pointerIndex;
uint256 offset;
uint256 length;
}
mapping(uint256 => mapping(uint256 => Trait)) public traits;
mapping(uint256 => mapping(uint256 => string)) public traitNames;
uint256 public revealSeed;
address public mintbayGenerativeContract;
event CanvasSizeSet(uint16 width, uint16 height);
event PaletteSet(address pointer);
event LayerSet(uint256 layerId, string name);
event TraitAdded(uint256 layerId, uint256 traitId, string name, uint256 pointerIndex, uint256 offset);
event CompositeChunkAdded(uint256 chunkId, address pointer);
event RevealSeedSet(uint256 seed);
event ContractSealed();
event CompositesPerChunkSet(uint256 compositesPerChunk);
event MintbayGenerativeContractSet(address indexed mintContract);
modifier unsealed() {
require(!isSealed, "Contract sealed");
_;
}
modifier onlyMintbayOrOwner() {
require(msg.sender == mintbayGenerativeContract || msg.sender == owner(), "Not authorized");
_;
}
modifier noCompositesYet() {
require(compositesPointers.length == 0, "Composites already uploaded");
_;
}
constructor() {
compositesPerChunk = 500;
}
function setCompositesPerChunk(uint256 _compositesPerChunk) external onlyOwner unsealed noCompositesYet {
require(_compositesPerChunk > 0, "Invalid chunk size");
require(numberOfLayers > 0, "No layers set");
require(_compositesPerChunk * numberOfLayers <= MAX_CONTRACT_SIZE, "Chunk too large");
compositesPerChunk = _compositesPerChunk;
emit CompositesPerChunkSet(_compositesPerChunk);
}
function setMintbayGenerativeContract(address _mintbayGenerativeContract) external onlyOwner unsealed {
require(_mintbayGenerativeContract != address(0), "Invalid address");
mintbayGenerativeContract = _mintbayGenerativeContract;
emit MintbayGenerativeContractSet(_mintbayGenerativeContract);
}
function setCanvasSize(uint16 _width, uint16 _height) external onlyOwner unsealed noCompositesYet {
require(_width > 0 && _height > 0 && _width <= 256 && _height <= 256, "Invalid canvas size");
canvasWidth = _width;
canvasHeight = _height;
emit CanvasSizeSet(_width, _height);
}
function setPalette(bytes calldata _palette) external onlyOwner unsealed noCompositesYet {
require(canvasWidth > 0 && canvasHeight > 0, "Canvas not set");
require(_palette.length % 4 == 0, "Invalid palette size");
require(_palette.length / 4 <= 255, "Too many colors");
require(_palette.length + 32 <= MAX_CONTRACT_SIZE, "Palette too large");
palettePointer = SSTORE2.write(abi.encodePacked(uint256(_palette.length), _palette));
emit PaletteSet(palettePointer);
}
function setLayer(uint256 layerId, string calldata name) external onlyOwner unsealed noCompositesYet {
layerNames[layerId] = name;
if (layerId >= numberOfLayers) {
numberOfLayers = layerId + 1;
}
emit LayerSet(layerId, name);
}
function setLayersBatch(uint256[] calldata layerIds, string[] calldata names)
external
onlyOwner
unsealed
noCompositesYet
{
require(layerIds.length == names.length, "Mismatched arrays");
for (uint256 i = 0; i < layerIds.length; i++) {
layerNames[layerIds[i]] = names[i];
if (layerIds[i] >= numberOfLayers) {
numberOfLayers = layerIds[i] + 1;
}
emit LayerSet(layerIds[i], names[i]);
}
}
function addTrait(uint256 layerId, uint256 traitId, bytes calldata data, string calldata name)
external
onlyOwner
unsealed
{
require(layerId < numberOfLayers, "Invalid layer");
require(traitId <= type(uint8).max, "Trait ID too large");
_validateTraitData(data);
(, uint256 pointerIndex, uint256 offset) =
_storeTraitData(layerId, abi.encodePacked(uint256(data.length), data));
_setTrait(layerId, traitId, name, pointerIndex, offset + 32, data.length);
}
function addTraitsBatch(
uint256 layerId,
uint256[] calldata traitIds,
bytes[] calldata datas,
string[] calldata names
) external onlyOwner unsealed {
require(layerId < numberOfLayers, "Invalid layer");
require(traitIds.length == datas.length && datas.length == names.length, "Mismatched arrays");
for (uint256 i = 0; i < traitIds.length; i++) {
require(traitIds[i] <= type(uint8).max, "Trait ID too large");
_validateTraitData(datas[i]);
}
bytes memory combinedData;
for (uint256 i = 0; i < traitIds.length; i++) {
combinedData = abi.encodePacked(combinedData, uint256(datas[i].length), datas[i]);
}
(, uint256 pointerIndex, uint256 offset) = _storeTraitData(layerId, combinedData);
uint256 currentOffset = offset + 32;
for (uint256 i = 0; i < traitIds.length; i++) {
_setTrait(layerId, traitIds[i], names[i], pointerIndex, currentOffset, datas[i].length);
currentOffset += 32 + datas[i].length;
}
}
function addComposite(uint256[] calldata traitIndices) external onlyOwner unsealed {
require(traitIndices.length == numberOfLayers, "Invalid composite length");
bytes memory data;
for (uint256 i = 0; i < traitIndices.length; i++) {
uint256 traitIndex = traitIndices[i];
require(traitIndex <= type(uint8).max, "Trait index too large");
require(traitPointers[i].length > traits[i][traitIndex].pointerIndex, "Invalid trait index");
data = abi.encodePacked(data, uint8(traitIndex));
}
_storeComposite(data);
emit CompositeChunkAdded(compositesPointers.length - 1, compositesPointers[compositesPointers.length - 1]);
}
function addCompositesBatch(uint256[][] calldata traitIndicesArray) external onlyOwner unsealed {
uint256 count = traitIndicesArray.length;
require(count > 0, "Empty batch");
require(numberOfLayers > 0, "No layers");
uint256 numLayers = numberOfLayers;
bytes memory data = new bytes(count * numLayers);
uint256 dataIndex = 0;
for (uint256 i = 0; i < count; ) {
uint256[] calldata traitsPerLayer = traitIndicesArray[i];
require(traitsPerLayer.length == numLayers, "Invalid composite length");
for (uint256 j = 0; j < numLayers; ) {
uint256 traitIndex = traitsPerLayer[j];
require(traitIndex <= type(uint8).max, "Trait index too large");
require(traitPointers[j].length > traits[j][traitIndex].pointerIndex, "Invalid trait index");
data[dataIndex] = bytes1(uint8(traitIndex));
unchecked {
++dataIndex;
++j;
}
}
unchecked {
++i;
}
}
_storeComposite(data);
emit CompositeChunkAdded(compositesPointers.length - 1, compositesPointers[compositesPointers.length - 1]);
}
function setRevealSeed(uint256 _seed) external onlyMintbayOrOwner {
require(!isRevealed, "Already revealed");
revealSeed = _seed;
isRevealed = true;
emit RevealSeedSet(_seed);
}
function sealContract() external onlyOwner {
isSealed = true;
emit ContractSealed();
}
function getComposite(uint256 compositeIndex) external view returns (uint256[] memory) {
require(compositeIndex < getCompositesCount(), "Invalid composite index");
uint256 compositesSize = numberOfLayers;
uint256 chunkId = compositeIndex / compositesPerChunk;
uint256 chunkOffset = (compositeIndex % compositesPerChunk) * compositesSize;
require(chunkId < compositesPointers.length, "Invalid chunk ID");
bytes memory compositesData = SSTORE2.read(
compositesPointers[chunkId],
chunkOffset,
chunkOffset + compositesSize
);
uint256[] memory traitIndices = new uint256[](numberOfLayers);
for (uint256 i = 0; i < numberOfLayers; i++) {
traitIndices[i] = uint8(compositesData[i]);
}
return traitIndices;
}
function traitSvg(uint256 layerId, uint256 traitIndex) public view returns (string memory) {
require(isRevealed, "Not revealed");
require(layerId < numberOfLayers, "Invalid layer");
Trait memory trait = traits[layerId][traitIndex];
require(trait.length > 0, "Invalid trait");
bytes memory traitData = SSTORE2.read(
traitPointers[layerId][trait.pointerIndex],
trait.offset,
trait.offset + trait.length
);
bytes memory paletteData = SSTORE2.read(palettePointer);
return string(_generateLayerSvg(traitData, paletteData));
}
function getCompositesCount() public view returns (uint256) {
if (numberOfLayers == 0) return 0;
uint256 total = 0;
uint256 compositesSize = numberOfLayers;
for (uint256 i = 0; i < compositesPointers.length; i++) {
total += SSTORE2.read(compositesPointers[i]).length / compositesSize;
}
return total;
}
function tokenImageSvg(uint256 compositeIndex) public view returns (string memory) {
require(isRevealed, "Not revealed");
require(compositeIndex < getCompositesCount(), "Invalid composite index");
bytes memory svg = abi.encodePacked(
SVG_HEADER,
Strings.toString(canvasWidth),
" ",
Strings.toString(canvasHeight),
SVG_FOOTER
);
uint256 compositesSize = numberOfLayers;
uint256 chunkId = compositeIndex / compositesPerChunk;
uint256 chunkOffset = (compositeIndex % compositesPerChunk) * compositesSize;
bytes memory compositesData = SSTORE2.read(
compositesPointers[chunkId],
chunkOffset,
chunkOffset + compositesSize
);
bytes memory paletteData = SSTORE2.read(palettePointer);
for (uint256 layer = 0; layer < numberOfLayers; layer++) {
uint256 traitIndex = uint8(compositesData[layer]);
Trait memory trait = traits[layer][traitIndex];
if (trait.length == 0) continue;
bytes memory traitData = SSTORE2.read(
traitPointers[layer][trait.pointerIndex],
trait.offset,
trait.offset + trait.length
);
bytes memory layerSvg = _generateLayerSvg(traitData, paletteData);
if (layerSvg.length > 0) {
svg = abi.encodePacked(svg, layerSvg);
}
}
svg = abi.encodePacked(svg, "</svg>");
return string(svg);
}
function tokenAttributes(uint256 compositeIndex) public view returns (bytes memory) {
require(isRevealed, "Not revealed");
require(compositeIndex < getCompositesCount(), "Invalid composite index");
return _generateAttributes(compositeIndex);
}
function _escapeJsonString(string memory input) internal pure returns (string memory) {
bytes memory src = bytes(input);
bytes memory out = new bytes(src.length * 2);
uint256 j = 0;
for (uint256 i = 0; i < src.length; i++) {
bytes1 c = src[i];
if (c == bytes1(0x22)) {
out[j++] = bytes1(0x5c);
out[j++] = bytes1(0x22);
} else if (c == bytes1(0x5c)) {
out[j++] = bytes1(0x5c);
out[j++] = bytes1(0x5c);
} else if (c == bytes1(0x0a)) {
out[j++] = bytes1(0x5c);
out[j++] = bytes1(0x6e);
} else if (c == bytes1(0x0d)) {
out[j++] = bytes1(0x5c);
out[j++] = bytes1(0x72);
} else if (c == bytes1(0x09)) {
out[j++] = bytes1(0x5c);
out[j++] = bytes1(0x74);
} else {
out[j++] = c;
}
}
bytes memory escaped = new bytes(j);
for (uint256 i = 0; i < j; i++) {
escaped[i] = out[i];
}
return string(escaped);
}
function _generateAttributes(uint256 compositeIndex) private view returns (bytes memory) {
uint256 compositesSize = numberOfLayers;
uint256 chunkId = compositeIndex / compositesPerChunk;
uint256 chunkOffset = (compositeIndex % compositesPerChunk) * compositesSize;
bytes memory compositesData = SSTORE2.read(
compositesPointers[chunkId],
chunkOffset,
chunkOffset + compositesSize
);
bytes memory attributes = "[";
bool hasAttributes = false;
for (uint256 i = 0; i < numberOfLayers; i++) {
uint256 traitIndex = uint8(compositesData[i]);
if (bytes(traitNames[i][traitIndex]).length == 0 || traits[i][traitIndex].length == 0) {
continue;
}
if (hasAttributes) {
attributes = abi.encodePacked(attributes, ",");
}
attributes = abi.encodePacked(
attributes,
'{"trait_type":"',
_escapeJsonString(layerNames[i]),
'","value":"',
_escapeJsonString(traitNames[i][traitIndex]),
'"}'
);
hasAttributes = true;
}
return abi.encodePacked(attributes, "]");
}
function _setTrait(
uint256 layerId,
uint256 traitId,
string memory name,
uint256 pointerIndex,
uint256 offset,
uint256 length
) internal {
traits[layerId][traitId] = Trait(pointerIndex, offset, length);
traitNames[layerId][traitId] = name;
emit TraitAdded(layerId, traitId, name, pointerIndex, offset);
}
function _storeTraitData(uint256 layerId, bytes memory data)
private
returns (address pointer, uint256 pointerIndex, uint256 offset)
{
require(data.length <= MAX_CONTRACT_SIZE, "Data too large");
address[] storage pointers = traitPointers[layerId];
pointer = SSTORE2.write(data);
pointers.push(pointer);
pointerIndex = pointers.length - 1;
offset = 0;
}
function _storeComposite(bytes memory data) private {
require(data.length > 0, "Empty composite data");
require(data.length <= MAX_CONTRACT_SIZE, "Composite chunk too large");
compositesPointers.push(SSTORE2.write(data));
}
function _validateTraitData(bytes memory data) private view {
if (data.length == 0) return;
bytes memory paletteData = SSTORE2.read(palettePointer);
require(paletteData.length > 32, "Palette not set");
uint256 paletteLength = uint256(bytes32(paletteData));
require(data.length % 5 == 0, "Invalid rect data");
for (uint256 i = 0; i < data.length; i += 5) {
uint8 x = uint8(data[i]);
uint8 y = uint8(data[i + 1]);
uint8 width = uint8(data[i + 2]);
uint8 height = uint8(data[i + 3]);
uint8 paletteIndex = uint8(data[i + 4]);
require(uint16(x) + width <= canvasWidth && uint16(y) + height <= canvasHeight, "Out of bounds");
require(width > 0 && height > 0, "Zero rect");
require(_isValidPaletteIndex(paletteIndex, paletteLength), "Bad palette index");
}
}
function _isValidPaletteIndex(uint256 paletteIndex, uint256 paletteLength) internal pure returns (bool) {
require(paletteLength % 4 == 0, "Invalid palette len");
uint256 colorCount = paletteLength / 4;
return paletteIndex < colorCount || paletteIndex == 255;
}
function _rgbToHex(uint256 paletteOffset) private view returns (bytes memory) {
bytes memory paletteData = SSTORE2.read(palettePointer);
uint8 r = uint8(paletteData[32 + paletteOffset]);
uint8 g = uint8(paletteData[32 + paletteOffset + 1]);
uint8 b = uint8(paletteData[32 + paletteOffset + 2]);
return abi.encodePacked(
HEX_SYMBOLS[r >> 4], HEX_SYMBOLS[r & 0x0f],
HEX_SYMBOLS[g >> 4], HEX_SYMBOLS[g & 0x0f],
HEX_SYMBOLS[b >> 4], HEX_SYMBOLS[b & 0x0f]
);
}
function _opacityFromAlpha(uint8 alpha) private pure returns (string memory) {
if (alpha == 255) return "1";
if (alpha == 0) return "0";
uint256 scaled = (uint256(alpha) * 1000) / 255;
uint256 tenths = scaled / 100;
uint256 hundredths = (scaled % 100) / 10;
return string(
abi.encodePacked(
"0.",
Strings.toString(tenths),
Strings.toString(hundredths)
)
);
}
function _generateLayerSvg(bytes memory data, bytes memory paletteData) private view returns (bytes memory) {
if (data.length == 0) return "";
uint256 paletteLength = uint256(bytes32(paletteData));
require(paletteLength % 4 == 0, "Invalid palette");
uint256 maxPaletteIndex = paletteLength / 4;
require(maxPaletteIndex < 256, "Too many colors");
bytes[] memory rectGroups = new bytes[](maxPaletteIndex + 1);
for (uint256 i = 0; i < data.length; i += 5) {
uint8 x = uint8(data[i]);
uint8 y = uint8(data[i + 1]);
uint8 width = uint8(data[i + 2]);
uint8 height = uint8(data[i + 3]);
uint8 paletteIndex = uint8(data[i + 4]);
if (paletteIndex == 255) continue;
rectGroups[paletteIndex] = abi.encodePacked(
rectGroups[paletteIndex],
'<rect x="',
Strings.toString(x),
'" y="',
Strings.toString(y),
'" width="',
Strings.toString(width),
'" height="',
Strings.toString(height),
'"/>'
);
}
bytes memory svg;
for (uint256 i = 0; i < maxPaletteIndex; i++) {
if (rectGroups[i].length == 0) continue;
uint256 paletteOffset = i * 4;
bytes memory hexColor = _rgbToHex(paletteOffset);
string memory opacity = _opacityFromAlpha(uint8(paletteData[32 + paletteOffset + 3]));
svg = abi.encodePacked(
svg,
'<g fill="#',
hexColor,
'" fill-opacity="',
opacity,
'">',
rectGroups[i],
"</g>"
);
}
return svg;
}
}[
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"name": "CanvasSizeSet",
"type": "event",
"inputs": [
{
"name": "width",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "height",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "CompositeChunkAdded",
"type": "event",
"inputs": [
{
"name": "chunkId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "pointer",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "CompositesPerChunkSet",
"type": "event",
"inputs": [
{
"name": "compositesPerChunk",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ContractSealed",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "LayerSet",
"type": "event",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "MintbayGenerativeContractSet",
"type": "event",
"inputs": [
{
"name": "mintContract",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PaletteSet",
"type": "event",
"inputs": [
{
"name": "pointer",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RevealSeedSet",
"type": "event",
"inputs": [
{
"name": "seed",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TraitAdded",
"type": "event",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "traitId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "pointerIndex",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "offset",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "addComposite",
"type": "function",
"inputs": [
{
"name": "traitIndices",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "addCompositesBatch",
"type": "function",
"inputs": [
{
"name": "traitIndicesArray",
"type": "uint256[][]",
"internalType": "uint256[][]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "addTrait",
"type": "function",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "traitId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "name",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "addTraitsBatch",
"type": "function",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "traitIds",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "datas",
"type": "bytes[]",
"internalType": "bytes[]"
},
{
"name": "names",
"type": "string[]",
"internalType": "string[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "canvasHeight",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "canvasWidth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "compositesPerChunk",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "compositesPointers",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getComposite",
"type": "function",
"inputs": [
{
"name": "compositeIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "getCompositesCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "isRevealed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isSealed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "layerNames",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "mintbayGenerativeContract",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "numberOfLayers",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "palettePointer",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "revealSeed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "sealContract",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setCanvasSize",
"type": "function",
"inputs": [
{
"name": "_width",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "_height",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setCompositesPerChunk",
"type": "function",
"inputs": [
{
"name": "_compositesPerChunk",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setLayer",
"type": "function",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "name",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setLayersBatch",
"type": "function",
"inputs": [
{
"name": "layerIds",
"type": "uint256[]",
"internalType": "uint256[]"
},
{
"name": "names",
"type": "string[]",
"internalType": "string[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMintbayGenerativeContract",
"type": "function",
"inputs": [
{
"name": "_mintbayGenerativeContract",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPalette",
"type": "function",
"inputs": [
{
"name": "_palette",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRevealSeed",
"type": "function",
"inputs": [
{
"name": "_seed",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "tokenAttributes",
"type": "function",
"inputs": [
{
"name": "compositeIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "view"
},
{
"name": "tokenImageSvg",
"type": "function",
"inputs": [
{
"name": "compositeIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "traitNames",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "traitPointers",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "traitSvg",
"type": "function",
"inputs": [
{
"name": "layerId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "traitIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "traits",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "pointerIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "offset",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "length",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x608080604052346100615760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101f460015561379b90816100678239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163094441d114611ca057816328c855d414611be85781632fa2acf814611bc957816332c2f7f814611baa57816340ce89c214611b7d57816354214f6914611b56578163561d62251461194057816362415a1914611916578163631f9852146118f157816368bd580e1461189e5781636b3fc69514611794578163715018a61461174c57816379d3cd0014611709578163844e2cd51461151b578163865dfcd9146114d95781638da5cb5b146114b15781638f6594871461138357816393119e0a1461135a57816399b0eb621461125c5781639c71a38014611236578163a318a326146110bb578163aff31edc1461107b578163b45f31bf14610f6b578163bf2d7b3214610e2c578163c06bb20514610e09578163d56fd88f14610a7a578163de9aa59414610966578163efca8f0814610706578163f132914b146106e2578163f253bef3146106c3578163f2824b5314610434578163f2fde38b1461037b578163f69d3fad146101e7575063f8d4be6d1461019957600080fd5b346101e3576101a736612051565b9290815260036020528181209081548410156101e057506020926101ca91612098565b60018060a01b0391549060031b1c169051908152f35b80fd5b5080fd5b839150346101e357826003193601126101e3576001600160401b03908035906024358381116103775761021d9036908301612024565b9190936102286120b0565b60025461023c60ff602092831c1615612108565b610247835415612146565b8487526005815287872091841161036457839061026e826102688554611e8d565b8561222e565b8790601f83116001146102ff575087916102f4575b508360011b906000198560031b1c19161790555b6006548310156102c8575b506102c29060008051602061370683398151915294955193849384612282565b0390a180f35b94600183018084116102e15760065594506102c26102a2565b634e487b7160e01b865260118752602486fd5b905085013588610283565b91601f198116848a52838a20938a905b8282106103475750501061032d575b5050600183811b019055610297565b860135600019600386901b60f8161c19169055878061031e565b80929350600185968293968d01358155019501930187929161030f565b634e487b7160e01b875260418352602487fd5b8480fd5b91905034610430576020366003190112610430576001600160a01b03823581811693919290849003610377576103af6120b0565b83156103de57505082546001600160a01b0319811683178455166000805160206137268339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b9190503461043057602091826003193601126106bf5735600261045d60ff825460281c166125a0565b61046f6104686125db565b831061252f565b6006546104c360019361049f61049984610494885461048e81876121d9565b956121b9565b612190565b91612067565b919054916104ad8583612221565b9260039190911b1c6001600160a01b031661368a565b9184516104cf81611ef8565b848152605b60f81b878201529680805b84821061053357898961052f8a61052060218c83518761050882995180928a8086019101611fdc565b8101605d60f81b888201520390810187520185611f13565b51928284938452830190611fff565b0390f35b909192939498610543838b61251e565b5160f81c838552600892838b528986208287528b526105648a872054611e8d565b1580156106a3575b6106945791603c918b8b61064095610655575b505085875260058c5261059b6105968c8920611f36565b6127ad565b948688528c528a87209087528b528a6105b86105968c8920611f36565b8b5195836105cf8895518092868089019101611fdc565b84016e3d913a3930b4ba2fba3cb832911d1160891b848201528151906105fd82602f94878685019101611fdc565b01906a1116113b30b63ab2911d1160a91b9082015261062682518093603a958685019101611fdc565b019061227d60f01b9082015203601c810184520182611f13565b9761064b86926122f0565b90949392916104df565b600b60fa1b929361068c926021925194826106798794518092858088019101611fdc565b830191820152038c810184520182611f13565b908b8b61057f565b93905061064b919a92506122f0565b5084865260078b528986208287528b52868a872001541561056c565b8380fd5b5050346101e357816003193601126101e3576020906006549051908152f35b5050346101e357816003193601126101e3576020906106ff6125db565b9051908152f35b905034610430576080366003190112610430576001600160401b039080359060249081358481116109625761073e9036908301611e58565b93909460443581811161095e576107589036908501611e58565b92909160643590811161095a576107729036908601611e58565b919061077c6120b0565b60ff996002549a6107938160209d8e1c1615612108565b6107a06006548510612350565b868a1480610951575b918d916107b68c946122b0565b825b8d85821061090657505050868d6060938a81965b87106108995750505050506107e2915083612ae8565b909491508b810180911161088757988c995b818b106107ff578d80f35b80610846898f938f8f61083f8d610835838f95818f968f908f906108269161082d95612340565b35976122ff565b9890936122ff565b96905036916123e8565b908b612960565b6108518c8a8a6122ff565b905082018092116108755761086f9161086991612221565b9a6122f0565b996107f4565b634e487b7160e01b8f5260118a528a8ffd5b634e487b7160e01b8d5260118852888dfd5b9184956108fa95926108bc89866108b4826108f4998b6122ff565b9990506122ff565b909681865198856108d68b975180928a808b019101611fdc565b86019287840152878301370190848201520390810184520182611f13565b926122f0565b9190868d8f8a8e6107cc565b8294509161091d8261094795976109259495612340565b35111561238c565b61094261093d610936838c8c6122ff565b36916123e8565b612cc3565b6122f0565b918d918b936107b8565b508685146107a9565b8980fd5b8880fd5b8680fd5b8383346101e357806003193601126101e357823561ffff938482168092036106bf57602435948516908186036103775761099e6120b0565b600254906109b260ff8360201c1615612108565b6109bd815415612146565b83151580610a71575b80610a65575b80610a59575b15610a2057508263ffff00007f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb2969760101b169163ffffffff1916171760025582519182526020820152a180f35b606490602086519162461bcd60e51b83528201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152fd5b506101008311156109d2565b506101008411156109cc565b508215156109c6565b8383346101e35760209081600319360112610430578335926002805490610aa660ff8360281c166125a0565b610ab8610ab16125db565b871061252f565b835160a081016001600160401b03811182821017610df657610c84985091610c0091610cb09594938752607b8152868882017f3c7376672077696474683d223132303022206865696768743d2231323030222081527f73686170652d72656e646572696e673d22637269737045646765732220786d6c828401527f6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222060608401527a03b32b939b4b7b71e9118971911103b34b2bba137bc1e911810181602d1b6080840152610c3f61ffff610b9b610b90828a1661264b565b918960101c1661264b565b908c610c12865195610bac87611ec7565b60318752828701977f223e3c7374796c653e726563747b73686170652d72656e646572696e673a637289527034b9b822b233b2b9be9e17b9ba3cb6329f60791b81890152519a8b99518092858c0190611fdc565b88019183519381859285019101611fdc565b01600160fd1b8d820152610c308d8351938491602185019101611fdc565b01915180936021840190611fdc565b010391610c56602160019485810184520182611f13565b97600654958691610ca6610c8d610c7c856104948954610c7681886121d9565b966121b9565b9d8e93612067565b95905493612221565b6001600160a01b039d6003958f9490871b1c841661368a565b9560301c1661365e565b93855b878110610cf9578a8a61052f8b6105206026825186610cdb8298518092898086019101611fdc565b8101651e17b9bb339f60d11b87820152036006810187520185611f13565b610d03818361251e565b5160f81c81885260078b528988209088528a52858c8b8b8a20918c51610d2881611ec7565b835481528d8c898b8d880154978786019889520154958385019680885215610de45789835252209051610d879594610d829490939092610d7c92610d6b91612098565b9054908b1b1c169251915182612221565b9161368a565b612fa0565b8051610d9d575b50610d98906122f0565b610cb3565b610ddd8b610d98939d8c519381610dbd8693518092868087019101611fdc565b8201610dd182518093868085019101611fdc565b01038084520182611f13565b9a90610d8e565b505050505050505050610d98906122f0565b634e487b7160e01b855260418952602485fd5b5050346101e357816003193601126101e35760209061ffff600254169051908152f35b8284346101e057602092836003193601126101e357803593610e56610e4f6125db565b861061252f565b60065491600195610e76846104948954610e7081866121d9565b946121b9565b918054821015610f3557508484610e92889461049f8b95612067565b94610e9c82612575565b91610ea986519384611f13565b808352610eb581612575565b8383019790601f1901368937845b828110610f00575050508451948186019282875251809352850195925b828110610eed5785870386f35b8351875295810195928101928401610ee0565b80610f15610f2992849b999b9896979861251e565b5160f81c610f23828961258c565b526122f0565b97959794939294610ec3565b865162461bcd60e51b8152908101849052601060248201526f125b9d985b1a590818da1d5b9ac8125160821b6044820152606490fd5b839150346101e357610f7c36612051565b92909160025492610f9260ff8560281c166125a0565b610f9f6006548210612350565b80835260209460078652868420908452855285832092865191610fc183611ec7565b845483526002600186015495888501968752015493888401948086521561104857506110389461052f969461100b611032958b8661102896610d7c985260038d5220905190612098565b949060018060a01b03958691549060031b1c169251915182612221565b9260301c1661365e565b90612fa0565b9251928284938452830190611fff565b885162461bcd60e51b8152908101889052600d60248201526c125b9d985b1a59081d1c985a5d609a1b6044820152606490fd5b8284346101e05760203660031901126101e057823592548310156101e057506110a5602092612067565b905491519160018060a01b039160031b1c168152f35b8383346101e3576020806003193601126104305783356001600160401b0381116106bf576110ec9036908601611e58565b91906110f66120b0565b60ff9161110983600254831c1615612108565b611116600654851461241f565b60609286945b8086106111a55788888861112f88612bb6565b825460001981019190821161119257907f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9916102c261116d83612067565b9054925193845260031b9190911c6001600160a01b0316602083015281906040820190565b634e487b7160e01b835260118452602483fd5b9091929361122c9061122660216111bd89868a612340565b35926111cb87851115612466565b898c52600388526111f08c8c808220549160078c528181208882528c522054106124aa565b8a51938161120786935180928c8087019101611fdc565b82019060ff60f81b9060f81b1689820152036001810184520182611f13565b956122f0565b949392919061111c565b5050346101e357816003193601126101e35760209061ffff60025460101c169051908152f35b9190503461043057602036600319011261043057600a5482359290336001600160a01b039182161490811561134d575b501561131a576002549060ff8260281c166112e45750600983905560ff60281b1916600160281b17600255519081527f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e90602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152fd5b6020606492519162461bcd60e51b8352820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152fd5b905084541633143861128c565b5050346101e357816003193601126101e357600a5490516001600160a01b039091168152602090f35b839150346101e35760209081600319360112610430578035906113a46120b0565b6113b560ff600254851c1615612108565b6113c0815415612146565b8115611479576006548015611446576113dc6160009184612190565b1161141157507f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc92938160015551908152a180f35b845162461bcd60e51b8152908101839052600f60248201526e4368756e6b20746f6f206c6172676560881b6044820152606490fd5b855162461bcd60e51b8152808301859052600d60248201526c139bc81b185e595c9cc81cd95d609a1b6044820152606490fd5b845162461bcd60e51b81529081018390526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606490fd5b5050346101e357816003193601126101e357905490516001600160a01b039091168152602090f35b5050346101e3576115088161052f936114f136612051565b908252600860205282822090825260205220611f36565b9051918291602083526020830190611fff565b8383346101e357602090816003193601126104305783356001600160401b0381116106bf5761154d9036908601612024565b946115566120b0565b60025461156860ff82871c1615612108565b611573825415612146565b61ffff808216151591826116fa575b5050156116c6576003861661168c576115a160ff8760021c11156121e3565b838601808711611679576160001061164257508461160283611607937f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c97988251948592818a85015284840137810189838201520386810184520182611f13565b61361e565b60028054600160301b600160d01b031916603092831b600160301b600160d01b03161790819055915191901c6001600160a01b03168152a180f35b825162461bcd60e51b8152908101849052601160248201527050616c6574746520746f6f206c6172676560781b6044820152606490fd5b634e487b7160e01b865260118252602486fd5b825162461bcd60e51b81529081018490526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606490fd5b825162461bcd60e51b8152908101849052600e60248201526d10d85b9d985cc81b9bdd081cd95d60921b6044820152606490fd5b60101c16151590508780611582565b5050346101e3578060609261171d36612051565b908252600760205282822090825260205220805491600260018301549201549181519384526020840152820152f35b83346101e057806003193601126101e0576117656120b0565b80546001600160a01b03198116825581906001600160a01b03166000805160206137268339815191528280a380f35b8383346101e35760803660031901126101e3576001600160401b0390833560243560443584811161189a576117cc9036908801612024565b94606435908111610962576118579392916117ed61185d9236908b01612024565b9590966117f86120b0565b61180a60ff60025460201c1615612108565b6118176006548710612350565b61182460ff86111561238c565b61183261093d368b866123e8565b8881519381602086015282850137828981018b83820152036020810184520182611f13565b83612ae8565b9591509360208601809611611887576118849798509061187e9136916123e8565b91612960565b80f35b634e487b7160e01b885260118952602488fd5b8580fd5b83346101e057806003193601126101e0576118b76120b0565b6002805460ff60201b1916600160201b1790557fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a018180a180f35b5050346101e357816003193601126101e3576002549051602091821c60ff1615158152f35b905034610430576020366003190112610430578161052f9361150892358152600560205220611f36565b9050346104305781600319360112610430576001600160401b03908035828111610377576119719036908301611e58565b602492918335858111611b525761198b9036908501611e58565b9390946119966120b0565b600254966119ab60ff6020998a1c1615612108565b6119b6835415612146565b6119c18686146122b0565b895b8581106119ce578a80f35b6119d981888a6122ff565b6119e4838989612340565b358d5260058b528b8d2091848211611b4057611a04826102688554611e8d565b8d90601f8311600114611adc578e919083611ad1575b50508160011b916000199060031b1c19161790555b8988888888611a3f868383612340565b3560069081541115611a95575b50611a7c86809694611a75611a90996000805160206137068339815191529896611a8896612340565b35946122ff565b90935193849384612282565b0390a16122f0565b6119c3565b9450611aa49350859250612340565b359060018201809211611abf57558988888888611a7c611a4c565b634e487b7160e01b8d5260118652848dfd5b013590503880611a1a565b838f528c8f209d9e9d91601f1984168f5b818110611b2957509e9f9e8411611b0f575b505050600190811b019055611a2f565b0135600019600384901b60f8161c19169055388080611aff565b91938f600181928787013581550195019201611aed565b634e487b7160e01b8e5260418752858efd5b8780fd5b5050346101e357816003193601126101e35760209060ff60025460281c1690519015158152f35b5050346101e357816003193601126101e357600254905160309190911c6001600160a01b03168152602090f35b5050346101e357816003193601126101e3576020906009549051908152f35b5050346101e357816003193601126101e3576020906001549051908152f35b9050346104305760203660031901126104305780356001600160a01b03811692908390036106bf57611c186120b0565b611c2a60ff60025460201c1615612108565b8215611c6b575050600a80546001600160a01b031916821790557f5f1e2705eaf36df554edf953ab3394949655f9623cfd95c94068723675a98c278280a280f35b906020606492519162461bcd60e51b8352820152600f60248201526e496e76616c6964206164647265737360881b6044820152fd5b8383346101e357602080600319360112610430576001600160401b0390843582811161037757611cd39036908701611e58565b9091611cdd6120b0565b60ff611cef81600254841c1615612108565b8215611e2757600654918215611df957611d11611d0c8486612190565b6124ec565b958895895b868110611d29578b8b8b61112f8c612bb6565b600581811b830135601e1984360301811215611df1578301803590858211611df55786829101921b36038213611df15790818b8e611d698f958c1461241f565b80945b8b8610611d8157505050505050600101611d16565b9c611ddf918b879f8c611dca918a611daa611da08c9d8c8a9d9e612340565b3595861115612466565b8552600382528085205491600781528186209085875252842054106124aa565b60f81b6001600160f81b031916901a9261251e565b5360018091019a0191908b8e8e611d6c565b8c80fd5b8d80fd5b8860649188519162461bcd60e51b835282015260096024820152684e6f206c617965727360b81b6044820152fd5b855162461bcd60e51b8152808901839052600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606490fd5b9181601f84011215611e88578235916001600160401b038311611e88576020808501948460051b010111611e8857565b600080fd5b90600182811c92168015611ebd575b6020831014611ea757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e9c565b606081019081106001600160401b03821117611ee257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ee257604052565b601f909101601f19168101906001600160401b03821190821017611ee257604052565b9060405191826000825492611f4a84611e8d565b908184526001948581169081600014611fb95750600114611f76575b5050611f7492500383611f13565b565b9093915060005260209081600020936000915b818310611fa1575050611f7493508201013880611f66565b85548884018501529485019487945091830191611f89565b915050611f7494506020925060ff191682840152151560051b8201013880611f66565b60005b838110611fef5750506000910152565b8181015183820152602001611fdf565b9060209161201881518092818552858086019101611fdc565b601f01601f1916010190565b9181601f84011215611e88578235916001600160401b038311611e885760208381860195010111611e8857565b6040906003190112611e88576004359060243590565b60045481101561208257600460005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156120825760005260206000200190600090565b6000546001600160a01b031633036120c457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561210f57565b60405162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd081cd9585b1959608a1b6044820152606490fd5b1561214d57565b60405162461bcd60e51b815260206004820152601b60248201527a10dbdb5c1bdcda5d195cc8185b1c9958591e481d5c1b1bd8591959602a1b6044820152606490fd5b818102929181159184041417156121a357565b634e487b7160e01b600052601160045260246000fd5b81156121c3570690565b634e487b7160e01b600052601260045260246000fd5b81156121c3570490565b156121ea57565b60405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e7920636f6c6f727360881b6044820152606490fd5b919082018092116121a357565b90601f811161223c57505050565b600091825260208220906020601f850160051c83019410612278575b601f0160051c01915b82811061226d57505050565b818155600101612261565b9092508290612258565b91926060938192845260406020850152816040850152848401376000828201840152601f01601f1916010190565b156122b757565b60405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606490fd5b60001981146121a35760010190565b91908110156120825760051b81013590601e1981360301821215611e885701803591906001600160401b038311611e88576020018236038113611e88579190565b91908110156120825760051b0190565b1561235757565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606490fd5b1561239357565b60405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606490fd5b6001600160401b038111611ee257601f01601f191660200190565b9291926123f4826123cd565b916124026040519384611f13565b829481845281830111611e88578281602093846000960137010152565b1561242657565b60405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606490fd5b1561246d57565b60405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606490fd5b156124b157565b60405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606490fd5b906124f6826123cd565b6125036040519182611f13565b8281528092612514601f19916123cd565b0190602036910137565b908151811015612082570160200190565b1561253657565b60405162461bcd60e51b8152602060048201526017602482015276092dcecc2d8d2c840c6dedae0dee6d2e8ca40d2dcc8caf604b1b6044820152606490fd5b6001600160401b038111611ee25760051b60200190565b80518210156120825760209160051b010190565b156125a757565b60405162461bcd60e51b815260206004820152600c60248201526b139bdd081c995d99585b195960a21b6044820152606490fd5b6006548015612645576000908190600454905b8183106125fb5750505090565b90919261263861263e916126328461262c61261589612067565b905460039190911b1c6001600160a01b031661365e565b516121d9565b90612221565b936122f0565b91906125ee565b50600090565b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101561279f575b506904ee2d6d415b85acef8160201b80831015612790575b50662386f26fc1000080831015612781575b506305f5e10080831015612772575b5061271080831015612763575b506064821015612753575b600a80921015612749575b600190816021818601956126de876123cd565b966126ec6040519889611f13565b8088526126fb601f19916123cd565b01366020890137860101905b612713575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561274457919082612707565b61270c565b91600101916126cb565b91906064600291049101916126c0565b600491939204910191386126b5565b600891939204910191386126a8565b60109193920491019138612699565b60209193920491019138612687565b60409350810491503861266f565b9081519160019280841b90808204600214901517156121a3576127cf906124ec565b9260009182825b61282a575b5050506127e7816124ec565b9060005b8181106127f9575090925050565b612825906001600160f81b0319612810828861251e565b511660001a61281f828661251e565b536122f0565b6127eb565b815181101561295b576001600160f81b0319612846828461251e565b5116601160f91b8103612882575061287c90605c61286d612866876122f0565b968961251e565b53602261281f612866876122f0565b826127d6565b601760fa1b81036128b7575061287c906128aa61289e866122f0565b95605c9182918a61251e565b5361281f612866876122f0565b600560f91b81036128e4575061287c90605c6128d5612866876122f0565b53606e61281f612866876122f0565b600d60f81b8103612911575061287c90605c612902612866876122f0565b53607261281f612866876122f0565b600960f81b810361293e575061287c90605c61292f612866876122f0565b53607461281f612866876122f0565b9361287c919061281f612950826122f0565b9660001a918961251e565b6127db565b92919594939060409081519561297587611ec7565b84875260209687810190858252848101928352600260009289845260078b528684208685528b528684209251835551936001948584015551910155868152600888528381208382528852838120918a519160018060401b038311612ad4576129e7836129e18654611e8d565b8661222e565b8990601f8411600114612a5c579280806000805160206137468339815191529d9e979460a09794612a419a9793612a51575b501b916000199060031b1c19161790555b8151988998895288015286015260a0850190611fff565b91606084015260808301520390a1565b890151925038612a19565b90601f9392931983168583528b8320925b818110612abf57509260a09592612a419895926000805160206137468339815191529e9f98958311612aa6575b5050811b019055612a2a565b88015160001960f88460031b161c191690553880612a9a565b8e830151845592850192918c01918c01612a6d565b634e487b7160e01b81526041600452602490fd5b9091616000835111612b805760009182526003602052612b0b604083209361361e565b928054600160401b811015612b6c57806001612b2a9201835582612098565b81546001600160a01b0387811660039390931b92831b921b1916179055546000198101908111612b58579190565b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526041600452602484fd5b60405162461bcd60e51b815260206004820152600e60248201526d4461746120746f6f206c6172676560901b6044820152606490fd5b805115612c4e57616000815111612c0d57612bd09061361e565b600454600160401b811015611ee257806001612bef9201600455612067565b819291549060031b9160018060a01b03809116831b921b1916179055565b60405162461bcd60e51b8152602060048201526019602482015278436f6d706f73697465206368756e6b20746f6f206c6172676560381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273456d70747920636f6d706f73697465206461746160601b6044820152606490fd5b602081519101519060208110612c9e575090565b6000199060200360031b1b1690565b91909161ffff808094169116019182116121a357565b90815115612f9c5760028054909290612ce8603082901c6001600160a01b031661365e565b906020918281511115612f6557612cfe90612c8a565b9360059485855106612f2c57909581811c9160031615159061ffff8481169160005b8851811015612f2057612d33818a61251e565b51600182018083116121a357612d49908b61251e565b519060f88484018085116121a357612d61908d61251e565b51811c600385018086116121a357612d79908e61251e565b51821c91600494858701808811612f0b57908f8a612da986612d9e8f94968a9761251e565b51871c99871c612cad565b1611159283612eed575b50505015612eb95715159081612eaf575b5015612e7f5786612e4557878110908115612e3a575b5015612e02575089810180911115612d2057634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b81529081018990526011602482015270084c2c840e0c2d8cae8e8ca40d2dcc8caf607b1b6044820152606490fd5b60ff91501438612dda565b60405162461bcd60e51b81528083018b9052601360248201527224b73b30b634b2103830b632ba3a32903632b760691b6044820152606490fd5b60405162461bcd60e51b81528083018b9052600960248201526816995c9bc81c9958dd60ba1b6044820152606490fd5b9050151538612dc4565b60405162461bcd60e51b81528085018d9052600d60248201526c4f7574206f6620626f756e647360981b6044820152606490fd5b612ef893501c612cad565b87808d60101c1691161115823880612db3565b601187634e487b7160e01b6000525260246000fd5b50505050505050505050565b60405162461bcd60e51b8152600481018590526011602482015270496e76616c69642072656374206461746160781b6044820152606490fd5b60405162461bcd60e51b815260048101849052600f60248201526e14185b195d1d19481b9bdd081cd95d608a1b6044820152606490fd5b9050565b919082511561350157612fb281612c8a565b906003938483166134ca57612fcd6101008460021c106121e3565b600190818460021c0195868560021c116121a357612fee8795949697612575565b94612ffc6040519687611f13565b80865261300b601f1991612575565b0160005b8181106134b75750509082916000925b6132ce575b5050600254606095600095909350915060301c6001600160a01b03165b8360021c851061305357505050505090565b9091929394613062868461258c565b5151156132c457858060021b04600414861517156121a3576130838261365e565b908660021b6020016020116121a3576130a28760021b6020018361251e565b5160218860021b01808960021b602001116121a3576130c1908461251e565b5190602293848a60021b018a60021b602001116121a3576130e890858b60021b019061251e565b51936130f2613528565b60ff60f81b918261310860fc9386851c9061251e565b511694613113613528565b936131838161312b600f978860f89a8b1c169061251e565b5116998261316e816131628b8b8361314e8d8c613146613528565b911c9061251e565b511699613159613528565b921c169061251e565b51169783613146613528565b511696613179613528565b91891c169061251e565b5116916040519860208a0197885260218a015288015260239182880152602492838801526025870152600686526131b986611ef8565b8a60021b0190818b60021b602001116132b057509261122692631e17b39f60e11b6131f66040946131ee6132a799988d61251e565b51901c613554565b6132008d8b61258c565b51928551978561321a8a975180926020808b019101611fdc565b860190693c672066696c6c3d222360b01b6020830152519061324282602a9485840190611fdc565b01906f11103334b63616b7b830b1b4ba3c9e9160811b9082015281519061327282603a9460208685019101611fdc565b019061111f60f11b9082015282519061329482603c9560208785019101611fdc565b0191820152036020810184520182611f13565b93929190613041565b634e487b7160e01b60009081526011600452fd5b946132a7906122f0565b8196949596518310156134ae576132e5838361251e565b518484018085116121a3576132fa908461251e565b519060f891600286018087116121a357613314908661251e565b51831c908487018088116121a35761332c908761251e565b51841c93600480890190818a1161349957509061334b8d93928961251e565b51811c9460ff861461348d576134769661339361338d6133876044966133806133778c6134659b61258c565b5196881c61264b565b961c61264b565b9761264b565b9161264b565b9060405196879484516133ae8160209788808b019101611fdc565b8601681e3932b1ba103c1e9160b91b868201528151906133d682602994898685019101611fdc565b01906411103c9e9160d91b908201528151906133fa82602e94888685019101611fdc565b01906811103bb4b23a341e9160b91b9082015281519061342282603794878685019101611fdc565b01906911103432b4b3b43a1e9160b11b9082015261344a825180936041958685019101611fdc565b01906211179f60e91b90820152036024810184520182611f13565b61346f828b61258c565b528861258c565b505b600583018093116121a357839695949661301f565b50505050505050613478565b601190634e487b7160e01b6000525260246000fd5b95949395613024565b606060208289018101919091520161300f565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070616c6574746560881b6044820152606490fd5b50604051909150602081016001600160401b03811182821017611ee2576040526000815290565b6040519061353582611ef8565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b60ff1660ff81146136005780156135e2576103e8808202918204036121a35760ff90046135df6022613596600a606461358e81870461264b565b95060461264b565b9260405193849161181760f11b60208401526135bb8151809260208787019101611fdc565b82016135d08251809360208785019101611fdc565b01036002810184520182611f13565b90565b506040516135ef81611ef8565b60018152600360fc1b602082015290565b5060405161360d81611ef8565b60018152603160f81b602082015290565b9081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f09283156136505752565b63301164256000526004601cfd5b90604080518093600019813b0164ffffffffff169060006021830191601f8501903c8082520101604052565b60409193929382519461ffff808210156136fd575b5080821082820302926001840183601f8901833c8387015160ff16156136d5575b50505080845283016000602082015201604052565b90600193913b60001981019485918260281c3d3d3e83030191110290039111023880806136c0565b90503861369f56fe8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa118be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03dea26469706673582212204b72078f48e060b984fe654517256b2d028ba88551fd15a51f961dcd917ff8af64736f6c63430008140033
0x6040608081526004908136101561001557600080fd5b600091823560e01c908163094441d114611ca057816328c855d414611be85781632fa2acf814611bc957816332c2f7f814611baa57816340ce89c214611b7d57816354214f6914611b56578163561d62251461194057816362415a1914611916578163631f9852146118f157816368bd580e1461189e5781636b3fc69514611794578163715018a61461174c57816379d3cd0014611709578163844e2cd51461151b578163865dfcd9146114d95781638da5cb5b146114b15781638f6594871461138357816393119e0a1461135a57816399b0eb621461125c5781639c71a38014611236578163a318a326146110bb578163aff31edc1461107b578163b45f31bf14610f6b578163bf2d7b3214610e2c578163c06bb20514610e09578163d56fd88f14610a7a578163de9aa59414610966578163efca8f0814610706578163f132914b146106e2578163f253bef3146106c3578163f2824b5314610434578163f2fde38b1461037b578163f69d3fad146101e7575063f8d4be6d1461019957600080fd5b346101e3576101a736612051565b9290815260036020528181209081548410156101e057506020926101ca91612098565b60018060a01b0391549060031b1c169051908152f35b80fd5b5080fd5b839150346101e357826003193601126101e3576001600160401b03908035906024358381116103775761021d9036908301612024565b9190936102286120b0565b60025461023c60ff602092831c1615612108565b610247835415612146565b8487526005815287872091841161036457839061026e826102688554611e8d565b8561222e565b8790601f83116001146102ff575087916102f4575b508360011b906000198560031b1c19161790555b6006548310156102c8575b506102c29060008051602061370683398151915294955193849384612282565b0390a180f35b94600183018084116102e15760065594506102c26102a2565b634e487b7160e01b865260118752602486fd5b905085013588610283565b91601f198116848a52838a20938a905b8282106103475750501061032d575b5050600183811b019055610297565b860135600019600386901b60f8161c19169055878061031e565b80929350600185968293968d01358155019501930187929161030f565b634e487b7160e01b875260418352602487fd5b8480fd5b91905034610430576020366003190112610430576001600160a01b03823581811693919290849003610377576103af6120b0565b83156103de57505082546001600160a01b0319811683178455166000805160206137268339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b9190503461043057602091826003193601126106bf5735600261045d60ff825460281c166125a0565b61046f6104686125db565b831061252f565b6006546104c360019361049f61049984610494885461048e81876121d9565b956121b9565b612190565b91612067565b919054916104ad8583612221565b9260039190911b1c6001600160a01b031661368a565b9184516104cf81611ef8565b848152605b60f81b878201529680805b84821061053357898961052f8a61052060218c83518761050882995180928a8086019101611fdc565b8101605d60f81b888201520390810187520185611f13565b51928284938452830190611fff565b0390f35b909192939498610543838b61251e565b5160f81c838552600892838b528986208287528b526105648a872054611e8d565b1580156106a3575b6106945791603c918b8b61064095610655575b505085875260058c5261059b6105968c8920611f36565b6127ad565b948688528c528a87209087528b528a6105b86105968c8920611f36565b8b5195836105cf8895518092868089019101611fdc565b84016e3d913a3930b4ba2fba3cb832911d1160891b848201528151906105fd82602f94878685019101611fdc565b01906a1116113b30b63ab2911d1160a91b9082015261062682518093603a958685019101611fdc565b019061227d60f01b9082015203601c810184520182611f13565b9761064b86926122f0565b90949392916104df565b600b60fa1b929361068c926021925194826106798794518092858088019101611fdc565b830191820152038c810184520182611f13565b908b8b61057f565b93905061064b919a92506122f0565b5084865260078b528986208287528b52868a872001541561056c565b8380fd5b5050346101e357816003193601126101e3576020906006549051908152f35b5050346101e357816003193601126101e3576020906106ff6125db565b9051908152f35b905034610430576080366003190112610430576001600160401b039080359060249081358481116109625761073e9036908301611e58565b93909460443581811161095e576107589036908501611e58565b92909160643590811161095a576107729036908601611e58565b919061077c6120b0565b60ff996002549a6107938160209d8e1c1615612108565b6107a06006548510612350565b868a1480610951575b918d916107b68c946122b0565b825b8d85821061090657505050868d6060938a81965b87106108995750505050506107e2915083612ae8565b909491508b810180911161088757988c995b818b106107ff578d80f35b80610846898f938f8f61083f8d610835838f95818f968f908f906108269161082d95612340565b35976122ff565b9890936122ff565b96905036916123e8565b908b612960565b6108518c8a8a6122ff565b905082018092116108755761086f9161086991612221565b9a6122f0565b996107f4565b634e487b7160e01b8f5260118a528a8ffd5b634e487b7160e01b8d5260118852888dfd5b9184956108fa95926108bc89866108b4826108f4998b6122ff565b9990506122ff565b909681865198856108d68b975180928a808b019101611fdc565b86019287840152878301370190848201520390810184520182611f13565b926122f0565b9190868d8f8a8e6107cc565b8294509161091d8261094795976109259495612340565b35111561238c565b61094261093d610936838c8c6122ff565b36916123e8565b612cc3565b6122f0565b918d918b936107b8565b508685146107a9565b8980fd5b8880fd5b8680fd5b8383346101e357806003193601126101e357823561ffff938482168092036106bf57602435948516908186036103775761099e6120b0565b600254906109b260ff8360201c1615612108565b6109bd815415612146565b83151580610a71575b80610a65575b80610a59575b15610a2057508263ffff00007f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb2969760101b169163ffffffff1916171760025582519182526020820152a180f35b606490602086519162461bcd60e51b83528201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152fd5b506101008311156109d2565b506101008411156109cc565b508215156109c6565b8383346101e35760209081600319360112610430578335926002805490610aa660ff8360281c166125a0565b610ab8610ab16125db565b871061252f565b835160a081016001600160401b03811182821017610df657610c84985091610c0091610cb09594938752607b8152868882017f3c7376672077696474683d223132303022206865696768743d2231323030222081527f73686170652d72656e646572696e673d22637269737045646765732220786d6c828401527f6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222060608401527a03b32b939b4b7b71e9118971911103b34b2bba137bc1e911810181602d1b6080840152610c3f61ffff610b9b610b90828a1661264b565b918960101c1661264b565b908c610c12865195610bac87611ec7565b60318752828701977f223e3c7374796c653e726563747b73686170652d72656e646572696e673a637289527034b9b822b233b2b9be9e17b9ba3cb6329f60791b81890152519a8b99518092858c0190611fdc565b88019183519381859285019101611fdc565b01600160fd1b8d820152610c308d8351938491602185019101611fdc565b01915180936021840190611fdc565b010391610c56602160019485810184520182611f13565b97600654958691610ca6610c8d610c7c856104948954610c7681886121d9565b966121b9565b9d8e93612067565b95905493612221565b6001600160a01b039d6003958f9490871b1c841661368a565b9560301c1661365e565b93855b878110610cf9578a8a61052f8b6105206026825186610cdb8298518092898086019101611fdc565b8101651e17b9bb339f60d11b87820152036006810187520185611f13565b610d03818361251e565b5160f81c81885260078b528988209088528a52858c8b8b8a20918c51610d2881611ec7565b835481528d8c898b8d880154978786019889520154958385019680885215610de45789835252209051610d879594610d829490939092610d7c92610d6b91612098565b9054908b1b1c169251915182612221565b9161368a565b612fa0565b8051610d9d575b50610d98906122f0565b610cb3565b610ddd8b610d98939d8c519381610dbd8693518092868087019101611fdc565b8201610dd182518093868085019101611fdc565b01038084520182611f13565b9a90610d8e565b505050505050505050610d98906122f0565b634e487b7160e01b855260418952602485fd5b5050346101e357816003193601126101e35760209061ffff600254169051908152f35b8284346101e057602092836003193601126101e357803593610e56610e4f6125db565b861061252f565b60065491600195610e76846104948954610e7081866121d9565b946121b9565b918054821015610f3557508484610e92889461049f8b95612067565b94610e9c82612575565b91610ea986519384611f13565b808352610eb581612575565b8383019790601f1901368937845b828110610f00575050508451948186019282875251809352850195925b828110610eed5785870386f35b8351875295810195928101928401610ee0565b80610f15610f2992849b999b9896979861251e565b5160f81c610f23828961258c565b526122f0565b97959794939294610ec3565b865162461bcd60e51b8152908101849052601060248201526f125b9d985b1a590818da1d5b9ac8125160821b6044820152606490fd5b839150346101e357610f7c36612051565b92909160025492610f9260ff8560281c166125a0565b610f9f6006548210612350565b80835260209460078652868420908452855285832092865191610fc183611ec7565b845483526002600186015495888501968752015493888401948086521561104857506110389461052f969461100b611032958b8661102896610d7c985260038d5220905190612098565b949060018060a01b03958691549060031b1c169251915182612221565b9260301c1661365e565b90612fa0565b9251928284938452830190611fff565b885162461bcd60e51b8152908101889052600d60248201526c125b9d985b1a59081d1c985a5d609a1b6044820152606490fd5b8284346101e05760203660031901126101e057823592548310156101e057506110a5602092612067565b905491519160018060a01b039160031b1c168152f35b8383346101e3576020806003193601126104305783356001600160401b0381116106bf576110ec9036908601611e58565b91906110f66120b0565b60ff9161110983600254831c1615612108565b611116600654851461241f565b60609286945b8086106111a55788888861112f88612bb6565b825460001981019190821161119257907f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9916102c261116d83612067565b9054925193845260031b9190911c6001600160a01b0316602083015281906040820190565b634e487b7160e01b835260118452602483fd5b9091929361122c9061122660216111bd89868a612340565b35926111cb87851115612466565b898c52600388526111f08c8c808220549160078c528181208882528c522054106124aa565b8a51938161120786935180928c8087019101611fdc565b82019060ff60f81b9060f81b1689820152036001810184520182611f13565b956122f0565b949392919061111c565b5050346101e357816003193601126101e35760209061ffff60025460101c169051908152f35b9190503461043057602036600319011261043057600a5482359290336001600160a01b039182161490811561134d575b501561131a576002549060ff8260281c166112e45750600983905560ff60281b1916600160281b17600255519081527f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e90602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152fd5b6020606492519162461bcd60e51b8352820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152fd5b905084541633143861128c565b5050346101e357816003193601126101e357600a5490516001600160a01b039091168152602090f35b839150346101e35760209081600319360112610430578035906113a46120b0565b6113b560ff600254851c1615612108565b6113c0815415612146565b8115611479576006548015611446576113dc6160009184612190565b1161141157507f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc92938160015551908152a180f35b845162461bcd60e51b8152908101839052600f60248201526e4368756e6b20746f6f206c6172676560881b6044820152606490fd5b855162461bcd60e51b8152808301859052600d60248201526c139bc81b185e595c9cc81cd95d609a1b6044820152606490fd5b845162461bcd60e51b81529081018390526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606490fd5b5050346101e357816003193601126101e357905490516001600160a01b039091168152602090f35b5050346101e3576115088161052f936114f136612051565b908252600860205282822090825260205220611f36565b9051918291602083526020830190611fff565b8383346101e357602090816003193601126104305783356001600160401b0381116106bf5761154d9036908601612024565b946115566120b0565b60025461156860ff82871c1615612108565b611573825415612146565b61ffff808216151591826116fa575b5050156116c6576003861661168c576115a160ff8760021c11156121e3565b838601808711611679576160001061164257508461160283611607937f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c97988251948592818a85015284840137810189838201520386810184520182611f13565b61361e565b60028054600160301b600160d01b031916603092831b600160301b600160d01b03161790819055915191901c6001600160a01b03168152a180f35b825162461bcd60e51b8152908101849052601160248201527050616c6574746520746f6f206c6172676560781b6044820152606490fd5b634e487b7160e01b865260118252602486fd5b825162461bcd60e51b81529081018490526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606490fd5b825162461bcd60e51b8152908101849052600e60248201526d10d85b9d985cc81b9bdd081cd95d60921b6044820152606490fd5b60101c16151590508780611582565b5050346101e3578060609261171d36612051565b908252600760205282822090825260205220805491600260018301549201549181519384526020840152820152f35b83346101e057806003193601126101e0576117656120b0565b80546001600160a01b03198116825581906001600160a01b03166000805160206137268339815191528280a380f35b8383346101e35760803660031901126101e3576001600160401b0390833560243560443584811161189a576117cc9036908801612024565b94606435908111610962576118579392916117ed61185d9236908b01612024565b9590966117f86120b0565b61180a60ff60025460201c1615612108565b6118176006548710612350565b61182460ff86111561238c565b61183261093d368b866123e8565b8881519381602086015282850137828981018b83820152036020810184520182611f13565b83612ae8565b9591509360208601809611611887576118849798509061187e9136916123e8565b91612960565b80f35b634e487b7160e01b885260118952602488fd5b8580fd5b83346101e057806003193601126101e0576118b76120b0565b6002805460ff60201b1916600160201b1790557fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a018180a180f35b5050346101e357816003193601126101e3576002549051602091821c60ff1615158152f35b905034610430576020366003190112610430578161052f9361150892358152600560205220611f36565b9050346104305781600319360112610430576001600160401b03908035828111610377576119719036908301611e58565b602492918335858111611b525761198b9036908501611e58565b9390946119966120b0565b600254966119ab60ff6020998a1c1615612108565b6119b6835415612146565b6119c18686146122b0565b895b8581106119ce578a80f35b6119d981888a6122ff565b6119e4838989612340565b358d5260058b528b8d2091848211611b4057611a04826102688554611e8d565b8d90601f8311600114611adc578e919083611ad1575b50508160011b916000199060031b1c19161790555b8988888888611a3f868383612340565b3560069081541115611a95575b50611a7c86809694611a75611a90996000805160206137068339815191529896611a8896612340565b35946122ff565b90935193849384612282565b0390a16122f0565b6119c3565b9450611aa49350859250612340565b359060018201809211611abf57558988888888611a7c611a4c565b634e487b7160e01b8d5260118652848dfd5b013590503880611a1a565b838f528c8f209d9e9d91601f1984168f5b818110611b2957509e9f9e8411611b0f575b505050600190811b019055611a2f565b0135600019600384901b60f8161c19169055388080611aff565b91938f600181928787013581550195019201611aed565b634e487b7160e01b8e5260418752858efd5b8780fd5b5050346101e357816003193601126101e35760209060ff60025460281c1690519015158152f35b5050346101e357816003193601126101e357600254905160309190911c6001600160a01b03168152602090f35b5050346101e357816003193601126101e3576020906009549051908152f35b5050346101e357816003193601126101e3576020906001549051908152f35b9050346104305760203660031901126104305780356001600160a01b03811692908390036106bf57611c186120b0565b611c2a60ff60025460201c1615612108565b8215611c6b575050600a80546001600160a01b031916821790557f5f1e2705eaf36df554edf953ab3394949655f9623cfd95c94068723675a98c278280a280f35b906020606492519162461bcd60e51b8352820152600f60248201526e496e76616c6964206164647265737360881b6044820152fd5b8383346101e357602080600319360112610430576001600160401b0390843582811161037757611cd39036908701611e58565b9091611cdd6120b0565b60ff611cef81600254841c1615612108565b8215611e2757600654918215611df957611d11611d0c8486612190565b6124ec565b958895895b868110611d29578b8b8b61112f8c612bb6565b600581811b830135601e1984360301811215611df1578301803590858211611df55786829101921b36038213611df15790818b8e611d698f958c1461241f565b80945b8b8610611d8157505050505050600101611d16565b9c611ddf918b879f8c611dca918a611daa611da08c9d8c8a9d9e612340565b3595861115612466565b8552600382528085205491600781528186209085875252842054106124aa565b60f81b6001600160f81b031916901a9261251e565b5360018091019a0191908b8e8e611d6c565b8c80fd5b8d80fd5b8860649188519162461bcd60e51b835282015260096024820152684e6f206c617965727360b81b6044820152fd5b855162461bcd60e51b8152808901839052600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606490fd5b9181601f84011215611e88578235916001600160401b038311611e88576020808501948460051b010111611e8857565b600080fd5b90600182811c92168015611ebd575b6020831014611ea757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e9c565b606081019081106001600160401b03821117611ee257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ee257604052565b601f909101601f19168101906001600160401b03821190821017611ee257604052565b9060405191826000825492611f4a84611e8d565b908184526001948581169081600014611fb95750600114611f76575b5050611f7492500383611f13565b565b9093915060005260209081600020936000915b818310611fa1575050611f7493508201013880611f66565b85548884018501529485019487945091830191611f89565b915050611f7494506020925060ff191682840152151560051b8201013880611f66565b60005b838110611fef5750506000910152565b8181015183820152602001611fdf565b9060209161201881518092818552858086019101611fdc565b601f01601f1916010190565b9181601f84011215611e88578235916001600160401b038311611e885760208381860195010111611e8857565b6040906003190112611e88576004359060243590565b60045481101561208257600460005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156120825760005260206000200190600090565b6000546001600160a01b031633036120c457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561210f57565b60405162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd081cd9585b1959608a1b6044820152606490fd5b1561214d57565b60405162461bcd60e51b815260206004820152601b60248201527a10dbdb5c1bdcda5d195cc8185b1c9958591e481d5c1b1bd8591959602a1b6044820152606490fd5b818102929181159184041417156121a357565b634e487b7160e01b600052601160045260246000fd5b81156121c3570690565b634e487b7160e01b600052601260045260246000fd5b81156121c3570490565b156121ea57565b60405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e7920636f6c6f727360881b6044820152606490fd5b919082018092116121a357565b90601f811161223c57505050565b600091825260208220906020601f850160051c83019410612278575b601f0160051c01915b82811061226d57505050565b818155600101612261565b9092508290612258565b91926060938192845260406020850152816040850152848401376000828201840152601f01601f1916010190565b156122b757565b60405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606490fd5b60001981146121a35760010190565b91908110156120825760051b81013590601e1981360301821215611e885701803591906001600160401b038311611e88576020018236038113611e88579190565b91908110156120825760051b0190565b1561235757565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606490fd5b1561239357565b60405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606490fd5b6001600160401b038111611ee257601f01601f191660200190565b9291926123f4826123cd565b916124026040519384611f13565b829481845281830111611e88578281602093846000960137010152565b1561242657565b60405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606490fd5b1561246d57565b60405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606490fd5b156124b157565b60405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606490fd5b906124f6826123cd565b6125036040519182611f13565b8281528092612514601f19916123cd565b0190602036910137565b908151811015612082570160200190565b1561253657565b60405162461bcd60e51b8152602060048201526017602482015276092dcecc2d8d2c840c6dedae0dee6d2e8ca40d2dcc8caf604b1b6044820152606490fd5b6001600160401b038111611ee25760051b60200190565b80518210156120825760209160051b010190565b156125a757565b60405162461bcd60e51b815260206004820152600c60248201526b139bdd081c995d99585b195960a21b6044820152606490fd5b6006548015612645576000908190600454905b8183106125fb5750505090565b90919261263861263e916126328461262c61261589612067565b905460039190911b1c6001600160a01b031661365e565b516121d9565b90612221565b936122f0565b91906125ee565b50600090565b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101561279f575b506904ee2d6d415b85acef8160201b80831015612790575b50662386f26fc1000080831015612781575b506305f5e10080831015612772575b5061271080831015612763575b506064821015612753575b600a80921015612749575b600190816021818601956126de876123cd565b966126ec6040519889611f13565b8088526126fb601f19916123cd565b01366020890137860101905b612713575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561274457919082612707565b61270c565b91600101916126cb565b91906064600291049101916126c0565b600491939204910191386126b5565b600891939204910191386126a8565b60109193920491019138612699565b60209193920491019138612687565b60409350810491503861266f565b9081519160019280841b90808204600214901517156121a3576127cf906124ec565b9260009182825b61282a575b5050506127e7816124ec565b9060005b8181106127f9575090925050565b612825906001600160f81b0319612810828861251e565b511660001a61281f828661251e565b536122f0565b6127eb565b815181101561295b576001600160f81b0319612846828461251e565b5116601160f91b8103612882575061287c90605c61286d612866876122f0565b968961251e565b53602261281f612866876122f0565b826127d6565b601760fa1b81036128b7575061287c906128aa61289e866122f0565b95605c9182918a61251e565b5361281f612866876122f0565b600560f91b81036128e4575061287c90605c6128d5612866876122f0565b53606e61281f612866876122f0565b600d60f81b8103612911575061287c90605c612902612866876122f0565b53607261281f612866876122f0565b600960f81b810361293e575061287c90605c61292f612866876122f0565b53607461281f612866876122f0565b9361287c919061281f612950826122f0565b9660001a918961251e565b6127db565b92919594939060409081519561297587611ec7565b84875260209687810190858252848101928352600260009289845260078b528684208685528b528684209251835551936001948584015551910155868152600888528381208382528852838120918a519160018060401b038311612ad4576129e7836129e18654611e8d565b8661222e565b8990601f8411600114612a5c579280806000805160206137468339815191529d9e979460a09794612a419a9793612a51575b501b916000199060031b1c19161790555b8151988998895288015286015260a0850190611fff565b91606084015260808301520390a1565b890151925038612a19565b90601f9392931983168583528b8320925b818110612abf57509260a09592612a419895926000805160206137468339815191529e9f98958311612aa6575b5050811b019055612a2a565b88015160001960f88460031b161c191690553880612a9a565b8e830151845592850192918c01918c01612a6d565b634e487b7160e01b81526041600452602490fd5b9091616000835111612b805760009182526003602052612b0b604083209361361e565b928054600160401b811015612b6c57806001612b2a9201835582612098565b81546001600160a01b0387811660039390931b92831b921b1916179055546000198101908111612b58579190565b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526041600452602484fd5b60405162461bcd60e51b815260206004820152600e60248201526d4461746120746f6f206c6172676560901b6044820152606490fd5b805115612c4e57616000815111612c0d57612bd09061361e565b600454600160401b811015611ee257806001612bef9201600455612067565b819291549060031b9160018060a01b03809116831b921b1916179055565b60405162461bcd60e51b8152602060048201526019602482015278436f6d706f73697465206368756e6b20746f6f206c6172676560381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273456d70747920636f6d706f73697465206461746160601b6044820152606490fd5b602081519101519060208110612c9e575090565b6000199060200360031b1b1690565b91909161ffff808094169116019182116121a357565b90815115612f9c5760028054909290612ce8603082901c6001600160a01b031661365e565b906020918281511115612f6557612cfe90612c8a565b9360059485855106612f2c57909581811c9160031615159061ffff8481169160005b8851811015612f2057612d33818a61251e565b51600182018083116121a357612d49908b61251e565b519060f88484018085116121a357612d61908d61251e565b51811c600385018086116121a357612d79908e61251e565b51821c91600494858701808811612f0b57908f8a612da986612d9e8f94968a9761251e565b51871c99871c612cad565b1611159283612eed575b50505015612eb95715159081612eaf575b5015612e7f5786612e4557878110908115612e3a575b5015612e02575089810180911115612d2057634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b81529081018990526011602482015270084c2c840e0c2d8cae8e8ca40d2dcc8caf607b1b6044820152606490fd5b60ff91501438612dda565b60405162461bcd60e51b81528083018b9052601360248201527224b73b30b634b2103830b632ba3a32903632b760691b6044820152606490fd5b60405162461bcd60e51b81528083018b9052600960248201526816995c9bc81c9958dd60ba1b6044820152606490fd5b9050151538612dc4565b60405162461bcd60e51b81528085018d9052600d60248201526c4f7574206f6620626f756e647360981b6044820152606490fd5b612ef893501c612cad565b87808d60101c1691161115823880612db3565b601187634e487b7160e01b6000525260246000fd5b50505050505050505050565b60405162461bcd60e51b8152600481018590526011602482015270496e76616c69642072656374206461746160781b6044820152606490fd5b60405162461bcd60e51b815260048101849052600f60248201526e14185b195d1d19481b9bdd081cd95d608a1b6044820152606490fd5b9050565b919082511561350157612fb281612c8a565b906003938483166134ca57612fcd6101008460021c106121e3565b600190818460021c0195868560021c116121a357612fee8795949697612575565b94612ffc6040519687611f13565b80865261300b601f1991612575565b0160005b8181106134b75750509082916000925b6132ce575b5050600254606095600095909350915060301c6001600160a01b03165b8360021c851061305357505050505090565b9091929394613062868461258c565b5151156132c457858060021b04600414861517156121a3576130838261365e565b908660021b6020016020116121a3576130a28760021b6020018361251e565b5160218860021b01808960021b602001116121a3576130c1908461251e565b5190602293848a60021b018a60021b602001116121a3576130e890858b60021b019061251e565b51936130f2613528565b60ff60f81b918261310860fc9386851c9061251e565b511694613113613528565b936131838161312b600f978860f89a8b1c169061251e565b5116998261316e816131628b8b8361314e8d8c613146613528565b911c9061251e565b511699613159613528565b921c169061251e565b51169783613146613528565b511696613179613528565b91891c169061251e565b5116916040519860208a0197885260218a015288015260239182880152602492838801526025870152600686526131b986611ef8565b8a60021b0190818b60021b602001116132b057509261122692631e17b39f60e11b6131f66040946131ee6132a799988d61251e565b51901c613554565b6132008d8b61258c565b51928551978561321a8a975180926020808b019101611fdc565b860190693c672066696c6c3d222360b01b6020830152519061324282602a9485840190611fdc565b01906f11103334b63616b7b830b1b4ba3c9e9160811b9082015281519061327282603a9460208685019101611fdc565b019061111f60f11b9082015282519061329482603c9560208785019101611fdc565b0191820152036020810184520182611f13565b93929190613041565b634e487b7160e01b60009081526011600452fd5b946132a7906122f0565b8196949596518310156134ae576132e5838361251e565b518484018085116121a3576132fa908461251e565b519060f891600286018087116121a357613314908661251e565b51831c908487018088116121a35761332c908761251e565b51841c93600480890190818a1161349957509061334b8d93928961251e565b51811c9460ff861461348d576134769661339361338d6133876044966133806133778c6134659b61258c565b5196881c61264b565b961c61264b565b9761264b565b9161264b565b9060405196879484516133ae8160209788808b019101611fdc565b8601681e3932b1ba103c1e9160b91b868201528151906133d682602994898685019101611fdc565b01906411103c9e9160d91b908201528151906133fa82602e94888685019101611fdc565b01906811103bb4b23a341e9160b91b9082015281519061342282603794878685019101611fdc565b01906911103432b4b3b43a1e9160b11b9082015261344a825180936041958685019101611fdc565b01906211179f60e91b90820152036024810184520182611f13565b61346f828b61258c565b528861258c565b505b600583018093116121a357839695949661301f565b50505050505050613478565b601190634e487b7160e01b6000525260246000fd5b95949395613024565b606060208289018101919091520161300f565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070616c6574746560881b6044820152606490fd5b50604051909150602081016001600160401b03811182821017611ee2576040526000815290565b6040519061353582611ef8565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b60ff1660ff81146136005780156135e2576103e8808202918204036121a35760ff90046135df6022613596600a606461358e81870461264b565b95060461264b565b9260405193849161181760f11b60208401526135bb8151809260208787019101611fdc565b82016135d08251809360208785019101611fdc565b01036002810184520182611f13565b90565b506040516135ef81611ef8565b60018152600360fc1b602082015290565b5060405161360d81611ef8565b60018152603160f81b602082015290565b9081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f09283156136505752565b63301164256000526004601cfd5b90604080518093600019813b0164ffffffffff169060006021830191601f8501903c8082520101604052565b60409193929382519461ffff808210156136fd575b5080821082820302926001840183601f8901833c8387015160ff16156136d5575b50505080845283016000602082015201604052565b90600193913b60001981019485918260281c3d3d3e83030191110290039111023880806136c0565b90503861369f56fe8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa118be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03dea26469706673582212204b72078f48e060b984fe654517256b2d028ba88551fd15a51f961dcd917ff8af64736f6c63430008140033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x249245ce…c5c136 | Transfer | 18,471,755 | 23 days agoFri, 24 Jul 2026 21:27:43 UTC | 0xcaf7…5d11 | IN | 0xcce1…a816 | $0.001 DIH |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb645c6…fa93a9 | 38 days agoFri, 10 Jul 2026 10:35:47 UTC | 0x5f1e27…8c27 | [0] 0x000000000000…6513e3d6 |
| 0x5fb6aa…0f18f4 | 38 days agoFri, 10 Jul 2026 10:35:09 UTC | 0x82ed0d…f6a9 | data: 0x000000000000000000…ce30d18e |
| 0xdbee4b…1e38b6 | 38 days agoFri, 10 Jul 2026 10:34:59 UTC | 0x82ed0d…f6a9 | data: 0x000000000000000000…36416a83 |
| 0x155809…a67f20 | 38 days agoFri, 10 Jul 2026 10:34:48 UTC | 0x7d8bdf…8ccc | data: 0x000000000000000000…0000012c |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x928e5c…6a661d | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| 0x243a7b…7eafe5 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xa10f93…03de | data: 0x000000000000000000…00000000 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 6,011,747 | 38 days agoFri, 10 Jul 2026 10:35:09 UTC | 0x5fb6aa…0f18f4 | CREATE | addCompositesBatch | 0xcce1…a816 | OUT | 0xfb22…d18e | 0 ETH |
| 6,011,642 | 38 days agoFri, 10 Jul 2026 10:34:59 UTC | 0xdbee4b…1e38b6 | CREATE | addCompositesBatch | 0xcce1…a816 | OUT | 0xb31c…6a83 | 0 ETH |
| 6,011,375 | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0x928e5c…6a661d | CREATE | addTraitsBatch | 0xcce1…a816 | OUT | 0x2499…ab63 | 0 ETH |
| 6,011,277 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0x243a7b…7eafe5 | CREATE | addTraitsBatch | 0xcce1…a816 | OUT | 0x765b…84b9 | 0 ETH |
| 6,011,181 | 38 days agoFri, 10 Jul 2026 10:34:13 UTC | 0xe88ee0…b9615b | CREATE | addTraitsBatch | 0xcce1…a816 | OUT | 0x4646…c989 | 0 ETH |
| 6,011,064 | 38 days agoFri, 10 Jul 2026 10:34:01 UTC | 0xd17494…0c6fe6 | CREATE | addTraitsBatch | 0xcce1…a816 | OUT | 0xb524…828e | 0 ETH |
| 6,010,849 | 38 days agoFri, 10 Jul 2026 10:33:39 UTC | 0x7ff195…027d3f | CREATE | setPalette | 0xcce1…a816 | OUT | 0x933a…b60e | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb645c6…fa93a9 | setMintbayGenerativeContract | 6,012,116 | 38 days agoFri, 10 Jul 2026 10:35:47 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00000360 | |
| 0x5fb6aa…0f18f4 | addCompositesBatch | 6,011,747 | 38 days agoFri, 10 Jul 2026 10:35:09 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00008999 | |
| 0xdbee4b…1e38b6 | addCompositesBatch | 6,011,642 | 38 days agoFri, 10 Jul 2026 10:34:59 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00012219 | |
| 0x155809…a67f20 | setCompositesPerChunk | 6,011,535 | 38 days agoFri, 10 Jul 2026 10:34:48 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00000264 | |
| 0x928e5c…6a661d | addTraitsBatch | 6,011,375 | 38 days agoFri, 10 Jul 2026 10:34:32 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00009416 | |
| 0x243a7b…7eafe5 | addTraitsBatch | 6,011,277 | 38 days agoFri, 10 Jul 2026 10:34:22 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00010506 | |
| 0xe88ee0…b9615b | addTraitsBatch | 6,011,181 | 38 days agoFri, 10 Jul 2026 10:34:13 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00009979 | |
| 0xd17494…0c6fe6 | addTraitsBatch | 6,011,064 | 38 days agoFri, 10 Jul 2026 10:34:01 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00001404 | |
| 0xbda9a7…ad3165 | setLayersBatch | 6,010,965 | 38 days agoFri, 10 Jul 2026 10:33:51 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00001127 | |
| 0x7ff195…027d3f | setPalette | 6,010,849 | 38 days agoFri, 10 Jul 2026 10:33:39 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00000617 | |
| 0x6c2853…f074d5 | setCanvasSize | 6,010,714 | 38 days agoFri, 10 Jul 2026 10:33:26 UTC | 0xbe1c…3b00 | IN | PixelDataV2 | $0.000 ETH | 0.00000359 |