More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 534 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 6785146 | 13 mins ago | IN | 0 ETH | 0.000005 | ||||
Claim | 6780403 | 1 hr ago | IN | 0 ETH | 0.00000731 | ||||
Claim | 6779591 | 1 hr ago | IN | 0 ETH | 0.00000761 | ||||
Claim | 6775462 | 2 hrs ago | IN | 0 ETH | 0.00000625 | ||||
Burn2vault | 6775290 | 3 hrs ago | IN | 0 ETH | 0.0000103 | ||||
Approve | 6767353 | 5 hrs ago | IN | 0 ETH | 0.00000447 | ||||
Claim | 6766597 | 5 hrs ago | IN | 0 ETH | 0.00000637 | ||||
Claim | 6764187 | 6 hrs ago | IN | 0 ETH | 0.00000761 | ||||
Claim | 6762696 | 6 hrs ago | IN | 0 ETH | 0.00000552 | ||||
Claim | 6762374 | 6 hrs ago | IN | 0 ETH | 0.00000664 | ||||
Claim | 6761706 | 6 hrs ago | IN | 0 ETH | 0.00000636 | ||||
Claim | 6757158 | 8 hrs ago | IN | 0 ETH | 0.00000636 | ||||
Approve | 6756382 | 8 hrs ago | IN | 0 ETH | 0.00000434 | ||||
Claim | 6753574 | 9 hrs ago | IN | 0 ETH | 0.00000556 | ||||
Claim | 6753270 | 9 hrs ago | IN | 0 ETH | 0.00000641 | ||||
Approve | 6747688 | 10 hrs ago | IN | 0 ETH | 0.00000517 | ||||
Claim | 6745542 | 11 hrs ago | IN | 0 ETH | 0.0000054 | ||||
Claim | 6745080 | 11 hrs ago | IN | 0 ETH | 0.00000682 | ||||
Claim | 6744487 | 11 hrs ago | IN | 0 ETH | 0.00000664 | ||||
Approve | 6742129 | 12 hrs ago | IN | 0 ETH | 0.00000494 | ||||
Claim | 6739238 | 13 hrs ago | IN | 0 ETH | 0.00000672 | ||||
Claim | 6738494 | 13 hrs ago | IN | 0 ETH | 0.00000541 | ||||
Claim | 6738377 | 13 hrs ago | IN | 0 ETH | 0.00000554 | ||||
Claim | 6738357 | 13 hrs ago | IN | 0 ETH | 0.00000682 | ||||
Claim | 6736174 | 14 hrs ago | IN | 0 ETH | 0.00000711 |
Latest 2 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6644914 | 40 hrs ago | Contract Creation | 0 ETH | |||
6644914 | 40 hrs ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BurnVaultToken
Compiler Version
v0.8.10+commit.fc410830
ZkSolc Version
v1.5.12
Optimization Enabled:
Yes with Mode 3
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// Burn the Token and Unlock the Vault on @AbstractChain // Web: https://burnvault.cash // X: https://x.com/burnvault_cash // TG: https://t.me/burnvault_cash // SPDX-License-Identifier: MIT pragma solidity 0.8.10; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {IUniswapV2Router02} from "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import {IUniswapV2Factory} from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol"; import {Vault} from "./Vault.sol"; import {TwoTierReferral} from "./TwoTierReferral.sol"; contract BurnVaultToken is Ownable, ERC20 { using TwoTierReferral for TwoTierReferral.ReferralData; event EnableTrading(); event DisableLimits(); event SwapBack(uint256 amount); event ExcludedFromFees(address wallet, bool value); event UpdateRewardAddress(address newAddress); event UpdateSwapBackDelay(uint256 delay); event UpdateMaxSwapBackAmount(uint256 amount); event ReferralReward( address indexed referrer, address indexed user, uint256 amount, uint8 level ); event Burn2Vault( address indexed user, uint256 burnAmount, uint256 dividendAmount ); event Referral(address indexed user, address indexed referrer); IUniswapV2Router02 constant router = IUniswapV2Router02(0xad1eCa41E6F772bE3cb5A48A6141f9bcc1AF9F7c); uint256 private constant INITIAL_SUPPLY = 100_000_000 ether; uint256 private constant TAX = 5; uint256 private constant LEVEL1_REFERRAL_PERCENT = 5; uint256 private constant LEVEL2_REFERRAL_PERCENT = 2; uint256 private constant PERCENT_DENOMINATOR = 100; address private DEFAULT_1 = 0x0e5f79df48505D56331b4827c1E5c98b8eFD12b5; address private DEFAULT_2 = 0xEf37aB0743F37A32E279B26546D31D9989BEE014; bool private _enabled; uint256 private _maxSwapBackAmount = 50_000 ether; uint256 private _swapbackDelay = 3 seconds; uint256 private _latestSwapback; mapping(address => bool) private _excludedFromFees; bool private _swaping = false; TwoTierReferral.ReferralData private referralData; address public immutable pair; bool public claimEnabled; Vault public vault; mapping(address => uint256) public burneds; mapping(address => uint256) public totalLevel1Rewards; mapping(address => uint256) public totalLevel2Rewards; constructor() ERC20("BurnVault Cash", "BURN") { pair = IUniswapV2Factory(router.factory()).createPair( address(this), router.WETH() ); vault = new Vault(); _excludedFromFees[_msgSender()] = true; _excludedFromFees[address(this)] = true; _excludedFromFees[address(router)] = true; vault.excludeFromDividends(address(vault), true); vault.excludeFromDividends(address(pair), true); vault.excludeFromDividends(address(this), true); vault.excludeFromDividends(address(router), true); _mint(_msgSender(), INITIAL_SUPPLY); } modifier onSwap() { _swaping = true; _; _swaping = false; } function burn(uint256 amount) external { _burn(_msgSender(), amount); } function enableTrading() external onlyOwner { require(!_enabled, "enabled!"); _enabled = true; emit EnableTrading(); } function _transfer( address from, address to, uint256 amount ) internal override { if ( _excludedFromFees[from] || _excludedFromFees[to] || (to != pair && from != pair) || _swaping ) { super._transfer(from, to, amount); return; } require(_enabled, "Trading is not open"); if (_shouldSwapBack() && to == pair) { uint256 clog = balanceOf(address(this)); _swapTokenForETH(_min(clog, _maxSwapBackAmount)); } uint256 _totalFees = (amount * TAX) / PERCENT_DENOMINATOR; if (_totalFees > 0) { super._transfer(from, address(this), _totalFees); amount = amount - _totalFees; } super._transfer(from, to, amount); } function _min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function _shouldSwapBack() internal view returns (bool) { return block.timestamp - _latestSwapback > _swapbackDelay && balanceOf(address(this)) > 0; } function _swapTokenForETH(uint256 amount) private onSwap { _latestSwapback = block.timestamp; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), amount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(vault), block.timestamp ); emit SwapBack(amount); } function burn2vault(uint256 amountBurnt, address referrer) external { require(amountBurnt > 0, "Burn amount must be greater than 0"); uint256 amountDividend = (amountBurnt * INITIAL_SUPPLY) / (totalSupply() - amountBurnt); _burn(_msgSender(), amountBurnt); burneds[_msgSender()] += amountBurnt; vault.setBalance( _msgSender(), vault.balanceOf(_msgSender()) + amountDividend ); _processReferral(_msgSender(), referrer, amountDividend); emit Burn2Vault(_msgSender(), amountBurnt, amountDividend); } function _processReferral( address user, address referrer, uint256 amountDividend ) internal { uint256 level1Reward = (amountDividend * LEVEL1_REFERRAL_PERCENT) / PERCENT_DENOMINATOR; uint256 level2Reward = (amountDividend * LEVEL2_REFERRAL_PERCENT) / PERCENT_DENOMINATOR; if ( referrer == address(0) && referralData.getReferrer(user) == address(0) ) { vault.setBalance( DEFAULT_1, vault.balanceOf(DEFAULT_1) + level1Reward ); vault.setBalance( DEFAULT_2, vault.balanceOf(DEFAULT_2) + level2Reward ); return; } if (!referralData.isUserRegistered(user)) { referralData.registerUser(user); } if ( referrer != address(0) && !referralData.isUserRegistered(referrer) ) { referralData.registerUser(referrer); } address currentRef = referralData.getReferrer(user); if (currentRef == address(0)) { referralData.registerReferral(user, referrer); emit Referral(user, referrer); } else { referrer = currentRef; } if (referrer != address(0)) { if (level1Reward > 0) { vault.setBalance( referrer, vault.balanceOf(referrer) + level1Reward ); totalLevel1Rewards[referrer] += level1Reward; emit ReferralReward(referrer, user, level1Reward, 1); } address level2Referrer = referralData.getReferrer(referrer); if (level2Referrer != address(0)) { if (level2Reward > 0) { vault.setBalance( level2Referrer, vault.balanceOf(level2Referrer) + level2Reward ); totalLevel2Rewards[level2Referrer] += level2Reward; emit ReferralReward(level2Referrer, user, level2Reward, 2); } } else { vault.setBalance( DEFAULT_2, vault.balanceOf(DEFAULT_2) + level2Reward ); } } } function getTotalLv1(address user) external view returns (uint256) { return referralData.getDirectReferralCount(user); } function getTotalLv2(address user) external view returns (uint256) { return referralData.getIndirectReferralCount(user); } function getDirectReferrals( address user ) external view returns (address[] memory) { return referralData.getDirectReferrals(user); } function getReferrer(address user) external view returns (address) { return referralData.getReferrer(user); } function setClaimEnabled(bool enabled) external onlyOwner { claimEnabled = enabled; } function excludeFromDividends( address account, bool value ) public onlyOwner { vault.excludeFromDividends(account, value); } function updateVault(address newAddress) external onlyOwner { require(newAddress != address(0), "Zero address"); vault = Vault(payable(newAddress)); vault.excludeFromDividends(address(vault), true); vault.excludeFromDividends(address(pair), true); vault.excludeFromDividends(address(this), true); vault.excludeFromDividends(owner(), true); vault.excludeFromDividends(address(router), true); } function updateSwapBackDelay(uint256 delay) external onlyOwner { _swapbackDelay = delay; emit UpdateSwapBackDelay(delay); } function updateMaxSwapBackAmount(uint256 amount) external onlyOwner { require(amount > 0 && amount < INITIAL_SUPPLY / 50, "Invalid amount"); _maxSwapBackAmount = amount; emit UpdateMaxSwapBackAmount(amount); } function changeDefaultReferral( address default1, address default2 ) external onlyOwner { DEFAULT_1 = default1; DEFAULT_2 = default2; } function isExcludedFromFees(address wallet) external view returns (bool) { return _excludedFromFees[wallet]; } function excludedFromFees(address wallet, bool value) external onlyOwner { _excludedFromFees[wallet] = value; emit ExcludedFromFees(wallet, value); } function trackerRescueETH20Tokens( address tokenAddress, uint256 amount ) external onlyOwner { vault.trackerRescueETH20Tokens(_msgSender(), tokenAddress, amount); } function getAccountInfo( address account ) external view returns (uint256, uint256, uint256) { // withdrawableDividends // totalDividends // lastClaimTime return vault.getAccount(account); } function getTotalDistributed() external view returns (uint256) { return vault.totalDividendsDistributed(); } function claimable(address account) public view returns (uint256) { return vault.withdrawableDividendOf(account); } function claim() external { require(claimEnabled, "Claim not enabled"); vault.processAccount(payable(msg.sender)); } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.10; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {DividendPayingToken, IERC20} from "./DividendPayingToken.sol"; contract Vault is Ownable, DividendPayingToken { struct AccountInfo { address account; uint256 withdrawableDividends; uint256 totalDividends; uint256 lastClaimTime; } mapping(address => bool) public excludedFromDividends; mapping(address => uint256) public lastClaimTimes; event ExcludeFromDividends(address indexed account, bool value); event Claim(address indexed account, uint256 amount); constructor() DividendPayingToken("VAULTDividend", "VAULTDividend") {} function trackerRescueETH20Tokens( address recipient, address tokenAddress, uint256 amount ) external onlyOwner { if (tokenAddress == address(0)) { (bool success, ) = recipient.call{value: amount}(""); require(success, "Failed to send Ether"); } else { IERC20(tokenAddress).transfer(recipient, amount); } } function _transfer(address, address, uint256) internal pure override { require(false, "Dividend_Tracker: No transfers allowed"); } function excludeFromDividends( address account, bool value ) external onlyOwner { require(excludedFromDividends[account] != value); excludedFromDividends[account] = value; if (value == true) { _setBalance(account, 0); } else { _setBalance(account, balanceOf(account)); } emit ExcludeFromDividends(account, value); } function getAccount( address account ) public view returns (uint256, uint256, uint256) { AccountInfo memory info; info.withdrawableDividends = withdrawableDividendOf(account); info.totalDividends = accumulativeDividendOf(account); info.lastClaimTime = lastClaimTimes[account]; return ( info.withdrawableDividends, info.totalDividends, info.lastClaimTime ); } function setBalance( address account, uint256 newBalance ) external onlyOwner { if (excludedFromDividends[account]) { return; } _setBalance(account, newBalance); } function processAccount( address payable account ) external onlyOwner returns (bool) { uint256 amount = _withdrawDividendOfUser(account); if (amount > 0) { lastClaimTimes[account] = block.timestamp; emit Claim(account, amount); return true; } return false; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.10; library TwoTierReferral { struct ReferralData { mapping(address => address) referrers; mapping(address => address[]) referrals; mapping(address => uint256) directReferralCount; mapping(address => uint256) indirectReferralCount; mapping(address => bool) isRegistered; } function registerReferral( ReferralData storage self, address user, address referrer ) internal returns (bool success) { require(user != referrer, "Cannot refer yourself"); self.isRegistered[user] = true; if (referrer != address(0)) { self.referrers[user] = referrer; self.referrals[referrer].push(user); self.directReferralCount[referrer]++; address secondTierReferrer = self.referrers[referrer]; if (secondTierReferrer != address(0)) { self.indirectReferralCount[secondTierReferrer]++; } } return true; } function registerUser( ReferralData storage self, address user ) internal returns (bool success) { self.isRegistered[user] = true; return true; } function getReferrer( ReferralData storage self, address user ) internal view returns (address) { return self.referrers[user]; } function getSecondTierReferrer( ReferralData storage self, address user ) internal view returns (address) { address directReferrer = self.referrers[user]; if (directReferrer != address(0)) { return self.referrers[directReferrer]; } return address(0); } function getDirectReferrals( ReferralData storage self, address referrer ) internal view returns (address[] memory) { return self.referrals[referrer]; } function getDirectReferralCount( ReferralData storage self, address referrer ) internal view returns (uint256) { return self.directReferralCount[referrer]; } function getIndirectReferralCount( ReferralData storage self, address referrer ) internal view returns (uint256) { return self.indirectReferralCount[referrer]; } function isUserRegistered( ReferralData storage self, address user ) internal view returns (bool) { return self.isRegistered[user]; } function isDirectReferrer( ReferralData storage self, address referrer, address user ) internal view returns (bool) { return self.referrers[user] == referrer; } function isSecondTierReferrer( ReferralData storage self, address referrer, address user ) internal view returns (bool) { address directReferrer = self.referrers[user]; if (directReferrer != address(0)) { return self.referrers[directReferrer] == referrer; } return false; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.10; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {DividendPayingTokenInterface} from "./DividendPayingTokenInterface.sol"; import "./SafeMath.sol"; contract DividendPayingToken is ERC20, DividendPayingTokenInterface, Ownable { using SafeMath for uint256; using SafeMathUint for uint256; using SafeMathInt for int256; // With `magnitude`, we can properly distribute dividends even if the amount of received ether is small. // For more discussion about choosing the value of `magnitude`, // see https://github.com/ethereum/EIPs/issues/1726#issuecomment-472352728 uint256 internal constant magnitude = 2 ** 128; uint256 internal magnifiedDividendPerShare; // About dividendCorrection: // If the token balance of a `_user` is never changed, the dividend of `_user` can be computed with: // `dividendOf(_user) = dividendPerShare * balanceOf(_user)`. // When `balanceOf(_user)` is changed (via minting/burning/transferring tokens), // `dividendOf(_user)` should not be changed, // but the computed value of `dividendPerShare * balanceOf(_user)` is changed. // To keep the `dividendOf(_user)` unchanged, we add a correction term: // `dividendOf(_user) = dividendPerShare * balanceOf(_user) + dividendCorrectionOf(_user)`, // where `dividendCorrectionOf(_user)` is updated whenever `balanceOf(_user)` is changed: // `dividendCorrectionOf(_user) = dividendPerShare * (old balanceOf(_user)) - (new balanceOf(_user))`. // So now `dividendOf(_user)` returns the same value before and after `balanceOf(_user)` is changed. mapping(address => int256) internal magnifiedDividendCorrections; mapping(address => uint256) internal withdrawnDividends; uint256 public totalDividendsDistributed; uint256 public totalDividendsWithdrawn; constructor( string memory _name, string memory _symbol ) ERC20(_name, _symbol) {} receive() external payable { distributeLPDividends(msg.value); } function distributeLPDividends(uint256 amount) internal { if (amount > 0 && totalSupply() > 0) { magnifiedDividendPerShare = magnifiedDividendPerShare.add( (amount).mul(magnitude) / totalSupply() ); emit DividendsDistributed(msg.sender, amount); totalDividendsDistributed = totalDividendsDistributed.add(amount); } } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function withdrawDividend() public virtual override { _withdrawDividendOfUser(payable(msg.sender)); } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function _withdrawDividendOfUser( address payable user ) internal returns (uint256) { uint256 _withdrawableDividend = withdrawableDividendOf(user); if (_withdrawableDividend > 0) { withdrawnDividends[user] = withdrawnDividends[user].add( _withdrawableDividend ); totalDividendsWithdrawn += _withdrawableDividend; emit DividendWithdrawn(user, _withdrawableDividend); (bool success, ) = user.call{value: _withdrawableDividend}(""); if (!success) { withdrawnDividends[user] = withdrawnDividends[user].sub( _withdrawableDividend ); totalDividendsWithdrawn -= _withdrawableDividend; return 0; } return _withdrawableDividend; } return 0; } /// @notice View the amount of dividend in wei that an address can withdraw. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` can withdraw. function dividendOf(address _owner) public view override returns (uint256) { return withdrawableDividendOf(_owner); } /// @notice View the amount of dividend in wei that an address can withdraw. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` can withdraw. function withdrawableDividendOf( address _owner ) public view override returns (uint256) { return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); } /// @notice View the amount of dividend in wei that an address has withdrawn. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has withdrawn. function withdrawnDividendOf( address _owner ) public view override returns (uint256) { return withdrawnDividends[_owner]; } /// @notice View the amount of dividend in wei that an address has earned in total. /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) /// = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has earned in total. function accumulativeDividendOf( address _owner ) public view override returns (uint256) { return magnifiedDividendPerShare .mul(balanceOf(_owner)) .toInt256Safe() .add(magnifiedDividendCorrections[_owner]) .toUint256Safe() / magnitude; } /// @dev Internal function that transfer tokens from one address to another. /// Update magnifiedDividendCorrections to keep dividends unchanged. /// @param from The address to transfer from. /// @param to The address to transfer to. /// @param value The amount to be transferred. function _transfer( address from, address to, uint256 value ) internal virtual override { require(false); int256 _magCorrection = magnifiedDividendPerShare .mul(value) .toInt256Safe(); magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] .add(_magCorrection); magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( _magCorrection ); } /// @dev Internal function that mints tokens to an account. /// Update magnifiedDividendCorrections to keep dividends unchanged. /// @param account The account that will receive the created tokens. /// @param value The amount that will be created. function _mint(address account, uint256 value) internal override { super._mint(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } /// @dev Internal function that burns an amount of the token of a given account. /// Update magnifiedDividendCorrections to keep dividends unchanged. /// @param account The account whose tokens will be burnt. /// @param value The amount that will be burnt. function _burn(address account, uint256 value) internal override { super._burn(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _setBalance(address account, uint256 newBalance) internal { uint256 currentBalance = balanceOf(account); if (newBalance > currentBalance) { uint256 mintAmount = newBalance.sub(currentBalance); _mint(account, mintAmount); } else if (newBalance < currentBalance) { uint256 burnAmount = currentBalance.sub(newBalance); _burn(account, burnAmount); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.10; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @title SafeMathInt * @dev Math operations for int256 with overflow safety checks. */ library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } /** * @title SafeMathUint * @dev Math operations with safety checks that revert on error */ library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.10; interface DividendPayingTokenInterface { /// @notice View the amount of dividend in wei that an address can withdraw. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` can withdraw. function dividendOf(address _owner) external view returns (uint256); /// @notice Withdraws the ether distributed to the sender. /// @dev SHOULD transfer `dividendOf(msg.sender)` wei to `msg.sender`, and `dividendOf(msg.sender)` SHOULD be 0 after the transfer. /// MUST emit a `DividendWithdrawn` event if the amount of ether transferred is greater than 0. function withdrawDividend() external; /// @notice View the amount of dividend in wei that an address can withdraw. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` can withdraw. function withdrawableDividendOf( address _owner ) external view returns (uint256); /// @notice View the amount of dividend in wei that an address has withdrawn. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has withdrawn. function withdrawnDividendOf( address _owner ) external view returns (uint256); /// @notice View the amount of dividend in wei that an address has earned in total. /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has earned in total. function accumulativeDividendOf( address _owner ) external view returns (uint256); /// @dev This event MUST emit when ether is distributed to token holders. /// @param from The address which sends ether to this contract. /// @param weiAmount The amount of distributed ether in wei. event DividendsDistributed(address indexed from, uint256 weiAmount); /// @dev This event MUST emit when an address withdraws their dividend. /// @param to The address which withdraws ether from this contract. /// @param weiAmount The amount of withdrawn ether in wei. event DividendWithdrawn(address indexed to, uint256 weiAmount); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ 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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
{ "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dividendAmount","type":"uint256"}],"name":"Burn2Vault","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"ExcludedFromFees","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Referral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"ReferralReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBack","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UpdateMaxSwapBackAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"UpdateRewardAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"UpdateSwapBackDelay","type":"event"},{"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBurnt","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"name":"burn2vault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"burneds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"default1","type":"address"},{"internalType":"address","name":"default2","type":"address"}],"name":"changeDefaultReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDirectReferrals","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getTotalLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getTotalLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setClaimEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalLevel1Rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalLevel2Rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"trackerRescueETH20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","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":"amount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxSwapBackAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"updateSwapBackDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract Vault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100060bcb411117554b09fd6274ff1bbeb133a118d7d99d076bc1439dd7bb3900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x0002000000000002000a000000000002000100000001035500000060031002700000055c0030019d0000000100200190000000240000c13d0000055c023001970000008003000039000000400030043f000000040020008c0000004d0000413d000000000301043b000000e003300270000005860030009c000000510000213d000005a20030009c0000006b0000213d000005b00030009c000000b60000213d000005b70030009c0000015d0000a13d000005b80030009c0000026b0000613d000005b90030009c000004b40000613d000005ba0030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000000301000039000000000101041a000000800010043f000005bd01000041000015690001042e000000a001000039000000400010043f0000000001000416000000000001004b000010ea0000c13d0000000e01000039000000a00010043f0000055d01000041000000c00010043f0000012001000039000000400010043f0000000401000039000000e00010043f0000055e01000041000001000010043f0000000006000411000000000100041a0000055f02100197000000000262019f000000000020041b000000000200041400000560051001970000055c0020009c0000055c02008041000000c00120021000000561011001c70000800d02000039000000030300003900000562040000411568155e0000040f0000000100200190000010ea0000613d000000a00800043d000005630080009c0000008e0000413d000005e301000041000000000010043f0000004101000039000000040010043f000005db010000410000156a00010430000000000002004b000010ea0000c13d0000000001000019000015690001042e000005870030009c0000009e0000213d000005950030009c000000c50000213d0000059c0030009c000001800000a13d0000059d0030009c000002860000613d0000059e0030009c000004f00000613d0000059f0030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000001001000039000000200010043f0000000001000414000004040000013d000005a30030009c000001020000213d000005aa0030009c000001980000a13d000005ab0030009c000002a10000613d000005ac0030009c000005370000613d000005ad0030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a0000056001100197000005620000013d0000000407000039000000000107041a000000010210019000000001031002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000012004b000001250000613d000005e301000041000000000010043f0000002201000039000000040010043f000005db010000410000156a00010430000005880030009c0000014e0000213d0000058f0030009c000001dc0000a13d000005900030009c000002b70000613d000005910030009c000005560000613d000005920030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000001301000039000000200010043f0000000001000414000004040000013d000005b10030009c000001ee0000a13d000005b20030009c000002c50000613d000005b30030009c000005690000613d000005b40030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000001201000039000000800010043f000005bd01000041000015690001042e000005960030009c000002280000a13d000005970030009c000002d30000613d000005980030009c000005740000613d000005990030009c000010ea0000c13d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000101043b000700000001001d0000000001000411000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000000070210006c00000ac20000813d000000400100043d0000006402100039000005c80300004100000000003204350000004402100039000005c90300004100000000003204350000002402100039000000250300003900000b300000013d000005a40030009c000002340000a13d000005a50030009c000002eb0000613d000005a60030009c0000058a0000613d000005a70030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000000000200041a00000560022001970000000003000411000000000032004b000005c00000c13d000000010210008a000005d50020009c000008da0000813d0000000802000039000000000012041b000000800010043f00000000010004140000055c0010009c0000055c01008041000000c001100210000005d7011001c70000800d020000390000000103000039000005d8040000410000054e0000013d000000200030008c000001450000413d000700000003001d000800000008001d000000000070043f00000000010004140000055c0010009c0000055c01008041000000c00110021000000564011001c70000801002000039156815630000040f0000000100200190000010ea0000613d00000008080000290000001f028000390000000502200270000000200080008c0000000002004019000000000301043b00000007010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000407000039000001450000813d000000000002041b0000000102200039000000000012004b000001410000413d0000001f0080008c0000000101800210000002610000a13d000000000070043f000005f804800198000005c90000c13d00000020030000390000056502000041000005d50000013d000005890030009c000002530000a13d0000058a0030009c000003250000613d0000058b0030009c000005a40000613d0000058c0030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000001201000039000000000101041a0000000801100270000002300000013d000005bb0030009c000003410000613d000005bc0030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000000403000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000000980000c13d000000800010043f000000000004004b0000062e0000613d000000000030043f000000000001004b000005880000613d000005650200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000001770000413d00000ab10000013d000005a00030009c000003920000613d000005a10030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d000000000100041a00000560021001970000000005000411000000000052004b000005c00000c13d0000055f01100197000000000010041b00000000010004140000055c0010009c0000055c01008041000000c001100210000005be011001c70000800d020000390000000303000039000005620400004100000000060000190000054e0000013d000005ae0030009c000003a00000613d000005af0030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d0000001202000039000000000202041a000005ef03000041000000800030043f000000840010043f0000000001000414000000080220027000000560022001970000055c0010009c0000055c01008041000000c001100210000005d3011001c7156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000080046001bf000001c10000613d0000008007000039000000000801034f000000008908043c0000000007970436000000000047004b000001bd0000c13d000000000005004b000001ce0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000003180000c13d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001d70000c13d000009050000013d000005930030009c000003f70000613d000005940030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000000001000412000a00000001001d000900000000003d0000800501000039000000440300003900000000040004150000000a0440008a0000000504400210000005c202000041156815400000040f000002300000013d000005b50030009c0000040f0000613d000005b60030009c000010ea0000c13d000000640020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002402100370000000000202043b000700000002001d000005600020009c000010ea0000213d0000004401100370000000000101043b000600000001001d0000000801000029000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d0000000002000411000000000101043b0000056002200197000500000002001d000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000005f90010009c00000b110000c13d000000080100002900000007020000290000000603000029000005600000013d0000059a0030009c0000045f0000613d0000059b0030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d000000000100041a0000056001100197000000800010043f000005bd01000041000015690001042e000005a80030009c000004770000613d000005a90030009c000010ea0000c13d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000000ff001001900000000001000039000000010100c039000005620000013d0000058d0030009c000004880000613d0000058e0030009c000010ea0000c13d0000000001000416000000000001004b000010ea0000c13d0000000001020019156812220000040f000800000002001d156812010000040f0000000802000029156812120000040f0000040d0000013d000000000008004b0000000002000019000002650000613d000000c00200043d0000000303800210000005f90330027f000005f903300167000000000232016f000000000112019f000005e00000013d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000301043b00000000010004110000056001100198000008cc0000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000002401000039000000a40010043f000005f301000041000000c40010043f000005f201000041000000e40010043f000005c1010000410000156a00010430000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000005600020009c000010ea0000213d0000002401100370000000000101043b000005600010009c000010ea0000213d000000000300041a00000560033001970000000004000411000000000043004b000005c00000c13d0000000603000039000000000403041a0000055f04400197000000000224019f000000000023041b0000000702000039000000000302041a0000055f03300197000002e70000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000201043b00000000010004110000056001100198000006400000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000002101000039000000a40010043f000005ed01000041000000c40010043f000005ee01000041000000e40010043f000005c1010000410000156a00010430000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000000f01000039000000200010043f0000000001000414000004040000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000001501000039000000200010043f0000000001000414000004040000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000000000001004b0000000002000039000000010200c039000000000021004b000010ea0000c13d000000000200041a00000560022001970000000003000411000000000032004b000005c00000c13d0000001202000039000000000302041a000005fa03300197000000000113019f000000000012041b000005cc01000041000015690001042e0000000001000416000000000001004b000010ea0000c13d0000001201000039000000000101041a000005e602000041000000800020043f0000000003000414000000080110027000000560021001970000055c0030009c0000055c03008041000000c001300210000005e7011001c7156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000080046001bf000003090000613d0000008007000039000000000801034f000000008908043c0000000007970436000000000047004b000003050000c13d000000000005004b000003160000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000006220000613d0000001f0130003900000571011001970000008001100039000000400010043f000000200030008c000010ea0000413d000000800200043d00000000002104350000055c0010009c0000055c010080410000004001100210000005c6011001c7000015690001042e000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000800000001001d000005600010009c000010ea0000213d000000000100041a00000560011001970000000002000411000000000021004b000005c00000c13d0000000804000029000000000004004b000009240000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000000c01000039000000a40010043f000005c401000041000000c40010043f000005c5010000410000156a00010430000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000201043b000000000002004b0000000001000039000000010100c039000700000002001d000000000012004b000010ea0000c13d000000000100041a00000560011001970000000002000411000000000021004b000005c00000c13d0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000600000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000070200002900000000002104350000057e0100004100000000001304350000000401300039000000080200002900000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000006020000291568155e0000040f00000060031002700000055c033001970000000100200190000004520000c13d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000038d0000c13d000009050000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000000101000039000000200010043f0000000001000414000004040000013d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000101043b000700000001001d0000000001000411000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000010200008a000000070220014f000000000101043b000000000301041a000000000023004b0000091e0000213d0000000001000411000005600110019800000ac50000613d000600000003001d000000080000006b00000b270000613d000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d00000006030000290000000702300029000000000101043b000000000021041b000000400100043d00000000002104350000055c0010009c0000055c010080410000004001100210000000000200041400000a970000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000001401000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000005620000013d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000301043b000000000100041a00000560011001970000000002000411000000000021004b000005c00000c13d000600000003001d0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000700000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d000000440130003900000006020000290000000000210435000000240130003900000008020000290000000000210435000005f50100004100000000001304350000000401300039000000000200041100000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000585011001c700000007020000291568155e0000040f00000060031002700000055c03300197000000010020019000000b3b0000613d0000001f01300039000005710210019700000008010000290000000001120019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000005520000013d0000000001000416000000000001004b000010ea0000c13d000000000100041a00000560011001970000000002000411000000000021004b000005c00000c13d0000000701000039000000000201041a000005cd00200198000008e40000c13d000005cf02200197000005d0022001c7000000000021041b00000000010004140000055c0010009c0000055c01008041000000c001100210000005be011001c70000800d020000390000000103000039000005d1040000410000054e0000013d0000000001000416000000000001004b000010ea0000c13d0000001201000039000000000101041a000000ff00100190000006590000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000001101000039000000a40010043f000005e901000041000000c40010043f000005c5010000410000156a00010430000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d000000000010043f0000000e01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000301041a000000400200043d000800000002001d000600000003001d0000000002320436000700000002001d000000000010043f00000000010004140000055c0010009c0000055c01008041000000c00110021000000564011001c70000801002000039156815630000040f0000000100200190000010ea0000613d0000000605000029000000000005004b00000acf0000c13d0000000806000029000000070400002900000ada0000013d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000002401100370000000000201043b000000000002004b0000000001000039000000010100c039000700000002001d000000000012004b000010ea0000c13d000000000100041a00000560011001970000000002000411000000000021004b000005c00000c13d0000000801000029000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa022001970000000703000029000000000232019f000000000021041b000000400100043d00000020021000390000000000320435000000080200002900000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000057a011001c70000800d020000390000000103000039000005f6040000410000054e0000013d000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000101043b000005600010009c000010ea0000213d0000001202000039000000000202041a000005d203000041000000800030043f000000840010043f0000000001000414000000080220027000000560022001970000055c0010009c0000055c01008041000000c001100210000005d3011001c7156815630000040f00000060031002700000055c03300197000000600030008c000000600400003900000000040340190000001f0540018f000000600640019000000080046001bf0000008009000039000005150000613d000000000701034f000000007807043c0000000009890436000000000049004b000005110000c13d000000000005004b000005220000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000008fa0000613d0000001f0130003900000571021001970000008001200039000000400010043f000000600030008c000010ea0000413d000000a00300043d000000c00400043d000000800500043d0000000000510435000000c0052000390000000000450435000000a00220003900000000003204350000055c0010009c0000055c010080410000004001100210000005d4011001c7000015690001042e000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d000000000200041a00000560022001970000000003000411000000000032004b000005c00000c13d0000000401100370000000000101043b0000000902000039000000000012041b000000800010043f00000000010004140000055c0010009c0000055c01008041000000c001100210000005d7011001c70000800d020000390000000103000039000005ea040000411568155e0000040f0000000100200190000010ea0000613d000000400100043d0000055c0010009c0000055c010080410000004001100210000015690001042e0000000001000416000000000001004b000010ea0000c13d0000000001020019156811f30000040f00000000030100190000000004020019000000000100041100000000020300190000000003040019156812320000040f0000000101000039000000400200043d00000000001204350000055c0020009c0000055c020080410000004001200210000005c6011001c7000015690001042e0000000001000416000000000001004b000010ea0000c13d0000001201000039000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f000005bd01000041000015690001042e0000000001000416000000000001004b000010ea0000c13d0000000503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000000980000c13d000000800010043f000000000004004b0000062e0000613d000000000030043f000000000001004b00000aa70000c13d0000002001000039000006310000013d000000440020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000002402100370000000000202043b000800000002001d000005600020009c000010ea0000213d0000000401100370000000000201043b000000000002004b000009180000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000002201000039000000a40010043f000005e401000041000000c40010043f000005e501000041000000e40010043f000005c1010000410000156a00010430000000240020008c000010ea0000413d0000000002000416000000000002004b000010ea0000c13d0000000401100370000000000601043b000005600060009c000010ea0000213d000000000100041a00000560021001970000000005000411000000000052004b000005c00000c13d000000000006004b00000ab60000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f000005bf01000041000000c40010043f000005c001000041000000e40010043f000005c1010000410000156a000104300000058401000041000000800010043f0000002001000039000000840010043f000000a40010043f000005f701000041000000c40010043f000005c5010000410000156a0001043000000565020000410000002003000039000000010540008a0000000505500270000005660550009a000000a0063000390000000006060433000000000062041b00000020033000390000000102200039000000000052004b000005ce0000c13d000000000084004b000005df0000813d0000000304800210000000f80440018f000005f90440027f000005f904400167000000a0033000390000000003030433000000000343016f000000000032041b00000001011001bf000000000017041b000000e00700043d000005670070009c000000470000213d0000000506000039000000000106041a000000010010019000000001031002700000007f0330618f0000001f0030008c00000000020000390000000102002039000000000121013f0000000100100190000000980000c13d000000200030008c0000060f0000413d000700000003001d000800000007001d000000000060043f00000000010004140000055c0010009c0000055c01008041000000c00110021000000564011001c70000801002000039156815630000040f0000000100200190000010ea0000613d00000008070000290000001f027000390000000502200270000000200070008c0000000002004019000000000301043b00000007010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000005060000390000060f0000813d000000000002041b0000000102200039000000000012004b0000060b0000413d000000200070008c000006170000413d000000000060043f000005f803700198000006910000c13d000000200200003900000568010000410000069d0000013d000000000007004b0000000001000019000006a90000613d0000000301700210000005f90110027f000005f901100167000001000200043d000000000112016f0000000102700210000000000121019f000006a90000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000006290000c13d000009050000013d000005fa01200197000000a00010043f00000040010000390000008001100039000800000001001d000000400010043f0000008002000039156811dd0000040f000000080200002900000000012100490000055c0010009c0000055c0100804100000060011002100000055c0020009c0000055c020080410000004002200210000000000121019f000015690001042e000800000002001d000700000001001d000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000000080110006c00000a4e0000813d000000400100043d0000006402100039000005eb0300004100000000003204350000004402100039000005ec0300004100000b2d0000013d000005e802000041000000800020043f00000000020004110000056002200197000000840020043f0000000003000414000000080110027000000560021001970000055c0030009c0000055c03008041000000c001300210000005d3011001c71568155e0000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000080046001bf000006750000613d0000008007000039000000000801034f000000008908043c0000000007970436000000000047004b000006710000c13d000000000005004b000006820000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000008ee0000613d0000001f0130003900000571011001970000008001100039000000400010043f000000200030008c000010ea0000413d000000800200043d000000000002004b0000000003000039000000010300c039000000000032004b000005520000613d000010ea0000013d00000568010000410000002002000039000000010430008a0000000504400270000005690440009a000000e0052000390000000005050433000000000051041b00000020022000390000000101100039000000000041004b000006960000c13d000000000073004b000006a70000813d0000000303700210000000f80330018f000005f90330027f000005f903300167000000e0022000390000000002020433000000000232016f000000000021041b000000010170021000000001011001bf000000000016041b0000000601000039000000000201041a0000055f022001970000056a022001c7000000000021041b0000000701000039000000000201041a0000055f022001970000056b022001c7000000000021041b0000056c010000410000000802000039000000000012041b00000009010000390000000302000039000000000021041b0000000c01000039000000000201041a000005fa02200197000000000021041b0000056d01000041000000400200043d000800000002001d00000000001204350000055c0020009c0000055c010000410000000001024019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000056e011001c70000056f02000041156815630000040f000000080a00002900000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000000046a0019000006de0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000006da0000c13d000000000005004b000006eb0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000008c00000613d0000001f0130003900000571011001970000000002a10019000000000012004b00000000010000390000000101004039000005670020009c000000470000213d0000000100100190000000470000c13d000700000002001d000000400020043f000000200030008c000010ea0000413d00000000010a0433000800000001001d000005600010009c000010ea0000213d0000057201000041000000070200002900000000001204350000055c0020009c0000055c010000410000000001024019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000056e011001c70000056f02000041156815630000040f000000070a00002900000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000000046a00190000071e0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000071a0000c13d000000000005004b0000072b0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000010020019000000b050000613d0000001f0130003900000571011001970000000001a10019000005670010009c000000470000213d000600000001001d000000400010043f000000200030008c000010ea0000413d00000007010000290000000001010433000005600010009c000010ea0000213d00000006030000290000002402300039000000000012043500000573010000410000000000130435000000000100041000000560021001970000000401300039000700000002001d00000000002104350000055c0030009c0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000008020000291568155e0000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000006046000290000075f0000613d000000000701034f0000000608000029000000007907043c0000000008980436000000000048004b0000075b0000c13d000000000005004b0000076c0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000010020019000000d980000613d0000001f0130003900000571011001970000000601100029000005670010009c000000470000213d000000400010043f000000200030008c000010ea0000413d00000006020000290000000002020433000005600020009c000010ea0000213d000000800020043f000005750010009c000000470000213d00000024021000390000055b03000041000000000032043500000044021000390000000003000414000000600400003900000000004204350000057602000041000000000021043500000064021000390000000000020435000000040210003900000000000204350000055c0010009c0000055c0100804100000040011002100000055c0030009c0000055c03008041000000c002300210000000000121019f00000577011001c700008006020000391568155e0000040f000000010020019000000dbc0000613d00000000020000310000000103200367000000000101043b000000000001004b000000000200001900000dbf0000613d000000080110021000000578011001970000001203000039000000000203041a0000057902200197000000000112019f000000000013041b00000000010004110000056001100197000800000001001d000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa0220019700000001022001bf000000000021041b0000000701000029000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa0220019700000001022001bf000000000021041b0000056f01000041000000000010043f0000000b01000039000000200010043f0000057b01000041000000000201041a000005fa0220019700000001022001bf000000000021041b0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000600000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e0100004100000000001304350000000401300039000000060200002900000000002104350000055c0030009c000500000003001d0000055c010000410000000001034019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f00000574011001c71568155e0000040f00000060031002700000055c03300197000000010020019000000e010000613d0000001f0130003900000571021001970000000501200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a000000800200043d000500000002001d0000057c02000041000000000020044300000008011002700000056001100197000600000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000005010000290000056001100197000000400400043d0000002402400039000000010300003900000000003204350000057e020000410000000000240435000000040240003900000000001204350000055c0040009c000500000004001d0000055c010000410000000001044019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000121019f00000574011001c700000006020000291568155e0000040f00000060031002700000055c03300197000000010020019000000e590000613d0000001f0130003900000571021001970000000501200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000600000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e0100004100000000001304350000000401300039000000070200002900000000002104350000055c0030009c000700000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000121019f00000574011001c700000006020000291568155e0000040f00000060031002700000055c033001970000000100200190000010000000613d0000001f0130003900000571021001970000000701200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000700000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e01000041000000000013043500000004013000390000056f0200004100000000002104350000055c0030009c000600000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000121019f00000574011001c700000007020000291568155e0000040f00000060031002700000055c033001970000000100200190000011040000613d0000001f0130003900000571021001970000000601200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000080000006b000011850000c13d00000044021000390000058303000041000000000032043500000024021000390000001f0300003900000b190000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008c70000c13d000009050000013d000000080000006b00000a740000c13d0000058401000041000000800010043f0000002001000039000000840010043f0000002201000039000000a40010043f000005f101000041000000c40010043f000005f001000041000000e40010043f000005c1010000410000156a000104300000058401000041000000800010043f0000002001000039000000840010043f0000000e01000039000000a40010043f000005d601000041000000c40010043f000005c5010000410000156a000104300000058401000041000000800010043f0000002001000039000000840010043f0000000801000039000000a40010043f000005ce01000041000000c40010043f000005c5010000410000156a000104300000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008f50000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000009010000c13d000000000005004b000009120000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000055c0020009c0000055c020080410000004002200210000000000112019f0000156a00010430000005d90020009c0000091e0000213d0000000301000039000000000101041a000000000121004b00000afe0000813d000005e301000041000000000010043f0000001101000039000000040010043f000005db010000410000156a000104300000001203000039000000000103041a00000579011001970000000802400210000000000121019f000000000013041b0000057c010000410000000000100443000000040040044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e0100004100000000001304350000000401300039000000080200002900000000002104350000055c0030009c000700000003001d0000055c010000410000000001034019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f00000574011001c71568155e0000040f00000060031002700000055c03300197000000010020019000000d690000613d0000001f0130003900000571021001970000000701200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000800000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400200043d0000057e01000041000700000002001d0000000000120435000005c201000041000000000010044300000000010004120000000400100443000000240000044300000000010004140000055c0010009c0000055c01008041000000c001100210000005c3011001c70000800502000039156815630000040f0000000100200190000011780000613d000000000101043b00000007040000290000002402400039000000010300003900000000003204350000056001100197000000040240003900000000001204350000055c0040009c0000055c010000410000000001044019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000008020000291568155e0000040f00000060031002700000055c03300197000000010020019000000da40000613d0000001f0130003900000571021001970000000701200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000800000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e01000041000000000013043500000000010004100000056001100197000000040230003900000000001204350000055c0030009c000700000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000008020000291568155e0000040f00000060031002700000055c03300197000000010020019000000ddd0000613d0000001f0130003900000571021001970000000701200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a000000000200041a000700000002001d0000057c02000041000000000020044300000008011002700000056001100197000800000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000007010000290000056001100197000000400400043d0000002402400039000000010300003900000000003204350000057e020000410000000000240435000000040240003900000000001204350000055c0040009c000700000004001d0000055c010000410000000001044019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000008020000291568155e0000040f00000060031002700000055c03300197000000010020019000000de90000613d0000001f0130003900000571021001970000000701200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000001201000039000000000101041a0000057c02000041000000000020044300000008011002700000056001100197000800000001001d000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d000000400300043d0000002401300039000000010200003900000000002104350000057e01000041000000000013043500000004013000390000056f0200004100000000002104350000055c0030009c000700000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000008020000291568155e0000040f00000060031002700000055c03300197000000010020019000000e4d0000613d0000001f0130003900000571021001970000000701000029000004550000013d000600000001001d0000000701000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000602000029000000000021041b0000000303000039000000000103041a00000008020000290000000001210049000000000013041b000000400100043d00000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d020000390000058104000041000000000500041100000000060000190000054e0000013d000700000003001d000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000702000029000000000021041b000000400100043d00000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d020000390000000303000039000005c704000041000000000500041100000008060000291568155e0000040f0000000100200190000010ea0000613d000000400100043d00000001020000390000031f0000013d000005680200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b00000aa90000413d0000005f01300039000005f801100197000005cb0010009c000000470000213d000006310000013d0000055f01100197000000000161019f000000000010041b00000000010004140000055c0010009c0000055c01008041000000c001100210000005be011001c70000800d02000039000000030300003900000562040000410000054e0000013d0000000001000411000005600110019800000b240000c13d000000400100043d0000006402100039000005f20300004100000000003204350000004402100039000005f30300004100000000003204350000002402100039000000240300003900000b300000013d000000000101043b000000000200001900000008060000290000000704000029000000000301041a0000056003300197000000000434043600000001011000390000000102200039000000000052004b00000ad30000413d00000000016400490000001f01100039000005f8021001970000000001620019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f00000020020000390000000002210436000000000306043300000000003204350000004002100039000000000003004b00000af50000613d000000000400001900000020066000390000000005060433000005600550019700000000025204360000000104400039000000000034004b00000aee0000413d00000000021200490000055c0020009c0000055c0200804100000060022002100000055c0010009c0000055c010080410000004001100210000000000112019f000015690001042e00000b470000c13d000005e301000041000000000010043f0000001201000039000000040010043f000005db010000410000156a000104300000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b0c0000c13d000009050000013d000400060010007400000d340000813d000000400100043d0000004402100039000005f403000041000000000032043500000024021000390000001d030000390000000000320435000005840200004100000000002104350000000402100039000000200300003900000000003204350000055c0010009c0000055c01008041000000400110021000000585011001c70000156a00010430000700000002001d000000080000006b00000d750000c13d000000400100043d0000006402100039000005f00300004100000000003204350000004402100039000005f1030000410000000000320435000000240210003900000022030000390000000000320435000005840200004100000000002104350000000402100039000000200300003900000000003204350000055c0010009c0000055c010080410000004001100210000005ca011001c70000156a000104300000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b420000c13d000009050000013d000600000001001d000700000002001d00000000010004110000056001100198000002ab0000613d000500000001001d000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a0004000700100074000006520000413d0000000501000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000402000029000000000021041b0000000303000039000000000103041a00000007020000290000000001210049000000000013041b000000400100043d00000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d020000390000058104000041000000000500041100000000060000191568155e0000040f0000000100200190000010ea0000613d0000000501000029000000000010043f0000001301000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d0000000704000029000005f903400167000000000101043b000000000201041a000000000032004b0000091e0000213d0000000002420019000000000021041b0000001201000039000000000201041a000000400400043d000400000004001d000005da0100004100000000001404350000000401400039000000050300002900000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000300000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000040a000029000000040460002900000bc00000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000bbc0000c13d000000000005004b00000bcd0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000010020019000000db00000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000200030008c000010ea0000413d000000070100002900000580011000d10006000600100102000000010200008a000000060120014f00000000020a0433000400000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000301000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000004020000290000000601200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000050200002900000000002104350000055c0030009c000400000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000003020000291568155e0000040f00000060031002700000055c03300197000000010020019000000df50000613d0000001f0130003900000571021001970000000401200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000000601000029000005dd0010009c0000091e0000213d000000060100002900030032001001220004001400100122000000080000006b00000e0d0000c13d0000000501000029000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000005600010019800000e0d0000c13d0000001201000039000000000201041a0000000601000039000000000101041a000000400400043d000800000004001d000005da03000041000000000034043500000560031001970000000401400039000200000003001d00000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000500000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000080a000029000000080460002900000c5e0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000c5a0000c13d000000000005004b00000c6b0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000010020019000000e890000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000200030008c000010ea0000413d000000010100008a000000040110014f00000000020a0433000800000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000501000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000008020000290000000401200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000020200002900000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000005020000291568155e0000040f00000060031002700000055c033001970000000100200190000010f80000613d0000001f0130003900000571011001970000000802100029000000000012004b00000000010000390000000101004039000800000002001d000005670020009c000000470000213d0000000100100190000000470000c13d0000000804000029000000400040043f0000001201000039000000000201041a0000000701000039000000000101041a000005da03000041000000000034043500000560031001970000000401400039000400000003001d00000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000500000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000080460002900000cdf0000613d000000000701034f0000000808000029000000007907043c0000000008980436000000000048004b00000cdb0000c13d000000000005004b00000cec0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000011790000613d0000001f0130003900000571011001970000000801100029000005670010009c000000470000213d000000400010043f000000200030008c000010ea0000413d000000010100008a000000030110014f00000008020000290000000002020433000800000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000501000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000008020000290000000301200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000040200002900000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000005020000291568155e0000040f00000060031002700000055c03300197000000010020019000000f490000c13d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d2f0000c13d000009050000013d000000080000006b00000ac50000613d000000050000006b00000b270000613d0000000801000029000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000502000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000402000029000000000021041b000000400100043d00000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d020000390000000303000039000005c704000041000000080500002900000000060004111568155e0000040f0000000100200190000002240000c13d000010ea0000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d700000c13d000009050000013d000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000702000029000000000021041b000000400100043d00000000002104350000055c0010009c0000055c010080410000004001100210000000000200041400000a970000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d9f0000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dab0000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000db70000c13d000009050000013d00000060021002700000055c02200197000000000301034f0000001f0520018f0000057006200198000000400100043d000000000461001900000dca0000613d000000000703034f0000000008010019000000007907043c0000000008980436000000000048004b00000dc60000c13d000000000005004b00000dd70000613d000000000363034f0000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f000000000034043500000060022002100000055c0010009c0000055c010080410000004001100210000000000121019f0000156a000104300000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000de40000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000df00000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dfc0000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e080000c13d000009050000013d0000000501000029000000000010043f0000001101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000000ff0010019000000e300000c13d0000000501000029000000000010043f0000001101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa0220019700000001022001bf000000000021041b000000080000006b00000e650000c13d0000000501000029000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000205600010019c00000ebe0000c13d0000000502000029000000080020006c00000e950000c13d000000400100043d0000004402100039000005e10300004100000000003204350000002402100039000000150300003900000b190000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e540000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e600000c13d000009050000013d0000000801000029000000000010043f0000001101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000000ff0010019000000e320000c13d0000000801000029000000000010043f0000001101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa0220019700000001022001bf000000000021041b00000e320000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e900000c13d000009050000013d0000000501000029000000000010043f0000001101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000005fa0220019700000001022001bf000000000021041b000000080000006b0000102f0000c13d000000400100043d0000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f000005de011001c70000800d020000390000000303000039000005df04000041000000000500041100000008060000291568155e0000040f0000000100200190000010ea0000613d000000080000006b000200080000002d0000101b0000613d0000000601000029000000140010008c00000f550000813d0000000201000029000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000805600010019c000010180000c13d0000001201000039000000000201041a0000000701000039000000000101041a000000400400043d000800000004001d000005da03000041000000000034043500000560031001970000000401400039000400000003001d00000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000500000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000080a000029000000080460002900000efc0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000ef80000c13d000000000005004b00000f090000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001002001900000109b0000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000200030008c000010ea0000413d000000010100008a000000030110014f00000000020a0433000800000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000501000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000008020000290000000301200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000040200002900000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000005020000291568155e0000040f00000060031002700000055c033001970000000100200190000011c50000613d0000001f0130003900000571021001970000000801200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000101b0000013d0000001201000039000000000201041a000000400400043d000800000004001d000005da0100004100000000001404350000000401400039000000020300002900000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000500000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000080a000029000000080460002900000f7c0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000f780000c13d000000000005004b00000f890000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001002001900000100c0000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000200030008c000010ea0000413d000000010100008a000000040110014f00000000020a0433000100000001001d000800000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000501000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000008020000290000000401200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000020200002900000000002104350000055c0030009c000800000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000005020000291568155e0000040f00000060031002700000055c033001970000000100200190000011b90000613d0000001f0130003900000571021001970000000801200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000000201000029000000000010043f0000001401000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000000010020006c0000091e0000213d00000004040000290000000002420019000000000021041b000000400100043d00000020021000390000000103000039000000000032043500000000004104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000057a011001c70000800d020000390000000303000039000005e004000041000000020500002900000000060004111568155e0000040f000000010020019000000ec10000c13d000010ea0000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010070000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010130000c13d000009050000013d0000000601000029000000320010008c000010a70000813d000000400100043d000000200210003900000006030000290000000000320435000000070200002900000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000057a011001c70000800d020000390000000203000039000005e20400004100000000050004110000054e0000013d0000000501000029000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a0000055f022001970000000803000029000000000232019f000000000021041b000000000030043f0000000e01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000200000002001d000005670020009c000000470000213d00000002020000290000000102200039000000000021041b000000000010043f00000000010004140000055c0010009c0000055c01008041000000c00110021000000564011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b0000000201100029000000000201041a0000055f0220019700000005022001af000000000021041b0000000801000029000000000010043f0000000f01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000000010220003a0000091e0000613d000000000021041b0000000801000029000000000010043f0000000d01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000101041a000005600110019800000ea90000613d000000000010043f0000001001000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000000010220003a0000091e0000613d000000000021041b00000ea90000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010a20000c13d000009050000013d0000001201000039000000000201041a000000400400043d000500000004001d000005da0100004100000000001404350000000401400039000000080300002900000000003104350000055c0040009c0000055c010000410000000001044019000000400110021000000000030004140000055c0030009c0000055c03008041000000c003300210000000000113019f000005db011001c700000008022002700000056002200197000400000002001d156815630000040f00000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002006400190000000050a0000290000000504600029000010ce0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000010ca0000c13d000000000005004b000010db0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000010ec0000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f000000200030008c000011100000813d00000000010000190000156a000104300000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010f30000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010ff0000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000110b0000c13d000009050000013d000000010100008a000000030110014f00000000020a0433000200000001001d000500000002001d000000000012004b0000091e0000213d0000057c0100004100000000001004430000000401000029000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000011780000613d000000000101043b000000000001004b000010ea0000613d00000005020000290000000301200029000000400300043d00000024023000390000000000120435000005dc0100004100000000001304350000000401300039000000080200002900000000002104350000055c0030009c000500000003001d0000055c010000410000000001034019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000574011001c700000004020000291568155e0000040f00000060031002700000055c033001970000000100200190000011d10000613d0000001f0130003900000571021001970000000501200029000000000021004b00000000020000390000000102004039000005670010009c000000470000213d0000000100200190000000470000c13d000000400010043f0000000801000029000000000010043f0000001501000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a000000020020006c0000091e0000213d00000003040000290000000002420019000000000021041b000000400100043d00000020021000390000000203000039000000000032043500000000004104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000057a011001c70000800d020000390000000303000039000005e004000041000000080500002900000000060004111568155e0000040f00000001002001900000101b0000c13d000010ea0000013d000000000001042f0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011800000c13d000009050000013d0000000301000039000000000101041a0000057f0110009c0000091e0000813d0000000302000039000000000012041b0000000801000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000010ea0000613d000000000101043b000000000201041a0000057f0220009a000000000021041b0000058001000041000000400200043d00000000001204350000055c0020009c0000055c02008041000000400120021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d0200003900000003030000390000058104000041000000000500001900000000060004111568155e0000040f0000000100200190000010ea0000613d000000800100043d0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000058201000041000015690001042e0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011c00000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011cc0000c13d000009050000013d0000001f0530018f0000057006300198000000400200043d0000000004620019000009050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011d80000c13d000009050000013d0000002003000039000000000431043600000000320204340000000000240435000000000002004b0000004001100039000011ef0000613d000000000400001900000000054100190000000006430019000000000606043300000000006504350000002004400039000000000024004b000011e50000413d000011ef0000a13d000000000321001900000000000304350000001f02200039000005f8022001970000000001210019000000000001042d000005fb0010009c000011ff0000213d000000430010008c000011ff0000a13d00000001020003670000000401200370000000000101043b000005600010009c000011ff0000213d0000002402200370000000000202043b000000000001042d00000000010000190000156a000104300000056001100197000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000012100000613d000000000101043b000000000001042d00000000010000190000156a000104300000056002200197000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000012200000613d000000000101043b000000000001042d00000000010000190000156a00010430000005fb0010009c000012300000213d000000430010008c000012300000a13d00000001020003670000000401200370000000000101043b000005600010009c000012300000213d0000002402200370000000000202043b000005600020009c000012300000213d000000000001042d00000000010000190000156a00010430000c000000000002000800000003001d000900000002001d000700000001001d0000056001100197000a00000001001d000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000101041a000000ff001001900000127f0000c13d00000009010000290000056001100197000600000001001d000000000010043f0000000b01000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000101041a000000ff001001900000127f0000c13d000005c201000041000000000010044300000000010004120000000400100443000000240000044300000000010004140000055c0010009c0000055c01008041000000c001100210000005c3011001c70000800502000039156815630000040f0000000100200190000014e70000613d000000000101043b0000056002100197000000060020006b000012720000c13d00000000010004150000000c0110008a0000000501100210000c00000000003d000012790000013d00000000010004150000000b0110008a00000005011002100000000a0020006b000b00000000003d000b00010000c03d0000127f0000c13d0000000c02000039000000000202041a0000000501100270000000ff01200195000000ff00200190000012cb0000613d0000000a0000006b000014d30000613d0000000901000029000605600010019c000014bf0000613d0000000a01000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d0000000103000039000000000101043b000000000101041a0005000800100074000014c90000413d0000000a01000029000000000010043f000000200030043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b0000000502000029000000000021041b0000000601000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000201041a00000008030000290000000002320019000000000021041b000000400100043d00000000003104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d0200003900000003030000390000058104000041000000070500002900000009060000291568155e0000040f0000000100200190000014bd0000613d000000000001042d0000000701000039000000000101041a000005cd00100198000014ee0000613d0000000a01000039000000000101041a000500000001001d000005fc01000041000000000010044300000000010004140000055c0010009c0000055c01008041000000c001100210000005fd011001c70000800b02000039156815630000040f0000000100200190000014e70000613d000000000101043b000000050110006c000014e80000413d0000000902000039000000000202041a000000000021004b000014280000a13d0000000001000410000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000101041a000000000001004b000014280000613d000005c201000041000000000010044300000000010004120000000400100443000000240000044300000000010004140000055c0010009c0000055c01008041000000c001100210000005c3011001c70000800502000039156815630000040f0000000100200190000014e70000613d000000000101043b000000090110014f0000056000100198000014280000c13d00000000010004100000056001100197000400000001001d000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d0000000c04000039000000000204041a000005fa0220019700000001022001bf0000000803000039000000000303041a000300000003001d000000000101043b000000000101041a000500000001001d000000000024041b000005fc01000041000000000010044300000000010004140000055c0010009c0000055c01008041000000c001100210000005fd011001c70000800b02000039156815630000040f0000000504000029000000030040006c0000000304008029000500000004001d0000000100200190000014e70000613d000000000101043b000100000001001d0000000a02000039000000000012041b000000400200043d000005fe0020009c000014ff0000813d0000006001200039000000400010043f0000000203000039000300000002001d0000000002320436000000000300003100000001033003670000000004020019000000003503043c0000000004540436000000000014004b0000133f0000c13d000000040100002900000000001204350000057201000041000000400200043d000200000002001d00000000001204350000055c0020009c0000055c010000410000000001024019000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000056e011001c70000056f02000041156815630000040f000000020a00002900000060031002700000055c03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000000046a0019000013650000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000013610000c13d000000000005004b000013720000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000100200190000015050000613d0000001f0130003900000571021001970000000001a20019000000000021004b00000000020000390000000102004039000005670010009c000014ff0000213d0000000100200190000014ff0000c13d000000400010043f000000200030008c000014bd0000413d00000000010a0433000005600010009c000014bd0000213d00000003030000290000000002030433000000010020008c000015110000a13d000000400230003900000000001204350000000401000029000000000001004b000015170000613d000000000010043f0000000201000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b0000056f02000041000000000020043f000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b0000000502000029000000000021041b000000400100043d00000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d020000390000000303000039000005c70400004100000000050004100000056f060000411568155e0000040f0000000100200190000014bd0000613d0000001201000039000000000101041a000400000001001d0000057c0100004100000000001004430000056f01000041000000040010044300000000010004140000055c0010009c0000055c01008041000000c0011002100000057d011001c70000800202000039156815630000040f0000000100200190000014e70000613d000000000101043b000000000001004b000014bd0000613d000000040100002900000008011002700000056001100197000000400800043d0000004402800039000000a0030000390000000000320435000005ff0200004100000000002804350000000402800039000000050300002900000000003204350000002402800039000000000002043500000003070000290000000003070433000000a4028000390000000000320435000000c402800039000000000003004b000013ee0000613d0000000004000019000000010600002900000020077000390000000005070433000005600550019700000000025204360000000104400039000000000034004b000013e60000413d000013ef0000013d0000000106000029000000840380003900000000006304350000006403800039000000000013043500000000018200490000055c0010009c0000055c0100804100000060011002100000055c0080009c0000055c0200004100000000020840190000004002200210000000000121019f00000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f0000056f02000041000400000008001d1568155e0000040f00000060031002700000055c033001970000000100200190000015210000613d0000001f0130003900000571021001970000000401200029000000000021004b00000000020000390000000102004039000005670010009c000014ff0000213d0000000100200190000014ff0000c13d000000400010043f000000050200002900000000002104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d02000039000000010300003900000600040000411568155e0000040f0000000100200190000014bd0000613d0000000c02000039000000000102041a000005fa01100197000000000012041b0000000801000029000005dd0010009c000014e80000213d0000000801000029000000140010008c000014310000813d0000000a0000006b000014810000c13d000014d30000013d0000000a0000006b000014d30000613d0000000001000410000405600010019c000014bf0000613d0000000a01000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000010300003900000008020000290005001400200122000000000101043b000000000101041a000000050110006c000300000001001d000014c90000413d0000000a01000029000000000010043f000000200030043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b0000000302000029000000000021041b0000000401000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000201041a00000005030000290000000002320019000000000021041b000000400100043d00000000003104350000055c0010009c0000055c01008041000000400110021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000564011001c70000800d0200003900000003030000390000058104000041000000070500002900000000060004101568155e0000040f0000000100200190000014bd0000613d00000005020000290008000800200071000000060000006b000014bf0000613d0000000a01000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d0000000103000039000000000101043b000000000101041a0005000800100074000014c90000413d0000000a01000029000000000010043f000000200030043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b0000000502000029000000000021041b0000000601000029000000000010043f0000000101000039000000200010043f00000000010004140000055c0010009c0000055c01008041000000c0011002100000057a011001c70000801002000039156815630000040f0000000100200190000014bd0000613d000000000101043b000000000201041a00000008030000290000000002320019000000000021041b000000400100043d00000000003104350000055c0010009c0000055c0100804100000040011002100000000002000414000012bd0000013d00000000010000190000156a00010430000000400100043d00000064021000390000060303000041000000000032043500000044021000390000060403000041000000000032043500000024021000390000002303000039000014dc0000013d000000400100043d00000064021000390000060103000041000000000032043500000044021000390000060203000041000000000032043500000024021000390000002603000039000014dc0000013d000000400100043d000000640210003900000605030000410000000000320435000000440210003900000606030000410000000000320435000000240210003900000025030000390000000000320435000005840200004100000000002104350000000402100039000000200300003900000000003204350000055c0010009c0000055c010080410000004001100210000005ca011001c70000156a00010430000000000001042f000005e301000041000000000010043f0000001101000039000000040010043f000005db010000410000156a00010430000000400100043d000000440210003900000607030000410000000000320435000000240210003900000013030000390000000000320435000005840200004100000000002104350000000402100039000000200300003900000000003204350000055c0010009c0000055c01008041000000400110021000000585011001c70000156a00010430000005e301000041000000000010043f0000004101000039000000040010043f000005db010000410000156a000104300000001f0530018f0000057006300198000000400200043d00000000046200190000152c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000150c0000c13d0000152c0000013d000005e301000041000000000010043f0000003201000039000000040010043f000005db010000410000156a00010430000000400100043d0000006402100039000005f20300004100000000003204350000004402100039000005f303000041000000000032043500000024021000390000002403000039000014dc0000013d0000001f0530018f0000057006300198000000400200043d00000000046200190000152c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000015280000c13d000000000005004b000015390000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000055c0020009c0000055c020080410000004002200210000000000112019f0000156a00010430000000000001042f00000000050100190000000000200443000000050030008c0000154e0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000015460000413d0000055c0030009c0000055c03008041000000600130021000000000020004140000055c0020009c0000055c02008041000000c002200210000000000112019f00000608011001c70000000002050019156815630000040f00000001002001900000155d0000613d000000000101043b000000000001042d000000000001042f00001561002104210000000102000039000000000001042d0000000002000019000000000001042d00001566002104230000000102000039000000000001042d0000000002000019000000000001042d0000156800000432000015690001042e0000156a000104300000000000000000010003e3f97642b468a8398c23d8e46805f449019588c02e0263abb344d0038700000000000000000000000000000000000000000000000000000000ffffffff4275726e5661756c7420436173680000000000000000000000000000000000004255524e00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000012000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000001000000000000000002000000000000000000000000000000000000200000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b75ca53043ea007e5c65182cbb028f60d7179ff4b55739a3949b401801c942e64000000000000000000000000000000000000000000000000ffffffffffffffff036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c24f0000000000000000000000000e5f79df48505d56331b4827c1e5c98b8efd12b5000000000000000000000000ef37ab0743f37a32e279b26546d31d9989bee014000000000000000000000000000000000000000000000a968163f0a57b400000c45a0155000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000ad1eca41e6f772be3cb5a48a6141f9bcc1af9f7c00000000000000000000000000000000000000000000000000000000ffffffe000000000000000000000000000000000000000000000000000000001ffffffe0ad5c464800000000000000000000000000000000000000000000000000000000c9c65396000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000000000000000000000000000000000000000ff02000000000000000000000000000000000000400000000000000000000000003f5c0ef99e907238d8a3a435c962779e5599c3617fa131271bcb80c60eccb0b81806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000000483f7a000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffad482d2337f32d1c00000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000020000000000000000000000000000008000000100000000000000000045524332303a206d696e7420746f20746865207a65726f20616464726573730008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000070a0823000000000000000000000000000000000000000000000000000000000a7b2cf5700000000000000000000000000000000000000000000000000000000d2c8e0e400000000000000000000000000000000000000000000000000000000e7563f3e00000000000000000000000000000000000000000000000000000000e7563f3f00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fbfa77cf00000000000000000000000000000000000000000000000000000000d2c8e0e500000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000a8d326a500000000000000000000000000000000000000000000000000000000a8d326a600000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000b879afb100000000000000000000000000000000000000000000000000000000a7b2cf5800000000000000000000000000000000000000000000000000000000a8aa1b31000000000000000000000000000000000000000000000000000000008a8c523b0000000000000000000000000000000000000000000000000000000092929a080000000000000000000000000000000000000000000000000000000092929a090000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a457c2d7000000000000000000000000000000000000000000000000000000008a8c523c000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000007845ef9b000000000000000000000000000000000000000000000000000000007845ef9c000000000000000000000000000000000000000000000000000000007b510fe8000000000000000000000000000000000000000000000000000000007fbae72f0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000039509350000000000000000000000000000000000000000000000000000000004e71d92c000000000000000000000000000000000000000000000000000000005695fa57000000000000000000000000000000000000000000000000000000005695fa58000000000000000000000000000000000000000000000000000000005c5b21e900000000000000000000000000000000000000000000000000000000626de238000000000000000000000000000000000000000000000000000000004e71d92d000000000000000000000000000000000000000000000000000000004fbee1930000000000000000000000000000000000000000000000000000000042966c670000000000000000000000000000000000000000000000000000000042966c68000000000000000000000000000000000000000000000000000000004a7a4a57000000000000000000000000000000000000000000000000000000004a9fefc7000000000000000000000000000000000000000000000000000000003950935100000000000000000000000000000000000000000000000000000000402914f50000000000000000000000000000000000000000000000000000000020797cc0000000000000000000000000000000000000000000000000000000002746198a000000000000000000000000000000000000000000000000000000002746198b000000000000000000000000000000000000000000000000000000002866ed2100000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000020797cc10000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000016697fc50000000000000000000000000000000000000000000000000000000018160ddd000000000000000000000000000000000000000000000000000000000483f7a00000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000000000008000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000005a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000006400000080000000000000000000000000000000000000000000000000000000200000000000000000000000008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f770000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f00000000000000000000000000000000000000000000008000000000000000000000000000000000000000ff0000000000000000000000000000000000000000656e61626c656421000000000000000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00000000000000000000000100000000000000000000000000000000000000001d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8dfbcbc0f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000001a784379d99db41ffffff496e76616c696420616d6f756e740000000000000000000000000000000000000200000000000000000000000000000000000020000000800000000000000000db3d91c4b4701c2ec5396e1f2dd1f98c293c840369dce3906a6a0e899e84c794000000000000000000000318481895d962776a54d92bf80caa0674f371b8c19570a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000e30443bc00000000000000000000000000000000000000000000000000000000333333333333333333333333333333333333333333333333333333333333333302000000000000000000000000000000000000000000000000000000000000009d05414fb79fac216c15606de5cc06664e91a254e4d5f57664d5f1beaf7fb7efa2e6eb9e4c50c302527417384d3c74257d40953af74a4f5ea9080290be245bb043616e6e6f7420726566657220796f757273656c660000000000000000000000b8f877bb4b334c0e589d0faea5c07557a52a826bf674dd2614f6bf1769b740a44e487b71000000000000000000000000000000000000000000000000000000004275726e20616d6f756e74206d7573742062652067726561746572207468616e203000000000000000000000000000000000000000000000000000000000000085a6b3ae000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000807ab4f700000000000000000000000000000000000000000000000000000000436c61696d206e6f7420656e61626c6564000000000000000000000000000000eeead833ef3bd72b908fa0c2d1c47eabe4acbd6f2342eeddf75acda1467589cb636500000000000000000000000000000000000000000000000000000000000045524332303a206275726e20616d6f756e7420657863656564732062616c616e45524332303a206275726e2066726f6d20746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000a8b9d24000000000000000000000000000000000000000000000000000000000737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f2061646445524332303a20696e73756666696369656e7420616c6c6f77616e6365000000317602e2000000000000000000000000000000000000000000000000000000003499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa0791ac94700000000000000000000000000000000000000000000000000000000d851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee05616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f20616454726164696e67206973206e6f74206f70656e0000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb05dc051e1844643c79089a9e591f91a14eb787dd461ca6c557de2a56a5eae6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.