More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 10853482 | 44 days ago | IN | 0 S | 0.0015901 | ||||
Approve | 10851348 | 44 days ago | IN | 0 S | 0.00336729 | ||||
Approve | 10851280 | 44 days ago | IN | 0 S | 0.00253456 | ||||
Approve | 10850677 | 44 days ago | IN | 0 S | 0.00253255 | ||||
Approve | 10850548 | 44 days ago | IN | 0 S | 0.00294853 | ||||
Approve | 10848643 | 44 days ago | IN | 0 S | 0.00297948 | ||||
Approve | 10848495 | 44 days ago | IN | 0 S | 0.14758781 | ||||
Approve | 10847308 | 44 days ago | IN | 0 S | 0.02114319 | ||||
Approve | 10847238 | 44 days ago | IN | 0 S | 0.02114319 | ||||
Approve | 10793613 | 44 days ago | IN | 0 S | 0.00248786 | ||||
Approve | 10770181 | 44 days ago | IN | 0 S | 0.00248786 | ||||
Approve | 10049354 | 47 days ago | IN | 0 S | 0.00248786 | ||||
Approve | 9894517 | 48 days ago | IN | 0 S | 0.00248786 | ||||
Approve | 9884818 | 48 days ago | IN | 0 S | 0.00253258 | ||||
Approve | 9868168 | 48 days ago | IN | 0 S | 0.00248786 |
Loading...
Loading
Contract Name:
BRNx
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } abstract contract Ownable is Context { address private _owner; error OwnableUnauthorizedAccount(address account); error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } abstract contract ReentrancyGuard { uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface IERC20Errors { error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); error ERC20InvalidSender(address sender); error ERC20InvalidReceiver(address receiver); error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); error ERC20InvalidApprover(address approver); error ERC20InvalidSpender(address spender); } abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => 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 returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } interface IV3SwapRouter { struct ExactInputSingleParams { address tokenIn; address tokenOut; address recipient; uint256 amountIn; uint256 amountOutMinimum; uint160 limitSqrtPrice; } function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); } interface INonfungiblePositionManager { function createAndInitializePoolIfNecessary( address token0, address token1, uint160 sqrtPriceX96 ) external payable returns (address pool); struct MintParams { address token0; address token1; int24 tickLower; int24 tickUpper; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; address recipient; uint256 deadline; } function mint(MintParams calldata params) external payable returns ( uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1 ); } contract BRNx is ERC20, Ownable, ReentrancyGuard { // CONSTANT VARIABLES IV3SwapRouter public constant SWAP_ROUTER = IV3SwapRouter(0xA047e2AbF8263FcA7c368F43e2f960A06FD9949f); INonfungiblePositionManager public constant NONFUNGIBLE_POSITION_MANAGER = INonfungiblePositionManager(0xd82Fe82244ad01AaD671576202F9b46b76fAdFE2); address public constant TOKEN_PAIR_ADDRESS = 0xA04BC7140c26fc9BB1F36B1A604C7A5a88fb0E70; //SWPx uint16 public constant BUY_FEES = 600; //6% uint16 public constant BURN_SHARE = 400; //4% uint16 public constant TREASURY_SHARE = 175; //1.75% uint16 public constant CALLER_SHARE = 25; //0.25% address private constant DEAD_ADDRESS = address(0xdead); // OTHER VARIABLES bool private swapping; address public treasuryWallet; address public devWallet; address public algebraV3Pair; uint256 public minimumBalanceBB; uint40 public cooldownPeriodBB; bool public limitsInEffect = true; uint256 public maxW; // MAPPINGS mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => uint256) public lastBBCalledTime; // EVENTS event ExcludeFromFees(address indexed account, bool isExcluded); event ChangeAutomatedMarketMakerPairs(address indexed automatedMarketMakerPairs, bool isAutomatedMarketMakerPairs); event ChangeTreasuryWallet(address indexed newTreasuryWallet, address oldTreasuryWallet); event ChangeDevWallet(address indexed newDevWallet, address oldDevWallet); event ChangeMinimumBalanceBB(uint256 newMinimumBalanceBB, uint256 oldMinimumBalanceBB); event ChangeCooldownPeriodBB(uint40 newCooldownPeriodBB, uint40 oldCooldownPeriodBB); event BuyAndBurn(address indexed caller, uint256 amountToBurn, uint256 amountToTreasury, uint256 amountToCaller); // DEVWALLET CHANGE TIMELOCK VARIABLES struct DevWalletChange { address newDevWallet; uint256 effectiveTime; bool pending; } DevWalletChange public pendingDevWalletChange; uint256 public constant DEV_WALLET_TIMELOCK = 10 days; constructor( ) ERC20("BurnX", "BRNx") Ownable(msg.sender) { devWallet = msg.sender; treasuryWallet = 0xF7f259F157481365ba2Eee1B692D29C876180fE2; minimumBalanceBB = 1000 * 10**18; // 1000 BRNx cooldownPeriodBB = 8 hours; uint256 _totalSupply = 50_000_000 * 10**18; // 50M BRNx maxW = _totalSupply * 2 / 100; // exclude from paying fees isExcludedFromFees[address(this)] = true; isExcludedFromFees[DEAD_ADDRESS] = true; isExcludedFromFees[address(NONFUNGIBLE_POSITION_MANAGER)] = true; _mint(address(this), _totalSupply); } // OWNER FUNCTIONS function mintAndRenounce(uint160 _sqrtPriceX96, int24 _tickLower) public onlyOwner { // create a new pair and initialize at a certain price if (address(this) < TOKEN_PAIR_ADDRESS) { algebraV3Pair = NONFUNGIBLE_POSITION_MANAGER.createAndInitializePoolIfNecessary(address(this), TOKEN_PAIR_ADDRESS, _sqrtPriceX96); } else { algebraV3Pair = NONFUNGIBLE_POSITION_MANAGER.createAndInitializePoolIfNecessary(TOKEN_PAIR_ADDRESS, address(this), _sqrtPriceX96); } automatedMarketMakerPairs[algebraV3Pair] = true; //addLP automatically _approve(address(this), address(NONFUNGIBLE_POSITION_MANAGER), balanceOf(address(this))); // build the params to mint INonfungiblePositionManager.MintParams memory params; if (address(this) < TOKEN_PAIR_ADDRESS) { params = INonfungiblePositionManager.MintParams({ token0: address(this), token1: TOKEN_PAIR_ADDRESS, tickLower: _tickLower, tickUpper: 887220, amount0Desired: balanceOf(address(this)), amount1Desired: 0, amount0Min: 0, amount1Min: 0, recipient: devWallet, deadline: block.timestamp }); } else { params = INonfungiblePositionManager.MintParams({ token0: TOKEN_PAIR_ADDRESS, token1: address(this), tickLower: -887220, tickUpper: -_tickLower, amount0Desired: 0, amount1Desired: balanceOf(address(this)), amount0Min: 0, amount1Min: 0, recipient: devWallet, deadline: block.timestamp }); } // mint the position NONFUNGIBLE_POSITION_MANAGER.mint(params); // renounce ownership renounceOwnership(); } // DEV FUNCTIONS -> can be run by the dev after renounce in order to manage the project even after the contract is renounced function excludeFromFees(address _account, bool _excluded) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(!automatedMarketMakerPairs[_account], "Pool addresses cannot be excluded from fees!"); isExcludedFromFees[_account] = _excluded; emit ExcludeFromFees(_account, _excluded); } function removeLimits() public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); limitsInEffect = false; } function changeAutomatedMarketMakerPairs(address _automatedMarketMakerPairs, bool _isAutomatedMarketMakerPairs) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(_automatedMarketMakerPairs != address(0), "Automated Market Maker Pair must be a valid address"); require(_automatedMarketMakerPairs != algebraV3Pair, "Can't remove algebraV3Pair from the Automated Market Maker Pairs!"); automatedMarketMakerPairs[_automatedMarketMakerPairs] = _isAutomatedMarketMakerPairs; emit ChangeAutomatedMarketMakerPairs(_automatedMarketMakerPairs, _isAutomatedMarketMakerPairs); } function changeTreasuryWallet(address _newTreasuryWallet) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(_newTreasuryWallet != address(0), "New Treasury Wallet must be a valid address"); address oldTreasuryWallet = treasuryWallet; treasuryWallet = _newTreasuryWallet; emit ChangeTreasuryWallet(_newTreasuryWallet, oldTreasuryWallet); } function changeMinimumBalanceBB(uint256 _newMinimumBalanceBB) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(_newMinimumBalanceBB > 1 * 10**18, "Cannot set the minimumBalanceBB to lower than 1 BRNx"); uint256 oldMinimumBalanceBB = minimumBalanceBB; minimumBalanceBB = _newMinimumBalanceBB; emit ChangeMinimumBalanceBB(_newMinimumBalanceBB, oldMinimumBalanceBB); } function changeCooldownPeriodBB(uint40 _newCooldownPeriodBB) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require( _newCooldownPeriodBB >= 1 minutes && _newCooldownPeriodBB <= 24 hours, "cooldownPeriodBB must be between 1 minute and 24 hours" ); uint40 oldCooldownPeriodBB = cooldownPeriodBB; cooldownPeriodBB = _newCooldownPeriodBB; emit ChangeCooldownPeriodBB(_newCooldownPeriodBB, oldCooldownPeriodBB); } // DEV WALLET CHANGE -> will be subject to a timelock as a measure of security function initiateDevWalletChange(address _newDevWallet) public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(_newDevWallet != address(0), "New Dev Wallet must be a valid address"); require(!pendingDevWalletChange.pending, "Dev Wallet change already pending"); pendingDevWalletChange = DevWalletChange({ newDevWallet: _newDevWallet, effectiveTime: block.timestamp + DEV_WALLET_TIMELOCK, pending: true }); } function executeDevWalletChange() public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(pendingDevWalletChange.pending, "No Dev Wallet change pending"); require(block.timestamp >= pendingDevWalletChange.effectiveTime, "Timelock not expired"); address oldDevWallet = devWallet; devWallet = pendingDevWalletChange.newDevWallet; // Reset the pending change pendingDevWalletChange.pending = false; emit ChangeDevWallet(pendingDevWalletChange.newDevWallet, oldDevWallet); } function cancelDevWalletChange() public nonReentrant { require(msg.sender == devWallet, "Only the dev can run this function"); require(pendingDevWalletChange.pending, "No Dev Wallet change pending"); pendingDevWalletChange.pending = false; } // PRIVATE FUNCTIONS function _tokenTransfer(address from, address to, uint256 amount) private { if ( amount == 0 || isExcludedFromFees[from] || isExcludedFromFees[to] || (_isEOA(from) && _isEOA(to)) || swapping ) { _transfer(from, to, amount); return; } //when buy, charge tax if (automatedMarketMakerPairs[from]) { //apply an anti-snipe limit if (limitsInEffect) { require(amount + balanceOf(to) <= maxW, "Max wallet exceeded"); } // calculate the fees and send them to this address uint256 fees = amount * BUY_FEES / 10000; amount -= fees; _transfer(from, address(this), fees); } //when sell, do nothing and continue as normal else if (automatedMarketMakerPairs[to]) {} //can't be done else { revert("Can't buy, sell or add LP on another pool"); } //in the end, it'll make the swap of the tokens as requested _transfer(from, to, amount); } function _swapTokensForTokens(uint256 tokenAmount) private { // generate the algebra pair path of token -> TOKEN_PAIR_ADDRESS address tokenIn = address(this); address tokenOut = address(TOKEN_PAIR_ADDRESS); _approve(address(this), address(SWAP_ROUTER), tokenAmount); // build the params to swap IV3SwapRouter.ExactInputSingleParams memory params = IV3SwapRouter.ExactInputSingleParams({ tokenIn: tokenIn, tokenOut: tokenOut, recipient: address(this), amountIn: tokenAmount, amountOutMinimum: 0, limitSqrtPrice: 0 }); // make the swap SWAP_ROUTER.exactInputSingle(params); } function _buyAndBurn() private { // make sure there's something to swap and that it follows the rules uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) return; require(contractBalance >= minimumBalanceBB, "Can only call the buyAndBurn function when BRNx balance of the contract is over the minimumBalanceBB"); require( block.timestamp >= lastBBCalledTime[msg.sender] + cooldownPeriodBB || lastBBCalledTime[msg.sender] == 0, "Can only call the buyAndBurn function after the cooldownPeriodBB is over" ); // update last called time lastBBCalledTime[msg.sender] = block.timestamp; // swap the tokens to the TOKEN_PAIR_ADDRESS swapping = true; _swapTokensForTokens(contractBalance); swapping = false; // calculate amounts IERC20 token = IERC20(TOKEN_PAIR_ADDRESS); uint256 tokenContractBalance = token.balanceOf(address(this)); uint256 amountToBurn = tokenContractBalance * BURN_SHARE / BUY_FEES; uint256 amountToTreasury = tokenContractBalance * TREASURY_SHARE / BUY_FEES; uint256 amountToCaller = tokenContractBalance - amountToBurn - amountToTreasury; //remaining balance goes to the caller // distribute amounts token.transfer(DEAD_ADDRESS, amountToBurn); //burn token.transfer(treasuryWallet, amountToTreasury); //treasury token.transfer(msg.sender, amountToCaller); //caller emit BuyAndBurn(msg.sender, amountToBurn, amountToTreasury, amountToCaller); } function _isEOA(address contractAddress) private view returns (bool) { uint256 size; assembly { size := extcodesize(contractAddress) } return size == 0; } // PUBLIC FUNCTIONS function transfer(address to, uint256 value) public virtual override returns (bool) { address owner = _msgSender(); _tokenTransfer(owner, to, value); return true; } function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _tokenTransfer(from, to, value); return true; } // COMMUNITY FUNCTIONS function buyAndBurn() external { _buyAndBurn(); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris" }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToBurn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToTreasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToCaller","type":"uint256"}],"name":"BuyAndBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"automatedMarketMakerPairs","type":"address"},{"indexed":false,"internalType":"bool","name":"isAutomatedMarketMakerPairs","type":"bool"}],"name":"ChangeAutomatedMarketMakerPairs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint40","name":"newCooldownPeriodBB","type":"uint40"},{"indexed":false,"internalType":"uint40","name":"oldCooldownPeriodBB","type":"uint40"}],"name":"ChangeCooldownPeriodBB","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newDevWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldDevWallet","type":"address"}],"name":"ChangeDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMinimumBalanceBB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMinimumBalanceBB","type":"uint256"}],"name":"ChangeMinimumBalanceBB","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newTreasuryWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldTreasuryWallet","type":"address"}],"name":"ChangeTreasuryWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BURN_SHARE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUY_FEES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLER_SHARE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_WALLET_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NONFUNGIBLE_POSITION_MANAGER","outputs":[{"internalType":"contract INonfungiblePositionManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAP_ROUTER","outputs":[{"internalType":"contract IV3SwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_PAIR_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_SHARE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"algebraV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAndBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDevWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_automatedMarketMakerPairs","type":"address"},{"internalType":"bool","name":"_isAutomatedMarketMakerPairs","type":"bool"}],"name":"changeAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"_newCooldownPeriodBB","type":"uint40"}],"name":"changeCooldownPeriodBB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinimumBalanceBB","type":"uint256"}],"name":"changeMinimumBalanceBB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasuryWallet","type":"address"}],"name":"changeTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownPeriodBB","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeDevWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newDevWallet","type":"address"}],"name":"initiateDevWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBBCalledTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumBalanceBB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"_sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"_tickLower","type":"int24"}],"name":"mintAndRenounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDevWalletChange","outputs":[{"internalType":"address","name":"newDevWallet","type":"address"},{"internalType":"uint256","name":"effectiveTime","type":"uint256"},{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608034620004e6576040906001600160401b039080830182811182821017620004d0578352600580825260209164084eae4dcb60db1b8382015284519385850185811082821117620004d057865260049485815263084a49cf60e31b858201528251828111620004bb576003918254916001958684811c94168015620004b0575b898510146200049b578190601f9485811162000447575b508990858311600114620003e057600092620003d4575b505060001982861b1c191690861b1783555b8051938411620003bf5787548581811c91168015620003b4575b888210146200039f57908183869594931162000347575b5087918411600114620002dc57600093620002d0575b505082841b92600019911b1c19161784555b3315620002b95781546001600160a01b03198082163390811790945586519365010000007080926001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a382600655600b54903390600854161760085574f7f259f157481365ba2eee1b692d29c876180fe200610100600160a81b03196007541617600755683635c9adc5dea00000600a5565ffffffffffff191617600b5569d3c21bcecceda1000000600c5530600052600d8352846000209060ff1991818382541617905561dead60005285600020818382541617905573d82fe82244ad01aad671576202f9b46b76fadfe260005285600020918254161790553015620002a457506002546a295be96e64066972000000928382018092116200028f57506000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160025530835282815284832084815401905584519384523093a3516121d59081620004ec8239f35b601190634e487b7160e01b6000525260246000fd5b63ec442f0560e01b8152600083820152602490fd5b8451631e4fbdf760e01b8152600081860152602490fd5b01519150388062000107565b9190859450601f1984169289600052886000209360005b8a82821062000330575050851162000315575b50505050811b01845562000119565b01519060f884600019921b161c191690553880808062000306565b8385015187558998909601959384019301620002f3565b9091929350886000528760002083808701891c8201928a881062000395575b918891889796959493018a1c01915b82811062000385575050620000f1565b6000815587965088910162000375565b9250819262000366565b602289634e487b7160e01b6000525260246000fd5b90607f1690620000da565b604188634e487b7160e01b6000525260246000fd5b015190503880620000ae565b90889350601f19831691876000528b6000209260005b8d82821062000430575050841162000417575b505050811b018355620000c0565b015160001983881b60f8161c1916905538808062000409565b8385015186558c97909501949384019301620003f6565b9091508560005289600020858085018b1c8201928c861062000491575b918a9186959493018c1c01915b8281106200048157505062000097565b600081558594508a910162000471565b9250819262000464565b60228a634e487b7160e01b6000525260246000fd5b93607f169362000080565b604187634e487b7160e01b6000525260246000fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90816306fdde03146115db57508063095ea7b31461153257806318160ddd1461151357806323b872dd14611420578063313ce5671461140457806332696174146113e8578063344341ba146113cc5780633cd6cfb5146112ec5780634626402b146112bf5780634a62bb65146112985780634e967fef146112695780634fbee1931461122b578063537c1ac714611134578063656fac0f146110f75780636dbeaa05146110ab57806370a0823114611074578063715018a61461105b578063751039fc146110165780638208619a14610fed5780638da5cb5b14610fc45780638ea5220f14610f9b578063930978ed14610ec357806393b998fb14610ea657806395d89b4114610da257806396fb6c39146109575780639c467b7e1461093a578063a44edb2b1461091b578063a9059cbb146108ea578063aa6df299146108cb578063ab165d0e146107bb578063b50d1fd91461078c578063b62496f51461074e578063bda635d0146105f0578063c0246668146104fc578063c04d20a6146104dd578063c6005893146104ae578063d17eed0914610347578063dd62ed3e146102fe578063e6182bf8146102c6578063e99ac80b146102a0578063ee6e8b1c1461027e5763f2fde38b146101f157600080fd5b3461027a57602036600319011261027a5761020a611716565b90610213611776565b6001600160a01b03918216928315610264575050600554826001600160601b0360a01b821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b50503461029c578160031936011261029c5760209051620d2f008152f35b5080fd5b50503461029c578160031936011261029c5760209064ffffffffff600b54169051908152f35b50503461029c57602036600319011261029c5760209181906001600160a01b036102ee611716565b168152600f845220549051908152f35b50503461029c578060031936011261029c578060209261031c611716565b610324611731565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5091903461029c57602036600319011261029c57610363611716565b61036b6118b1565b6008546001600160a01b039190610385908316331461185a565b1690811561045d576012549160ff831661041057620d2f004201918242116103fd575167ffffffffffffffff606082019182109111176103ea5760019394506001600160601b0360a01b601054161760105560115560ff191617601255600160065580f35b634e487b7160e01b845260418552602484fd5b634e487b7160e01b855260118652602485fd5b815162461bcd60e51b8152602081870152602160248201527f4465762057616c6c6574206368616e676520616c72656164792070656e64696e6044820152606760f81b6064820152608490fd5b5162461bcd60e51b8152602081850152602660248201527f4e6577204465762057616c6c6574206d75737420626520612076616c6964206160448201526564647265737360d01b6064820152608490fd5b50503461029c578160031936011261029c576020905173a047e2abf8263fca7c368f43e2f960a06fd9949f8152f35b50503461029c578160031936011261029c57602090600a549051908152f35b50903461027a5761050c36611747565b91906105166118b1565b6008546001600160a01b039190610530908316331461185a565b1692838552600e60205260ff828620541661059957507f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791602091848652600d835261058a828288209060ff801983541691151516179055565b519015158152a2600160065580f35b6020608492519162461bcd60e51b8352820152602c60248201527f506f6f6c206164647265737365732063616e6e6f74206265206578636c75646560448201526b642066726f6d20666565732160a01b6064820152fd5b50903461027a5761060036611747565b91909261060b6118b1565b6008546001600160a01b03948591610626908316331461185a565b169384156106ef5760095416841461067d57507ff6ded336129da9f6b9bd640fa7fc062ccdc399b4eb86efbc8ca064c1489fa0fc91602091848652600e835261058a828288209060ff801983541691151516179055565b602060a492519162461bcd60e51b8352820152604160248201527f43616e27742072656d6f766520616c67656272615633506169722066726f6d2060448201527f746865204175746f6d61746564204d61726b6574204d616b65722050616972736064820152602160f81b6084820152fd5b506020608492519162461bcd60e51b8352820152603360248201527f4175746f6d61746564204d61726b6574204d616b65722050616972206d75737460448201527220626520612076616c6964206164647265737360681b6064820152fd5b50503461029c57602036600319011261029c5760209160ff9082906001600160a01b03610779611716565b168152600e855220541690519015158152f35b50503461029c578160031936011261029c576020905173a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e708152f35b5091903461029c57602036600319011261029c57823564ffffffffff938482168092036108c7576107ea6118b1565b6107ff60018060a01b0360085416331461185a565b603c821015806108ba575b1561085857507f346c096852f7b9dc33224c9ff605f07a9c6f592988a8a2eef82ccad46eaadb8a9293600b548264ffffffffff19821617600b558351928352166020820152a1600160065580f35b608490602084519162461bcd60e51b8352820152603660248201527f636f6f6c646f776e506572696f644242206d757374206265206265747765656e6044820152752031206d696e75746520616e6420323420686f75727360501b6064820152fd5b506201518082111561080a565b8380fd5b83346108e757806003193601126108e7576108e4611c2f565b80f35b80fd5b50503461029c578060031936011261029c5760209061091461090a611716565b6024359033611950565b5160018152f35b50503461029c578160031936011261029c57602090600c549051908152f35b50503461029c578160031936011261029c57602090516102588152f35b50903461027a578060031936011261027a576001600160a01b03823581811693919290849003610d9e576024918235908160020b809203610d9a5761099a611776565b73a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e70938430109687600014610d175784519063289236b760e11b82523084830152868383015260448201526020816064818c73d82fe82244ad01aad671576202f9b46b76fadfe25af1908115610d0d579087918a91610cdf575b50166001600160601b0360a01b60095416176009555b85600954168852602096600e8852848920600160ff1982541617905530895288885284892054913015610ccb578892869594928b923084526001865287842073d82fe82244ad01aad671576202f9b46b76fadfe29384918287528852808a87205589519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925883092a38a885192610ab5846117e6565b8584528588850152858a85015285606085015260809b8c99878b8701528760a08701528760c08701528760e08701526101009288848801528861012080980152600014610c365790899a9b6101449a92308a52898452818a205491866008541693815195610b22876117e6565b308752860152840152620d89b460608401528c8301528760a08301528760c08301528760e0830152828201524285820152925b8b519d8e9a8b99639cc1a28360e01b8b5282875116908b015285015116908801528a83015160020b6044880152606083015160020b606488015289830151608488015260a083015160a488015260c083015160c488015260e083015160e48801528201511661010486015201516101248401525af1908115610c2d5750610be8575b83610be0611776565b6108e46117a2565b81813d8311610c26575b610bfc8183611819565b8101031261027a5701516fffffffffffffffffffffffffffffffff8116036108e757388080610bd7565b503d610bf2565b513d86823e3d90fd5b949850949850945050939650627fffff198114610cb957938896938a8d948d98948b61014499308952888c528189205490856008541692805194610c79866117e6565b85528d3090860152620d89b31990850152890360020b6060840152888d84015260a08301528760c08301528760e083015282820152428582015292610b55565b634e487b7160e01b8c5260118752838cfd5b855163e602df0560e01b81528085018b9052fd5b610d00915060203d8111610d06575b610cf88183611819565b81019061183b565b38610a07565b503d610cee565b85513d8b823e3d90fd5b84519063289236b760e11b82528684830152308383015260448201526020816064818c73d82fe82244ad01aad671576202f9b46b76fadfe25af1908115610d0d579087918a91610d7c575b50166001600160601b0360a01b6009541617600955610a1d565b610d94915060203d8111610d0657610cf88183611819565b38610d62565b8680fd5b8480fd5b5091903461029c578160031936011261029c57805191809380549160019083821c92828516948515610e9c575b6020958686108114610e8957858952908115610e655750600114610e0d575b610e098787610dff828c0383611819565b51918291826116cd565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610e525750505082610e0994610dff92820101943880610dee565b8054868501880152928601928101610e34565b60ff19168887015250505050151560051b8301019250610dff82610e093880610dee565b634e487b7160e01b845260228352602484fd5b93607f1693610dcf565b50503461029c578160031936011261029c57602090516101908152f35b503461027a578260031936011261027a57610edc6118b1565b600854916001600160a01b038084169290610ef833851461185a565b60125491610f0860ff84166118f7565b6011544210610f615750601054166001600160a01b031994909416841760085560ff1916601255519081527fb7b8d751f756e5e473e00a6fe528f2e3d5e6bc2928b5744165d831c56af0650c90602090a2600160065580f35b606490602085519162461bcd60e51b83528201526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152fd5b50503461029c578160031936011261029c5760085490516001600160a01b039091168152602090f35b50503461029c578160031936011261029c5760055490516001600160a01b039091168152602090f35b50503461029c578160031936011261029c5760095490516001600160a01b039091168152602090f35b83346108e757806003193601126108e75761102f6118b1565b61104460018060a01b0360085416331461185a565b65ff000000000019600b5416600b55600160065580f35b83346108e757806003193601126108e757610be0611776565b50503461029c57602036600319011261029c5760209181906001600160a01b0361109c611716565b16815280845220549051908152f35b83346108e757806003193601126108e7576110c46118b1565b6110d960018060a01b0360085416331461185a565b6012546110e860ff82166118f7565b60ff1916601255600160065580f35b50503461029c578160031936011261029c5760609060018060a01b03601054169060115460ff601254169082519384526020840152151590820152f35b50903461027a57602036600319011261027a5761114f611716565b906111586118b1565b6008546001600160a01b039190611172908316331461185a565b8183169384156111d5575060078054610100600160a81b03198116600895861b610100600160a81b0316179091559051921c1681527fdf4b361a1fafeb8deb9a0f6eaacf67a9c8407f9af7eaebb00a77ece36e72704690602090a2600160065580f35b6020608492519162461bcd60e51b8352820152602b60248201527f4e65772054726561737572792057616c6c6574206d757374206265206120766160448201526a6c6964206164647265737360a81b6064820152fd5b50503461029c57602036600319011261029c5760209160ff9082906001600160a01b03611256611716565b168152600d855220541690519015158152f35b50503461029c578160031936011261029c576020905173d82fe82244ad01aad671576202f9b46b76fadfe28152f35b50503461029c578160031936011261029c5760209060ff600b5460281c1690519015158152f35b50503461029c578160031936011261029c57600754905160089190911c6001600160a01b03168152602090f35b503461027a57602036600319011261027a578035906113096118b1565b61131e60018060a01b0360085416331461185a565b670de0b6b3a764000082111561136c5750907fa201f2fe8dea5312ae3d5efd56bae300f09d43248e22dd7eef6d4f314ac4a1be91600a5481600a5582519182526020820152a1600160065580f35b608490602084519162461bcd60e51b8352820152603460248201527f43616e6e6f742073657420746865206d696e696d756d42616c616e63654242206044820152730e8de40d8deeecae440e8d0c2dc40624084a49cf60631b6064820152fd5b50503461029c578160031936011261029c576020905160198152f35b50503461029c578160031936011261029c576020905160af8152f35b50503461029c578160031936011261029c576020905160128152f35b5082346108e75760603660031901126108e75761143b611716565b611443611731565b916044359360018060a01b03831680835260016020528683203384526020528683205491600019830361147f575b602088610914898989611950565b8683106114e75781156114d05733156114b95750825260016020908152868320338452815291869020908590039055829061091487611471565b8751634a1406b160e11b8152908101849052602490fd5b875163e602df0560e01b8152908101849052602490fd5b8751637dc7a0d960e11b8152339181019182526020820193909352604081018790528291506060010390fd5b50503461029c578160031936011261029c576020906002549051908152f35b503461027a578160031936011261027a5761154b611716565b6024359033156115c4576001600160a01b03169182156115ad57508083602095338152600187528181208582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8351634a1406b160e11b8152908101859052602490fd5b835163e602df0560e01b8152808401869052602490fd5b92919050346108c757836003193601126108c757600354600181811c91869082811680156116c3575b60209586861082146116b0575084885290811561168e5750600114611635575b610e098686610dff828b0383611819565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b82841061167b5750505082610e0994610dff928201019438611624565b805486850188015292860192810161165e565b60ff191687860152505050151560051b8301019250610dff82610e0938611624565b634e487b7160e01b845260229052602483fd5b93607f1693611604565b6020808252825181830181905290939260005b82811061170257505060409293506000838284010152601f8019910116010190565b8181018601518482016040015285016116e0565b600435906001600160a01b038216820361172c57565b600080fd5b602435906001600160a01b038216820361172c57565b604090600319011261172c576004356001600160a01b038116810361172c5790602435801515810361172c5790565b6005546001600160a01b0316330361178a57565b60405163118cdaa760e01b8152336004820152602490fd5b600580546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3565b610140810190811067ffffffffffffffff82111761180357604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761180357604052565b9081602091031261172c57516001600160a01b038116810361172c5790565b1561186157565b60405162461bcd60e51b815260206004820152602260248201527f4f6e6c7920746865206465762063616e2072756e20746869732066756e63746960448201526137b760f11b6064820152608490fd5b6002600654146118c2576002600655565b604051633ee5aeb560e01b8152600490fd5b919082018092116118e157565b634e487b7160e01b600052601160045260246000fd5b156118fe57565b60405162461bcd60e51b815260206004820152601c60248201527f4e6f204465762057616c6c6574206368616e67652070656e64696e67000000006044820152606490fd5b919082039182116118e157565b929190811593848015611b17575b8015611af5575b8015611ae2575b8015611ad6575b611acb576001600160a01b038181166000908152600e602052604081205490919060ff1615611a565760ff600b5460281c166119f7575b5061025895868502968588041417156119e357506119dc6119d46127106119e19697048095611943565b933083611b39565b611b39565b565b634e487b7160e01b81526011600452602490fd5b8316815280602052611a0d6040822054856118d4565b600c5410611a1b57386119aa565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b8316815260409020549394509260ff1615611a74576119e192611b39565b60405162461bcd60e51b815260206004820152602960248201527f43616e2774206275792c2073656c6c206f7220616464204c50206f6e20616e6f6044820152681d1a195c881c1bdbdb60ba1b6064820152608490fd5b6119e1939450611b39565b5060ff60075416611973565b50803b15801561196c5750813b1561196c565b506001600160a01b0382166000908152600d602052604090205460ff16611965565b506001600160a01b0381166000908152600d602052604090205460ff1661195e565b916001600160a01b03808416928315611bfe5716928315611be55760009083825281602052604082205490838210611bb3575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9081602091031261172c5751801515810361172c5790565b306000526000602052604060002054801561219c57600a5481106120ff5733600052600f602052611c6f60406000205464ffffffffff600b5416906118d4565b42108015906120e9575b1561206d5733600052600f60205242604060002055600160ff196007541617600755301561205457306000526001602052604060002073a047e2abf8263fca7c368f43e2f960a06fd9949f6000526020528060406000205573a047e2abf8263fca7c368f43e2f960a06fd9949f6040518281527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a36040519060c0820182811067ffffffffffffffff8211176118035760409081523080845273a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e7060208086019182528584019283526060860194855260006080870181815260a088018281529551635d590a0760e11b815297516001600160a01b0390811660048a01529351841660248901529351831660448801529451606487015291516084860152915190911660a484015290829060c490829073a047e2abf8263fca7c368f43e2f960a06fd9949f5af18015611fad57612029575b506007805460ff191690556040516370a0823160e01b815230600482015260208160248173a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705afa908115611fad57600091611ff7575b50610190808202821591838204148217156118e1576102588091049260af81029281840460af1417156118e157611e6b611e7092859404938492611943565b611943565b9060405163a9059cbb60e01b9081815261dead6004820152846024820152602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611fd8575b5060075460405182815260089190911c6001600160a01b0316600482015260248101839052602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611fb9575b5060405190815233600482015260248101839052602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611f7e575b50604051928352602083015260408201527f0f960106459651f5920865daf08e328c57639961da0b3ea82d647c11ee0ec88260603392a2565b611f9f9060203d602011611fa6575b611f978183611819565b810190611c17565b5038611f45565b503d611f8d565b6040513d6000823e3d90fd5b611fd19060203d602011611fa657611f978183611819565b5038611f07565b611ff09060203d602011611fa657611f978183611819565b5038611eb8565b90506020813d602011612021575b8161201260209383611819565b8101031261172c575138611e2c565b3d9150612005565b602090813d831161204d575b61203f8183611819565b8101031261172c5738611de2565b503d612035565b60405163e602df0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152604860248201527f43616e206f6e6c792063616c6c2074686520627579416e644275726e2066756e60448201527f6374696f6e2061667465722074686520636f6f6c646f776e506572696f6442426064820152671034b99037bb32b960c11b608482015260a490fd5b5033600052600f60205260406000205415611c79565b60c460405162461bcd60e51b815260206004820152606460248201527f43616e206f6e6c792063616c6c2074686520627579416e644275726e2066756e60448201527f6374696f6e207768656e2042524e782062616c616e6365206f6620746865206360648201527f6f6e7472616374206973206f76657220746865206d696e696d756d42616c616e60848201526331b2a12160e11b60a4820152fd5b5056fea264697066735822122011133f4b68f84e9fadd5354adfa154c1f03368b3234b0efbc3fa4394300c854964736f6c63430008140033
Deployed Bytecode
0x6080604081815260048036101561001557600080fd5b600092833560e01c90816306fdde03146115db57508063095ea7b31461153257806318160ddd1461151357806323b872dd14611420578063313ce5671461140457806332696174146113e8578063344341ba146113cc5780633cd6cfb5146112ec5780634626402b146112bf5780634a62bb65146112985780634e967fef146112695780634fbee1931461122b578063537c1ac714611134578063656fac0f146110f75780636dbeaa05146110ab57806370a0823114611074578063715018a61461105b578063751039fc146110165780638208619a14610fed5780638da5cb5b14610fc45780638ea5220f14610f9b578063930978ed14610ec357806393b998fb14610ea657806395d89b4114610da257806396fb6c39146109575780639c467b7e1461093a578063a44edb2b1461091b578063a9059cbb146108ea578063aa6df299146108cb578063ab165d0e146107bb578063b50d1fd91461078c578063b62496f51461074e578063bda635d0146105f0578063c0246668146104fc578063c04d20a6146104dd578063c6005893146104ae578063d17eed0914610347578063dd62ed3e146102fe578063e6182bf8146102c6578063e99ac80b146102a0578063ee6e8b1c1461027e5763f2fde38b146101f157600080fd5b3461027a57602036600319011261027a5761020a611716565b90610213611776565b6001600160a01b03918216928315610264575050600554826001600160601b0360a01b821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b50503461029c578160031936011261029c5760209051620d2f008152f35b5080fd5b50503461029c578160031936011261029c5760209064ffffffffff600b54169051908152f35b50503461029c57602036600319011261029c5760209181906001600160a01b036102ee611716565b168152600f845220549051908152f35b50503461029c578060031936011261029c578060209261031c611716565b610324611731565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5091903461029c57602036600319011261029c57610363611716565b61036b6118b1565b6008546001600160a01b039190610385908316331461185a565b1690811561045d576012549160ff831661041057620d2f004201918242116103fd575167ffffffffffffffff606082019182109111176103ea5760019394506001600160601b0360a01b601054161760105560115560ff191617601255600160065580f35b634e487b7160e01b845260418552602484fd5b634e487b7160e01b855260118652602485fd5b815162461bcd60e51b8152602081870152602160248201527f4465762057616c6c6574206368616e676520616c72656164792070656e64696e6044820152606760f81b6064820152608490fd5b5162461bcd60e51b8152602081850152602660248201527f4e6577204465762057616c6c6574206d75737420626520612076616c6964206160448201526564647265737360d01b6064820152608490fd5b50503461029c578160031936011261029c576020905173a047e2abf8263fca7c368f43e2f960a06fd9949f8152f35b50503461029c578160031936011261029c57602090600a549051908152f35b50903461027a5761050c36611747565b91906105166118b1565b6008546001600160a01b039190610530908316331461185a565b1692838552600e60205260ff828620541661059957507f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791602091848652600d835261058a828288209060ff801983541691151516179055565b519015158152a2600160065580f35b6020608492519162461bcd60e51b8352820152602c60248201527f506f6f6c206164647265737365732063616e6e6f74206265206578636c75646560448201526b642066726f6d20666565732160a01b6064820152fd5b50903461027a5761060036611747565b91909261060b6118b1565b6008546001600160a01b03948591610626908316331461185a565b169384156106ef5760095416841461067d57507ff6ded336129da9f6b9bd640fa7fc062ccdc399b4eb86efbc8ca064c1489fa0fc91602091848652600e835261058a828288209060ff801983541691151516179055565b602060a492519162461bcd60e51b8352820152604160248201527f43616e27742072656d6f766520616c67656272615633506169722066726f6d2060448201527f746865204175746f6d61746564204d61726b6574204d616b65722050616972736064820152602160f81b6084820152fd5b506020608492519162461bcd60e51b8352820152603360248201527f4175746f6d61746564204d61726b6574204d616b65722050616972206d75737460448201527220626520612076616c6964206164647265737360681b6064820152fd5b50503461029c57602036600319011261029c5760209160ff9082906001600160a01b03610779611716565b168152600e855220541690519015158152f35b50503461029c578160031936011261029c576020905173a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e708152f35b5091903461029c57602036600319011261029c57823564ffffffffff938482168092036108c7576107ea6118b1565b6107ff60018060a01b0360085416331461185a565b603c821015806108ba575b1561085857507f346c096852f7b9dc33224c9ff605f07a9c6f592988a8a2eef82ccad46eaadb8a9293600b548264ffffffffff19821617600b558351928352166020820152a1600160065580f35b608490602084519162461bcd60e51b8352820152603660248201527f636f6f6c646f776e506572696f644242206d757374206265206265747765656e6044820152752031206d696e75746520616e6420323420686f75727360501b6064820152fd5b506201518082111561080a565b8380fd5b83346108e757806003193601126108e7576108e4611c2f565b80f35b80fd5b50503461029c578060031936011261029c5760209061091461090a611716565b6024359033611950565b5160018152f35b50503461029c578160031936011261029c57602090600c549051908152f35b50503461029c578160031936011261029c57602090516102588152f35b50903461027a578060031936011261027a576001600160a01b03823581811693919290849003610d9e576024918235908160020b809203610d9a5761099a611776565b73a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e70938430109687600014610d175784519063289236b760e11b82523084830152868383015260448201526020816064818c73d82fe82244ad01aad671576202f9b46b76fadfe25af1908115610d0d579087918a91610cdf575b50166001600160601b0360a01b60095416176009555b85600954168852602096600e8852848920600160ff1982541617905530895288885284892054913015610ccb578892869594928b923084526001865287842073d82fe82244ad01aad671576202f9b46b76fadfe29384918287528852808a87205589519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925883092a38a885192610ab5846117e6565b8584528588850152858a85015285606085015260809b8c99878b8701528760a08701528760c08701528760e08701526101009288848801528861012080980152600014610c365790899a9b6101449a92308a52898452818a205491866008541693815195610b22876117e6565b308752860152840152620d89b460608401528c8301528760a08301528760c08301528760e0830152828201524285820152925b8b519d8e9a8b99639cc1a28360e01b8b5282875116908b015285015116908801528a83015160020b6044880152606083015160020b606488015289830151608488015260a083015160a488015260c083015160c488015260e083015160e48801528201511661010486015201516101248401525af1908115610c2d5750610be8575b83610be0611776565b6108e46117a2565b81813d8311610c26575b610bfc8183611819565b8101031261027a5701516fffffffffffffffffffffffffffffffff8116036108e757388080610bd7565b503d610bf2565b513d86823e3d90fd5b949850949850945050939650627fffff198114610cb957938896938a8d948d98948b61014499308952888c528189205490856008541692805194610c79866117e6565b85528d3090860152620d89b31990850152890360020b6060840152888d84015260a08301528760c08301528760e083015282820152428582015292610b55565b634e487b7160e01b8c5260118752838cfd5b855163e602df0560e01b81528085018b9052fd5b610d00915060203d8111610d06575b610cf88183611819565b81019061183b565b38610a07565b503d610cee565b85513d8b823e3d90fd5b84519063289236b760e11b82528684830152308383015260448201526020816064818c73d82fe82244ad01aad671576202f9b46b76fadfe25af1908115610d0d579087918a91610d7c575b50166001600160601b0360a01b6009541617600955610a1d565b610d94915060203d8111610d0657610cf88183611819565b38610d62565b8680fd5b8480fd5b5091903461029c578160031936011261029c57805191809380549160019083821c92828516948515610e9c575b6020958686108114610e8957858952908115610e655750600114610e0d575b610e098787610dff828c0383611819565b51918291826116cd565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610e525750505082610e0994610dff92820101943880610dee565b8054868501880152928601928101610e34565b60ff19168887015250505050151560051b8301019250610dff82610e093880610dee565b634e487b7160e01b845260228352602484fd5b93607f1693610dcf565b50503461029c578160031936011261029c57602090516101908152f35b503461027a578260031936011261027a57610edc6118b1565b600854916001600160a01b038084169290610ef833851461185a565b60125491610f0860ff84166118f7565b6011544210610f615750601054166001600160a01b031994909416841760085560ff1916601255519081527fb7b8d751f756e5e473e00a6fe528f2e3d5e6bc2928b5744165d831c56af0650c90602090a2600160065580f35b606490602085519162461bcd60e51b83528201526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152fd5b50503461029c578160031936011261029c5760085490516001600160a01b039091168152602090f35b50503461029c578160031936011261029c5760055490516001600160a01b039091168152602090f35b50503461029c578160031936011261029c5760095490516001600160a01b039091168152602090f35b83346108e757806003193601126108e75761102f6118b1565b61104460018060a01b0360085416331461185a565b65ff000000000019600b5416600b55600160065580f35b83346108e757806003193601126108e757610be0611776565b50503461029c57602036600319011261029c5760209181906001600160a01b0361109c611716565b16815280845220549051908152f35b83346108e757806003193601126108e7576110c46118b1565b6110d960018060a01b0360085416331461185a565b6012546110e860ff82166118f7565b60ff1916601255600160065580f35b50503461029c578160031936011261029c5760609060018060a01b03601054169060115460ff601254169082519384526020840152151590820152f35b50903461027a57602036600319011261027a5761114f611716565b906111586118b1565b6008546001600160a01b039190611172908316331461185a565b8183169384156111d5575060078054610100600160a81b03198116600895861b610100600160a81b0316179091559051921c1681527fdf4b361a1fafeb8deb9a0f6eaacf67a9c8407f9af7eaebb00a77ece36e72704690602090a2600160065580f35b6020608492519162461bcd60e51b8352820152602b60248201527f4e65772054726561737572792057616c6c6574206d757374206265206120766160448201526a6c6964206164647265737360a81b6064820152fd5b50503461029c57602036600319011261029c5760209160ff9082906001600160a01b03611256611716565b168152600d855220541690519015158152f35b50503461029c578160031936011261029c576020905173d82fe82244ad01aad671576202f9b46b76fadfe28152f35b50503461029c578160031936011261029c5760209060ff600b5460281c1690519015158152f35b50503461029c578160031936011261029c57600754905160089190911c6001600160a01b03168152602090f35b503461027a57602036600319011261027a578035906113096118b1565b61131e60018060a01b0360085416331461185a565b670de0b6b3a764000082111561136c5750907fa201f2fe8dea5312ae3d5efd56bae300f09d43248e22dd7eef6d4f314ac4a1be91600a5481600a5582519182526020820152a1600160065580f35b608490602084519162461bcd60e51b8352820152603460248201527f43616e6e6f742073657420746865206d696e696d756d42616c616e63654242206044820152730e8de40d8deeecae440e8d0c2dc40624084a49cf60631b6064820152fd5b50503461029c578160031936011261029c576020905160198152f35b50503461029c578160031936011261029c576020905160af8152f35b50503461029c578160031936011261029c576020905160128152f35b5082346108e75760603660031901126108e75761143b611716565b611443611731565b916044359360018060a01b03831680835260016020528683203384526020528683205491600019830361147f575b602088610914898989611950565b8683106114e75781156114d05733156114b95750825260016020908152868320338452815291869020908590039055829061091487611471565b8751634a1406b160e11b8152908101849052602490fd5b875163e602df0560e01b8152908101849052602490fd5b8751637dc7a0d960e11b8152339181019182526020820193909352604081018790528291506060010390fd5b50503461029c578160031936011261029c576020906002549051908152f35b503461027a578160031936011261027a5761154b611716565b6024359033156115c4576001600160a01b03169182156115ad57508083602095338152600187528181208582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8351634a1406b160e11b8152908101859052602490fd5b835163e602df0560e01b8152808401869052602490fd5b92919050346108c757836003193601126108c757600354600181811c91869082811680156116c3575b60209586861082146116b0575084885290811561168e5750600114611635575b610e098686610dff828b0383611819565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b82841061167b5750505082610e0994610dff928201019438611624565b805486850188015292860192810161165e565b60ff191687860152505050151560051b8301019250610dff82610e0938611624565b634e487b7160e01b845260229052602483fd5b93607f1693611604565b6020808252825181830181905290939260005b82811061170257505060409293506000838284010152601f8019910116010190565b8181018601518482016040015285016116e0565b600435906001600160a01b038216820361172c57565b600080fd5b602435906001600160a01b038216820361172c57565b604090600319011261172c576004356001600160a01b038116810361172c5790602435801515810361172c5790565b6005546001600160a01b0316330361178a57565b60405163118cdaa760e01b8152336004820152602490fd5b600580546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3565b610140810190811067ffffffffffffffff82111761180357604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761180357604052565b9081602091031261172c57516001600160a01b038116810361172c5790565b1561186157565b60405162461bcd60e51b815260206004820152602260248201527f4f6e6c7920746865206465762063616e2072756e20746869732066756e63746960448201526137b760f11b6064820152608490fd5b6002600654146118c2576002600655565b604051633ee5aeb560e01b8152600490fd5b919082018092116118e157565b634e487b7160e01b600052601160045260246000fd5b156118fe57565b60405162461bcd60e51b815260206004820152601c60248201527f4e6f204465762057616c6c6574206368616e67652070656e64696e67000000006044820152606490fd5b919082039182116118e157565b929190811593848015611b17575b8015611af5575b8015611ae2575b8015611ad6575b611acb576001600160a01b038181166000908152600e602052604081205490919060ff1615611a565760ff600b5460281c166119f7575b5061025895868502968588041417156119e357506119dc6119d46127106119e19697048095611943565b933083611b39565b611b39565b565b634e487b7160e01b81526011600452602490fd5b8316815280602052611a0d6040822054856118d4565b600c5410611a1b57386119aa565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b8316815260409020549394509260ff1615611a74576119e192611b39565b60405162461bcd60e51b815260206004820152602960248201527f43616e2774206275792c2073656c6c206f7220616464204c50206f6e20616e6f6044820152681d1a195c881c1bdbdb60ba1b6064820152608490fd5b6119e1939450611b39565b5060ff60075416611973565b50803b15801561196c5750813b1561196c565b506001600160a01b0382166000908152600d602052604090205460ff16611965565b506001600160a01b0381166000908152600d602052604090205460ff1661195e565b916001600160a01b03808416928315611bfe5716928315611be55760009083825281602052604082205490838210611bb3575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9081602091031261172c5751801515810361172c5790565b306000526000602052604060002054801561219c57600a5481106120ff5733600052600f602052611c6f60406000205464ffffffffff600b5416906118d4565b42108015906120e9575b1561206d5733600052600f60205242604060002055600160ff196007541617600755301561205457306000526001602052604060002073a047e2abf8263fca7c368f43e2f960a06fd9949f6000526020528060406000205573a047e2abf8263fca7c368f43e2f960a06fd9949f6040518281527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a36040519060c0820182811067ffffffffffffffff8211176118035760409081523080845273a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e7060208086019182528584019283526060860194855260006080870181815260a088018281529551635d590a0760e11b815297516001600160a01b0390811660048a01529351841660248901529351831660448801529451606487015291516084860152915190911660a484015290829060c490829073a047e2abf8263fca7c368f43e2f960a06fd9949f5af18015611fad57612029575b506007805460ff191690556040516370a0823160e01b815230600482015260208160248173a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705afa908115611fad57600091611ff7575b50610190808202821591838204148217156118e1576102588091049260af81029281840460af1417156118e157611e6b611e7092859404938492611943565b611943565b9060405163a9059cbb60e01b9081815261dead6004820152846024820152602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611fd8575b5060075460405182815260089190911c6001600160a01b0316600482015260248101839052602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611fb9575b5060405190815233600482015260248101839052602081604481600073a04bc7140c26fc9bb1f36b1a604c7a5a88fb0e705af18015611fad57611f7e575b50604051928352602083015260408201527f0f960106459651f5920865daf08e328c57639961da0b3ea82d647c11ee0ec88260603392a2565b611f9f9060203d602011611fa6575b611f978183611819565b810190611c17565b5038611f45565b503d611f8d565b6040513d6000823e3d90fd5b611fd19060203d602011611fa657611f978183611819565b5038611f07565b611ff09060203d602011611fa657611f978183611819565b5038611eb8565b90506020813d602011612021575b8161201260209383611819565b8101031261172c575138611e2c565b3d9150612005565b602090813d831161204d575b61203f8183611819565b8101031261172c5738611de2565b503d612035565b60405163e602df0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152604860248201527f43616e206f6e6c792063616c6c2074686520627579416e644275726e2066756e60448201527f6374696f6e2061667465722074686520636f6f6c646f776e506572696f6442426064820152671034b99037bb32b960c11b608482015260a490fd5b5033600052600f60205260406000205415611c79565b60c460405162461bcd60e51b815260206004820152606460248201527f43616e206f6e6c792063616c6c2074686520627579416e644275726e2066756e60448201527f6374696f6e207768656e2042524e782062616c616e6365206f6620746865206360648201527f6f6e7472616374206973206f76657220746865206d696e696d756d42616c616e60848201526331b2a12160e11b60a4820152fd5b5056fea264697066735822122011133f4b68f84e9fadd5354adfa154c1f03368b3234b0efbc3fa4394300c854964736f6c63430008140033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.