Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 261 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 13072415 | 1224 days ago | IN | 0 ETH | 0.00071861 | ||||
Approve | 12697581 | 1283 days ago | IN | 0 ETH | 0.0003399 | ||||
Approve | 12646921 | 1291 days ago | IN | 0 ETH | 0.00126542 | ||||
Approve | 11765785 | 1427 days ago | IN | 0 ETH | 0.00602091 | ||||
Transfer | 11756187 | 1428 days ago | IN | 0 ETH | 0.00600608 | ||||
Approve | 11694088 | 1438 days ago | IN | 0 ETH | 0.00199188 | ||||
Transfer | 11694028 | 1438 days ago | IN | 0 ETH | 0.004233 | ||||
Approve | 11693993 | 1438 days ago | IN | 0 ETH | 0.00212769 | ||||
Transfer | 11693912 | 1438 days ago | IN | 0 ETH | 0.00432364 | ||||
Transfer | 11681846 | 1440 days ago | IN | 0 ETH | 0.0040541 | ||||
Transfer | 11673555 | 1441 days ago | IN | 0 ETH | 0.00382887 | ||||
Approve | 11671803 | 1441 days ago | IN | 0 ETH | 0.0027162 | ||||
Transfer | 11667416 | 1442 days ago | IN | 0 ETH | 0.00578085 | ||||
Approve | 11659039 | 1443 days ago | IN | 0 ETH | 0.00248985 | ||||
Approve | 11649794 | 1445 days ago | IN | 0 ETH | 0.0022635 | ||||
Transfer | 11613789 | 1450 days ago | IN | 0 ETH | 0.00663146 | ||||
Approve | 11612669 | 1450 days ago | IN | 0 ETH | 0.00280674 | ||||
Transfer | 11612645 | 1450 days ago | IN | 0 ETH | 0.00549463 | ||||
Approve | 11612628 | 1450 days ago | IN | 0 ETH | 0.00280674 | ||||
Transfer | 11612075 | 1450 days ago | IN | 0 ETH | 0.00570486 | ||||
Approve | 11609414 | 1451 days ago | IN | 0 ETH | 0.0149391 | ||||
Approve | 11609413 | 1451 days ago | IN | 0 ETH | 0.01435059 | ||||
Approve | 11589897 | 1454 days ago | IN | 0 ETH | 0.00457227 | ||||
Transfer | 11588326 | 1454 days ago | IN | 0 ETH | 0.0206426 | ||||
Approve | 11587965 | 1454 days ago | IN | 0 ETH | 0.00866015 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UnbaseToken
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-19 */ pragma solidity 0.6.12; // SPDX-License-Identifier: MIT abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } 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); } function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } interface IUniswapSync { function sync() external; } /** * @title UNBASE ERC20 token * UNBASE is a normal ERC20 token, but its supply can be adjusted by splitting * tokens proportionally across all wallets (forked Base Protocol's logic), and * it reflects a transaction fee directly into all holder's wallet seemlessly * without any transfer (forked Reflect's logic). * * UNBASE balances are internally represented with a hidden denomination, 'shares'. * The circulating supply of 'shares' decrease over time due to the transaction fee. * The UNBASE balance is then reflected from the share balance (using a conversion rate * between 'shares' and 'UNBASE' taking into account the circulating supply). Exchanges' * wallets such as the Uniswap Pool are excluded from the circulating supply, therefore * only holders are earning from the transaction fee. * * We also support splitting the currency in expansion by modifying the UNBASE total supply * as well as the excluded wallets' balances, allowing the supply to contract and the price * to go up at each rebase event. */ contract UnbaseToken is ERC20, Ownable { // PLEASE READ BEFORE CHANGING ANY ACCOUNTING OR MATH // Anytime there is division, there is a risk of numerical instability from rounding errors. In // order to minimize this risk, we adhere to the following guidelines: // 1) The conversion rate adopted is the number of shares that equals 1 UNBASE. // The inverse rate must not be used--totalShares is always the numerator and _totalSupply is // always the denominator. (i.e. If you want to convert shares to UNBASE instead of // multiplying by the inverse rate, you should divide by the normal rate) // 2) Share balances converted into UnbaseToken are always rounded down (truncated). // // We make the following guarantees: // - If address 'A' transfers x UnbaseToken to address 'B'. A's resulting external balance will // be decreased by precisely x UnbaseToken, and B's external balance will be precisely // increased by x UnbaseToken. // // We do not guarantee that the sum of all balances equals the result of calling totalSupply(). // This is because, for any conversion function 'f()' that has non-zero rounding error, // f(x0) + f(x1) + ... + f(xn) is not always equal to f(x0 + x1 + ... xn). using SafeMath for uint256; event LogRebase(uint256 indexed _epoch, uint256 totalSupply); event LogUserBanStatusUpdated(address user, bool banned); modifier validRecipient(address to) { require(to != address(0x0)); require(to != address(this)); _; } uint256 private constant DECIMALS = 18; uint256 private constant MAX_UINT256 = ~uint256(0); uint256 private constant INITIAL_SUPPLY = 1 * 10**6 * 10**DECIMALS; uint256 private constant INITIAL_SHARES = (MAX_UINT256) - (MAX_UINT256 % INITIAL_SUPPLY); uint256 private _totalShares; uint256 private _totalSupply; address public _unbaseUniswapLPContract; uint256 private _epoch; uint256 public _unbasePercent = 15; // 15 = 15%. At each rebase event, _totalSupply is reduced by unbasePercent. Value can be modified by Owner. uint256 public _transferFee = 0; // 3 = 3%. For each transfer, the tax (_transferFee * amount) is reflected seamlessly in all holders' balances. Value can be modified by Owner. uint256 private _unbaseFeeTotal; mapping(address => uint256) private _shareBalances; mapping (address => uint256) private _unbaseBalances; mapping(address => bool) public bannedUsers; mapping (address => mapping (address => uint256)) private _allowedUNBASE; // This is denominated in UnbaseToken, because the shares-UNBASE conversion might change before it's fully paid. uint256 public antiBotTimer; bool public transfersPaused; bool public rebasesPaused; mapping(address => bool) public transferPauseExemptList; mapping (address => bool) private _isExcluded; address[] private _excluded; constructor() public ERC20("Unbase Protocol", "UNB") { _totalShares = INITIAL_SHARES; _totalSupply = INITIAL_SUPPLY; _shareBalances[owner()] = _totalShares; // Ban the Kucoin hacker bannedUsers[0xeB31973E0FeBF3e3D7058234a5eBbAe1aB4B8c23] = true; emit Transfer(address(0x0), owner(), _totalSupply); } // After that limit are the functions from Base Protocol's contract, // modified to allow a seemless rebase of the supply once a day. // The transfer() and transferFrom() functions are not included as // they derive mostly from Reflect's logic. function setAntiBotTimer() public onlyOwner { antiBotTimer = now; } function setTransfersPaused(bool _transfersPaused) public onlyOwner { transfersPaused = _transfersPaused; } function setTransferPauseExempt(address user, bool exempt) public onlyOwner { if (exempt) { transferPauseExemptList[user] = true; } else { delete transferPauseExemptList[user]; } } function setRebasesPaused(bool _rebasesPaused) public onlyOwner { rebasesPaused = _rebasesPaused; } function setUnbasePercent(uint256 _newUnbasePercent) public onlyOwner { _unbasePercent = _newUnbasePercent; } function setTransferFee(uint256 _newTransferFee) public onlyOwner { _transferFee = _newTransferFee; } function setUnbaseUniswapLPContract(address _newUnbaseUniswapLPContract) public onlyOwner { _unbaseUniswapLPContract = _newUnbaseUniswapLPContract; } function rebase() public onlyOwner returns (uint256) { require(!rebasesPaused, "rebases paused"); _totalSupply = _totalSupply.sub(_totalSupply.mul(_unbasePercent).div(100)); _unbaseFeeTotal = _unbaseFeeTotal.sub(_unbaseFeeTotal.mul(_unbasePercent).div(100)); // We also modify the UNBASE supply held in excluded accounts to correctly reflect the circulating supply after the rebase event // for (uint256 i = 0; i < _excluded.length; i++) { if (_unbaseBalances[_excluded[i]] > 0) { _unbaseBalances[_excluded[i]] = _unbaseBalances[_excluded[i]].sub(_unbaseBalances[_excluded[i]].mul(_unbasePercent).div(100)); } } _epoch = _epoch.add(1); emit LogRebase(_epoch, _totalSupply); IUniswapSync(_unbaseUniswapLPContract).sync(); return _totalSupply; } function getTotalShares() public view returns (uint256) { return _totalShares; } function sharesOf(address user) public view returns (uint256) { return _shareBalances[user]; } function setUserBanStatus(address user, bool banned) public onlyOwner { if (banned) { bannedUsers[user] = true; } else { delete bannedUsers[user]; } emit LogUserBanStatusUpdated(user, banned); } function totalSupply() public override view returns (uint256) { return _totalSupply; } function transfer(address recipient, uint256 amount) public override(ERC20) validRecipient(recipient) returns (bool) { require(bannedUsers[msg.sender] == false, "you are banned"); require(!transfersPaused || transferPauseExemptList[msg.sender], "paused"); require(now.sub(antiBotTimer) >= 300 || amount <= 2000 * 10**DECIMALS, "Max buy 2000 UNB right after launch"); _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner_, address spender) public override view returns (uint256) { return _allowedUNBASE[owner_][spender]; } function approve(address spender, uint256 value) public override returns (bool) { require(!transfersPaused || transferPauseExemptList[msg.sender], "paused"); _allowedUNBASE[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override validRecipient(recipient) returns (bool) { require(bannedUsers[msg.sender] == false, "you are banned"); require(!transfersPaused || transferPauseExemptList[msg.sender], "paused"); _transfer(sender, recipient, amount); approve(sender, _allowedUNBASE[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { require(!transfersPaused || transferPauseExemptList[msg.sender], "paused"); _allowedUNBASE[msg.sender][spender] = _allowedUNBASE[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowedUNBASE[msg.sender][spender]); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { require(!transfersPaused || transferPauseExemptList[msg.sender], "paused"); uint256 oldValue = _allowedUNBASE[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedUNBASE[msg.sender][spender] = 0; } else { _allowedUNBASE[msg.sender][spender] = oldValue.sub(subtractedValue); } emit Approval(msg.sender, spender, _allowedUNBASE[msg.sender][spender]); return true; } // After that limit are the functions implementing Reflect's logic to // distribute transaction fees to all holders seemlessly. // It includes the _transfer() and transferFrom() functions implementing // both Base Protocol and Reflect's logic. function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _unbaseBalances[account]; return tokenFromReflection(_shareBalances[account]); } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _unbaseFeeTotal; } function reflect(uint256 unbaseAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 shareAmount,,,,) = _getValues(unbaseAmount); _shareBalances[sender] = _shareBalances[sender].sub(shareAmount); _totalShares = _totalShares.sub(shareAmount); _unbaseFeeTotal = _unbaseFeeTotal.add(unbaseAmount); } function reflectionFromToken(uint256 unbaseAmount, bool deductTransferFee) public view returns(uint256) { require(unbaseAmount <= _totalSupply, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 shareAmount,,,,) = _getValues(unbaseAmount); return shareAmount; } else { (,uint256 shareTransferAmount,,,) = _getValues(unbaseAmount); return shareTransferAmount; } } function tokenFromReflection(uint256 shareAmount) public view returns(uint256) { require(shareAmount <= _totalShares, "Amount must be less than _totalShares"); uint256 currentRate = _getRateForReflection(); return shareAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_shareBalances[account] > 0) { _unbaseBalances[account] = tokenFromReflection(_shareBalances[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _unbaseBalances[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transfer(address sender, address recipient, uint256 amount) internal override(ERC20) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } } function _transferStandard(address sender, address recipient, uint256 unbaseAmount) private { (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 unbaseTransferAmount, uint256 unbaseFee) = _getValues(unbaseAmount); _shareBalances[sender] = _shareBalances[sender].sub(shareAmount); _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount); _reflectFee(shareFee, unbaseFee); emit Transfer(sender, recipient, unbaseTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 unbaseAmount) private { (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 unbaseTransferAmount, uint256 unbaseFee) = _getValues(unbaseAmount); _shareBalances[sender] = _shareBalances[sender].sub(shareAmount); _unbaseBalances[recipient] = _unbaseBalances[recipient].add(unbaseTransferAmount); _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount); _reflectFee(shareFee, unbaseFee); emit Transfer(sender, recipient, unbaseTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 unbaseAmount) private { (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 unbaseTransferAmount, uint256 unbaseFee) = _getValues(unbaseAmount); _unbaseBalances[sender] = _unbaseBalances[sender].sub(unbaseAmount); _shareBalances[sender] = _shareBalances[sender].sub(shareAmount); _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount); _reflectFee(shareFee, unbaseFee); emit Transfer(sender, recipient, unbaseTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 unbaseAmount) private { (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 unbaseTransferAmount, uint256 unbaseFee) = _getValues(unbaseAmount); _unbaseBalances[sender] = _unbaseBalances[sender].sub(unbaseAmount); _shareBalances[sender] = _shareBalances[sender].sub(shareAmount); _unbaseBalances[recipient] = _unbaseBalances[recipient].add(unbaseTransferAmount); _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount); _reflectFee(shareFee, unbaseFee); emit Transfer(sender, recipient, unbaseTransferAmount); } function _reflectFee(uint256 shareFee, uint256 unbaseFee) private { _totalShares = _totalShares.sub(shareFee); _unbaseFeeTotal = _unbaseFeeTotal.add(unbaseFee); } function _getValues(uint256 unbaseAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 unbaseTransferAmount, uint256 unbaseFee) = _getTValues(unbaseAmount); uint256 currentRate = _getRateForReflection(); (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee) = _getRValues(unbaseAmount, unbaseFee, currentRate); return (shareAmount, shareTransferAmount, shareFee, unbaseTransferAmount, unbaseFee); } function _getTValues(uint256 unbaseAmount) private view returns (uint256, uint256) { uint256 unbaseFee = unbaseAmount.div(100).mul(_transferFee); uint256 unbaseTransferAmount = unbaseAmount.sub(unbaseFee); return (unbaseTransferAmount, unbaseFee); } function _getRValues(uint256 unbaseAmount, uint256 unbaseFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 shareAmount = unbaseAmount.mul(currentRate); uint256 shareFee = unbaseFee.mul(currentRate); uint256 shareTransferAmount = shareAmount.sub(shareFee); return (shareAmount, shareTransferAmount, shareFee); } function _getRateForReflection() private view returns(uint256) { (uint256 shareSupply, uint256 unbaseSupply) = _getCurrentSupplyForReflection(); return shareSupply.div(unbaseSupply); } function _getCurrentSupplyForReflection() private view returns(uint256, uint256) { uint256 shareSupply = _totalShares; uint256 unbaseSupply = _totalSupply; for (uint256 i = 0; i < _excluded.length; i++) { if (_shareBalances[_excluded[i]] > shareSupply || _unbaseBalances[_excluded[i]] > unbaseSupply) return (_totalShares, _totalSupply); shareSupply = shareSupply.sub(_shareBalances[_excluded[i]]); unbaseSupply = unbaseSupply.sub(_unbaseBalances[_excluded[i]]); } if (shareSupply < _totalShares.div(_totalSupply)) return (_totalShares, _totalSupply); return (shareSupply, unbaseSupply); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"uint256","name":"_epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"banned","type":"bool"}],"name":"LogUserBanStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_unbasePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_unbaseUniswapLPContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bannedUsers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTotalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcluded","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":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebasesPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"unbaseAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"unbaseAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAntiBotTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_rebasesPaused","type":"bool"}],"name":"setRebasesPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTransferFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTransferPauseExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_transfersPaused","type":"bool"}],"name":"setTransfersPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newUnbasePercent","type":"uint256"}],"name":"setUnbasePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newUnbaseUniswapLPContract","type":"address"}],"name":"setUnbaseUniswapLPContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"banned","type":"bool"}],"name":"setUserBanStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shareAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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":"address","name":"","type":"address"}],"name":"transferPauseExemptList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfersPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600f600a556000600b553480156200001b57600080fd5b506040518060400160405280600f81526020017f556e626173652050726f746f636f6c00000000000000000000000000000000008152506040518060400160405280600381526020017f554e4200000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a092919062000329565b508060049080519060200190620000b992919062000329565b506012600560006101000a81548160ff021916908360ff16021790555050506000620000ea620002f760201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506012600a0a620f424002600019816200019e57fe5b06600019036006819055506012600a0a620f424002600781905550600654600d6000620001d0620002ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600f600073eb31973e0febf3e3d7058234a5ebbae1ab4b8c2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200028a620002ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a3620003cf565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200036c57805160ff19168380011785556200039d565b828001600101855582156200039d579182015b828111156200039c5782518255916020019190600101906200037f565b5b509050620003ac9190620003b0565b5090565b5b80821115620003cb576000816000905550600101620003b1565b5090565b614f7380620003df6000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063777e63ed1161013b578063b4bccee0116100b8578063f2cc0c181161007c578063f2cc0c1814610af8578063f2fde38b14610b3c578063f442b57014610b80578063f5eb42dc14610bda578063f84354f114610c3257610248565b8063b4bccee0146109aa578063c2a88347146109d8578063cba0e99614610a08578063d5002f2e14610a62578063dd62ed3e14610a8057610248565b806395d89b41116100ff57806395d89b411461080d5780639ff20ef414610890578063a457c2d7146108c4578063a9059cbb14610928578063af14052c1461098c57610248565b8063777e63ed146107275780638988d078146107315780638d0bc4281461078b5780638da5cb5b146107ab5780638f02bb5b146107df57610248565b806339509351116101c95780634563f30a1161018d5780634563f30a1461063757806367b8c3191461065757806370a08231146106a7578063715018a6146106ff578063774662f91461070957610248565b806339509351146105195780633be793101461057d5780633df9a8d21461059b57806344e46dff146105b95780634549b039146105e957610248565b806318160ddd1161021057806318160ddd146103c45780631fc3371a146103e257806323b872dd146104325780632d838119146104b6578063313ce567146104f857610248565b8063053ab1821461024d57806306fdde031461027b578063095ea7b3146102fe5780630deef44f1461036257806313114a9d146103a6575b600080fd5b6102796004803603602081101561026357600080fd5b8101908080359060200190929190505050610c76565b005b610283610e06565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c35780820151818401526020810190506102a8565b50505050905090810190601f1680156102f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea8565b60405180821515815260200191505060405180910390f35b6103a46004803603602081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611071565b005b6103ae61117f565b6040518082815260200191505060405180910390f35b6103cc611189565b6040518082815260200191505060405180910390f35b610430600480360360408110156103f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611193565b005b61049e6004803603606081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611314565b60405180821515815260200191505060405180910390f35b6104e2600480360360208110156104cc57600080fd5b81019080803590602001909291905050506115f8565b6040518082815260200191505060405180910390f35b61050061167c565b604051808260ff16815260200191505060405180910390f35b6105656004803603604081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611693565b60405180821515815260200191505060405180910390f35b610585611966565b6040518082815260200191505060405180910390f35b6105a361196c565b6040518082815260200191505060405180910390f35b6105e7600480360360208110156105cf57600080fd5b81019080803515159060200190929190505050611972565b005b610621600480360360408110156105ff57600080fd5b8101908080359060200190929190803515159060200190929190505050611a59565b6040518082815260200191505060405180910390f35b61063f611b0e565b60405180821515815260200191505060405180910390f35b6106a56004803603604081101561066d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b21565b005b6106e9600480360360208110156106bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf9565b6040518082815260200191505060405180910390f35b610707611de4565b005b610711611f6f565b6040518082815260200191505060405180910390f35b61072f611f75565b005b6107736004803603602081101561074757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612048565b60405180821515815260200191505060405180910390f35b610793612068565b60405180821515815260200191505060405180910390f35b6107b361207b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61080b600480360360208110156107f557600080fd5b81019080803590602001909291905050506120a5565b005b610815612179565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085557808201518184015260208101905061083a565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61089861221b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610910600480360360408110156108da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612241565b60405180821515815260200191505060405180910390f35b6109746004803603604081101561093e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125a9565b60405180821515815260200191505060405180910390f35b61099461285b565b6040518082815260200191505060405180910390f35b6109d6600480360360208110156109c057600080fd5b8101908080359060200190929190505050612d52565b005b610a06600480360360208110156109ee57600080fd5b81019080803515159060200190929190505050612e26565b005b610a4a60048036036020811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f0d565b60405180821515815260200191505060405180910390f35b610a6a612f63565b6040518082815260200191505060405180910390f35b610ae260048036036040811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6d565b6040518082815260200191505060405180910390f35b610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ff4565b005b610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613310565b005b610bc260048036036020811015610b9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613520565b60405180821515815260200191505060405180910390f35b610c1c60048036036020811015610bf057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613540565b6040518082815260200191505060405180910390f35b610c7460048036036020811015610c4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613589565b005b6000610c80613915565b9050601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614f12602c913960400191505060405180910390fd5b6000610d308361391d565b505050509050610d8881600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610de08160065461397590919063ffffffff16565b600681905550610dfb83600c546139bf90919063ffffffff16565b600c81905550505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e9e5780601f10610e7357610100808354040283529160200191610e9e565b820191906000526020600020905b815481529060010190602001808311610e8157829003601f168201915b5050505050905090565b6000601260009054906101000a900460ff161580610f0f5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611079613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600c54905090565b6000600754905090565b61119b613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156112c0576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611310565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561135157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138a57600080fd5b60001515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f796f75206172652062616e6e656400000000000000000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff1615806114b55750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611532858585613a47565b6115eb856115e685604051806060016040528060288152602001614e5460289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061159c613915565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ea09092919063ffffffff16565b610ea8565b5060019150509392505050565b6000600654821115611655576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614eed6025913960400191505060405180910390fd5b600061165f613f60565b90506116748184613f8b90919063ffffffff16565b915050919050565b6000600560009054906101000a900460ff16905090565b6000601260009054906101000a900460ff1615806116fa5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117fb82601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600a5481565b600b5481565b61197a613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b6000600754831115611ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611af2576000611ae38461391d565b50505050905080915050611b08565b6000611afd8461391d565b505050915050809150505b92915050565b601260009054906101000a900460ff1681565b611b29613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8015611c4e576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c9e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b7f9d96fd0be79238fe0114d59e66ab2107b1369256adc03ad3f29b6deb2bc7508a8282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d9457600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ddf565b611ddc600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f8565b90505b919050565b611dec613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b611f7d613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42601181905550565b600f6020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120ad613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122115780601f106121e657610100808354040283529160200191612211565b820191906000526020600020905b8154815290600101906020018083116121f457829003601f168201915b5050505050905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260009054906101000a900460ff1615806122a85750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612429576000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124bd565b61243c838261397590919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125e657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561261f57600080fd5b60001515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146126e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f796f75206172652062616e6e656400000000000000000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff16158061274a5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61012c6127d46011544261397590919063ffffffff16565b1015806127e957506012600a0a6107d0028311155b61283e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ea56023913960400191505060405180910390fd5b612850612849613915565b8585613a47565b600191505092915050565b6000612865613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601260019054906101000a900460ff16156129aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f726562617365732070617573656400000000000000000000000000000000000081525060200191505060405180910390fd5b6129e86129d760646129c9600a54600754613fd590919063ffffffff16565b613f8b90919063ffffffff16565b60075461397590919063ffffffff16565b600781905550612a2c612a1b6064612a0d600a54600c54613fd590919063ffffffff16565b613f8b90919063ffffffff16565b600c5461397590919063ffffffff16565b600c8190555060005b601580549050811015612c6f576000600e600060158481548110612a5557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c6257612be7612b626064612b54600a54600e600060158881548110612ae057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fd590919063ffffffff16565b613f8b90919063ffffffff16565b600e600060158581548110612b7357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e600060158481548110612bf857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8080600101915050612a35565b50612c8660016009546139bf90919063ffffffff16565b6009819055506009547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26007546040518082815260200191505060405180910390a2600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612d3257600080fd5b505af1158015612d46573d6000803e3d6000fd5b50505050600754905090565b612d5a613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b612e2e613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ef0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600654905090565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ffc613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156132525761320e600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f8565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506015819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613318613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614e0d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b613591613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613653576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b601580549050811015613911578173ffffffffffffffffffffffffffffffffffffffff166015828154811061374657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613904576015600160158054905003815481106137a257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601582815481106137da57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060158054806138ca57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613911565b8080600101915050613715565b5050565b600033905090565b60008060008060008060006139318861405b565b91509150600061393f613f60565b905060008060006139518c86866140ae565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006139b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613ea0565b905092915050565b600080828401905083811015613a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ec86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614dea6023913960400191505060405180910390fd5b60008111613bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614e7c6029913960400191505060405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4f5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c6457613c5f83838361410c565b613e9b565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d075750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d1c57613d1783838361435f565b613e9a565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613dc05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613dd557613dd08383836145b2565b613e99565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e775750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e8c57613e87838383614770565b613e98565b613e978383836145b2565b5b5b5b5b505050565b6000838311158290613f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613f12578082015181840152602081019050613ef7565b50505050905090810190601f168015613f3f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613f6d614a58565b91509150613f848183613f8b90919063ffffffff16565b9250505090565b6000613fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614ce9565b905092915050565b600080831415613fe85760009050614055565b6000828402905082848281613ff957fe5b0414614050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e336021913960400191505060405180910390fd5b809150505b92915050565b6000806000614088600b5461407a606487613f8b90919063ffffffff16565b613fd590919063ffffffff16565b9050600061409f828661397590919063ffffffff16565b90508082935093505050915091565b6000806000806140c78588613fd590919063ffffffff16565b905060006140de8688613fd590919063ffffffff16565b905060006140f5828461397590919063ffffffff16565b905082818395509550955050505093509350939050565b600080600080600061411d8661391d565b9450945094509450945061417986600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061420e85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a384600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f08382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006143708661391d565b945094509450945094506143cc85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061446182600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144f684600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145438382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006145c38661391d565b9450945094509450945061461f85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146b484600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147018382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006147818661391d565b945094509450945094506147dd86600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061487285600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061490782600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499c84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149e98382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600060065490506000600754905060005b601580549050811015614cac5782600d600060158481548110614a8b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614b72575081600e600060158481548110614b0a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614b895760065460075494509450505050614ce5565b614c12600d600060158481548110614b9d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461397590919063ffffffff16565b9250614c9d600e600060158481548110614c2857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361397590919063ffffffff16565b91508080600101915050614a6c565b50614cc4600754600654613f8b90919063ffffffff16565b821015614cdc57600654600754935093505050614ce5565b81819350935050505b9091565b60008083118290614d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d5a578082015181840152602081019050614d3f565b50505050905090810190601f168015614d875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614da157fe5b049050809150509392505050565b614dc48260065461397590919063ffffffff16565b600681905550614ddf81600c546139bf90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f4d617820627579203230303020554e42207269676874206166746572206c61756e636845524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e205f746f74616c5368617265734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6ea2646970667358221220620fa2e4c2e18be301fe0753ff5fa9aa79bf7b2e770765ff99e42891d14d1bf064736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063777e63ed1161013b578063b4bccee0116100b8578063f2cc0c181161007c578063f2cc0c1814610af8578063f2fde38b14610b3c578063f442b57014610b80578063f5eb42dc14610bda578063f84354f114610c3257610248565b8063b4bccee0146109aa578063c2a88347146109d8578063cba0e99614610a08578063d5002f2e14610a62578063dd62ed3e14610a8057610248565b806395d89b41116100ff57806395d89b411461080d5780639ff20ef414610890578063a457c2d7146108c4578063a9059cbb14610928578063af14052c1461098c57610248565b8063777e63ed146107275780638988d078146107315780638d0bc4281461078b5780638da5cb5b146107ab5780638f02bb5b146107df57610248565b806339509351116101c95780634563f30a1161018d5780634563f30a1461063757806367b8c3191461065757806370a08231146106a7578063715018a6146106ff578063774662f91461070957610248565b806339509351146105195780633be793101461057d5780633df9a8d21461059b57806344e46dff146105b95780634549b039146105e957610248565b806318160ddd1161021057806318160ddd146103c45780631fc3371a146103e257806323b872dd146104325780632d838119146104b6578063313ce567146104f857610248565b8063053ab1821461024d57806306fdde031461027b578063095ea7b3146102fe5780630deef44f1461036257806313114a9d146103a6575b600080fd5b6102796004803603602081101561026357600080fd5b8101908080359060200190929190505050610c76565b005b610283610e06565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c35780820151818401526020810190506102a8565b50505050905090810190601f1680156102f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea8565b60405180821515815260200191505060405180910390f35b6103a46004803603602081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611071565b005b6103ae61117f565b6040518082815260200191505060405180910390f35b6103cc611189565b6040518082815260200191505060405180910390f35b610430600480360360408110156103f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611193565b005b61049e6004803603606081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611314565b60405180821515815260200191505060405180910390f35b6104e2600480360360208110156104cc57600080fd5b81019080803590602001909291905050506115f8565b6040518082815260200191505060405180910390f35b61050061167c565b604051808260ff16815260200191505060405180910390f35b6105656004803603604081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611693565b60405180821515815260200191505060405180910390f35b610585611966565b6040518082815260200191505060405180910390f35b6105a361196c565b6040518082815260200191505060405180910390f35b6105e7600480360360208110156105cf57600080fd5b81019080803515159060200190929190505050611972565b005b610621600480360360408110156105ff57600080fd5b8101908080359060200190929190803515159060200190929190505050611a59565b6040518082815260200191505060405180910390f35b61063f611b0e565b60405180821515815260200191505060405180910390f35b6106a56004803603604081101561066d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b21565b005b6106e9600480360360208110156106bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf9565b6040518082815260200191505060405180910390f35b610707611de4565b005b610711611f6f565b6040518082815260200191505060405180910390f35b61072f611f75565b005b6107736004803603602081101561074757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612048565b60405180821515815260200191505060405180910390f35b610793612068565b60405180821515815260200191505060405180910390f35b6107b361207b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61080b600480360360208110156107f557600080fd5b81019080803590602001909291905050506120a5565b005b610815612179565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085557808201518184015260208101905061083a565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61089861221b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610910600480360360408110156108da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612241565b60405180821515815260200191505060405180910390f35b6109746004803603604081101561093e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125a9565b60405180821515815260200191505060405180910390f35b61099461285b565b6040518082815260200191505060405180910390f35b6109d6600480360360208110156109c057600080fd5b8101908080359060200190929190505050612d52565b005b610a06600480360360208110156109ee57600080fd5b81019080803515159060200190929190505050612e26565b005b610a4a60048036036020811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f0d565b60405180821515815260200191505060405180910390f35b610a6a612f63565b6040518082815260200191505060405180910390f35b610ae260048036036040811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6d565b6040518082815260200191505060405180910390f35b610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ff4565b005b610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613310565b005b610bc260048036036020811015610b9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613520565b60405180821515815260200191505060405180910390f35b610c1c60048036036020811015610bf057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613540565b6040518082815260200191505060405180910390f35b610c7460048036036020811015610c4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613589565b005b6000610c80613915565b9050601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614f12602c913960400191505060405180910390fd5b6000610d308361391d565b505050509050610d8881600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610de08160065461397590919063ffffffff16565b600681905550610dfb83600c546139bf90919063ffffffff16565b600c81905550505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e9e5780601f10610e7357610100808354040283529160200191610e9e565b820191906000526020600020905b815481529060010190602001808311610e8157829003601f168201915b5050505050905090565b6000601260009054906101000a900460ff161580610f0f5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611079613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600c54905090565b6000600754905090565b61119b613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156112c0576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611310565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561135157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138a57600080fd5b60001515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f796f75206172652062616e6e656400000000000000000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff1615806114b55750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611532858585613a47565b6115eb856115e685604051806060016040528060288152602001614e5460289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061159c613915565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ea09092919063ffffffff16565b610ea8565b5060019150509392505050565b6000600654821115611655576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614eed6025913960400191505060405180910390fd5b600061165f613f60565b90506116748184613f8b90919063ffffffff16565b915050919050565b6000600560009054906101000a900460ff16905090565b6000601260009054906101000a900460ff1615806116fa5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117fb82601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600a5481565b600b5481565b61197a613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b6000600754831115611ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611af2576000611ae38461391d565b50505050905080915050611b08565b6000611afd8461391d565b505050915050809150505b92915050565b601260009054906101000a900460ff1681565b611b29613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8015611c4e576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c9e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b7f9d96fd0be79238fe0114d59e66ab2107b1369256adc03ad3f29b6deb2bc7508a8282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d9457600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ddf565b611ddc600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f8565b90505b919050565b611dec613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b611f7d613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42601181905550565b600f6020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120ad613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122115780601f106121e657610100808354040283529160200191612211565b820191906000526020600020905b8154815290600101906020018083116121f457829003601f168201915b5050505050905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260009054906101000a900460ff1615806122a85750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612429576000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124bd565b61243c838261397590919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125e657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561261f57600080fd5b60001515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146126e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f796f75206172652062616e6e656400000000000000000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff16158061274a5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f706175736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61012c6127d46011544261397590919063ffffffff16565b1015806127e957506012600a0a6107d0028311155b61283e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ea56023913960400191505060405180910390fd5b612850612849613915565b8585613a47565b600191505092915050565b6000612865613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601260019054906101000a900460ff16156129aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f726562617365732070617573656400000000000000000000000000000000000081525060200191505060405180910390fd5b6129e86129d760646129c9600a54600754613fd590919063ffffffff16565b613f8b90919063ffffffff16565b60075461397590919063ffffffff16565b600781905550612a2c612a1b6064612a0d600a54600c54613fd590919063ffffffff16565b613f8b90919063ffffffff16565b600c5461397590919063ffffffff16565b600c8190555060005b601580549050811015612c6f576000600e600060158481548110612a5557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c6257612be7612b626064612b54600a54600e600060158881548110612ae057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fd590919063ffffffff16565b613f8b90919063ffffffff16565b600e600060158581548110612b7357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e600060158481548110612bf857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8080600101915050612a35565b50612c8660016009546139bf90919063ffffffff16565b6009819055506009547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26007546040518082815260200191505060405180910390a2600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612d3257600080fd5b505af1158015612d46573d6000803e3d6000fd5b50505050600754905090565b612d5a613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b612e2e613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ef0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600654905090565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ffc613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156132525761320e600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f8565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506015819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613318613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614e0d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b613591613915565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613653576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b601580549050811015613911578173ffffffffffffffffffffffffffffffffffffffff166015828154811061374657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613904576015600160158054905003815481106137a257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601582815481106137da57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060158054806138ca57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613911565b8080600101915050613715565b5050565b600033905090565b60008060008060008060006139318861405b565b91509150600061393f613f60565b905060008060006139518c86866140ae565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006139b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613ea0565b905092915050565b600080828401905083811015613a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ec86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614dea6023913960400191505060405180910390fd5b60008111613bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614e7c6029913960400191505060405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4f5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c6457613c5f83838361410c565b613e9b565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d075750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d1c57613d1783838361435f565b613e9a565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613dc05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613dd557613dd08383836145b2565b613e99565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e775750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e8c57613e87838383614770565b613e98565b613e978383836145b2565b5b5b5b5b505050565b6000838311158290613f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613f12578082015181840152602081019050613ef7565b50505050905090810190601f168015613f3f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613f6d614a58565b91509150613f848183613f8b90919063ffffffff16565b9250505090565b6000613fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614ce9565b905092915050565b600080831415613fe85760009050614055565b6000828402905082848281613ff957fe5b0414614050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e336021913960400191505060405180910390fd5b809150505b92915050565b6000806000614088600b5461407a606487613f8b90919063ffffffff16565b613fd590919063ffffffff16565b9050600061409f828661397590919063ffffffff16565b90508082935093505050915091565b6000806000806140c78588613fd590919063ffffffff16565b905060006140de8688613fd590919063ffffffff16565b905060006140f5828461397590919063ffffffff16565b905082818395509550955050505093509350939050565b600080600080600061411d8661391d565b9450945094509450945061417986600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061420e85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a384600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f08382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006143708661391d565b945094509450945094506143cc85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061446182600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144f684600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145438382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006145c38661391d565b9450945094509450945061461f85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146b484600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147018382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006147818661391d565b945094509450945094506147dd86600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061487285600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397590919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061490782600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499c84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bf90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149e98382614daf565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600060065490506000600754905060005b601580549050811015614cac5782600d600060158481548110614a8b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614b72575081600e600060158481548110614b0a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614b895760065460075494509450505050614ce5565b614c12600d600060158481548110614b9d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461397590919063ffffffff16565b9250614c9d600e600060158481548110614c2857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361397590919063ffffffff16565b91508080600101915050614a6c565b50614cc4600754600654613f8b90919063ffffffff16565b821015614cdc57600654600754935093505050614ce5565b81819350935050505b9091565b60008083118290614d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d5a578082015181840152602081019050614d3f565b50505050905090810190601f168015614d875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614da157fe5b049050809150509392505050565b614dc48260065461397590919063ffffffff16565b600681905550614ddf81600c546139bf90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f4d617820627579203230303020554e42207269676874206166746572206c61756e636845524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e205f746f74616c5368617265734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6ea2646970667358221220620fa2e4c2e18be301fe0753ff5fa9aa79bf7b2e770765ff99e42891d14d1bf064736f6c634300060c0033
Deployed Bytecode Sourcemap
10121:17789:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20079:437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5141:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17409:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14816:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19979:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16521:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14095:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17756:537;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21007:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5327:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18301:426;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12147:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12305:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13943:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20524:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12958:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16229:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19640:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;994:148;;;:::i;:::-;;12924:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13831:104;;;:::i;:::-;;12674:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12992:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;780:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14666:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5232:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18735:605;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16674:530;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15014:925;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14508:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14364:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19861:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15947:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17212:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21292:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1150:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13026:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16081:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21654:486;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20079:437;20136:14;20153:12;:10;:12::i;:::-;20136:29;;20185:11;:19;20197:6;20185:19;;;;;;;;;;;;;;;;;;;;;;;;;20184:20;20176:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20265:19;20292:24;20303:12;20292:10;:24::i;:::-;20264:52;;;;;;20352:39;20379:11;20352:14;:22;20367:6;20352:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;20327:14;:22;20342:6;20327:22;;;;;;;;;;;;;;;:64;;;;20417:29;20434:11;20417:12;;:16;;:29;;;;:::i;:::-;20402:12;:44;;;;20475:33;20495:12;20475:15;;:19;;:33;;;;:::i;:::-;20457:15;:51;;;;20079:437;;;:::o;5141:83::-;5178:13;5211:5;5204:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5141:83;:::o;17409:335::-;17510:4;17541:15;;;;;;;;;;;17540:16;:55;;;;17560:23;:35;17584:10;17560:35;;;;;;;;;;;;;;;;;;;;;;;;;17540:55;17532:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17657:5;17619:14;:26;17634:10;17619:26;;;;;;;;;;;;;;;:35;17646:7;17619:35;;;;;;;;;;;;;;;:43;;;;17699:7;17678:36;;17687:10;17678:36;;;17708:5;17678:36;;;;;;;;;;;;;;;;;;17732:4;17725:11;;17409:335;;;;:::o;14816:186::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14967:27:::1;14940:24;;:54;;;;;;;;;;;;;;;;;;14816:186:::0;:::o;19979:92::-;20021:7;20048:15;;20041:22;;19979:92;:::o;16521:141::-;16610:7;16642:12;;16635:19;;16521:141;:::o;14095:261::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14209:6:::1;14205:144;;;14264:4;14232:23;:29;14256:4;14232:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14205:144;;;14308:23;:29;14332:4;14308:29;;;;;;;;;;;;;;;;14301:36;;;;;;;;;;;14205:144;14095:261:::0;;:::o;17756:537::-;17919:4;17890:9;11655:3;11641:18;;:2;:18;;;;11633:27;;;;;;11693:4;11679:19;;:2;:19;;;;11671:28;;;;;;17977:5:::1;17950:32;;:11;:23;17962:10;17950:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;17942:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18021:15;;;;;;;;;;;18020:16;:55;;;;18040:23;:35;18064:10;18040:35;;;;;;;;;;;;;;;;;;;;;;;;;18020:55;18012:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18107:36;18117:6;18125:9;18136:6;18107:9;:36::i;:::-;18154:109;18162:6;18170:92;18211:6;18170:92;;;;;;;;;;;;;;;;;:14;:22;18185:6;18170:22;;;;;;;;;;;;;;;:36;18193:12;:10;:12::i;:::-;18170:36;;;;;;;;;;;;;;;;:40;;:92;;;;;:::i;:::-;18154:7;:109::i;:::-;;18281:4;18274:11;;17756:537:::0;;;;;;:::o;21007:277::-;21077:7;21120:12;;21105:11;:27;;21097:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21185:19;21207:23;:21;:23::i;:::-;21185:45;;21248:28;21264:11;21248;:15;;:28;;;;:::i;:::-;21241:35;;;21007:277;;;:::o;5327:83::-;5368:5;5393:9;;;;;;;;;;;5386:16;;5327:83;:::o;18301:426::-;18417:4;18448:15;;;;;;;;;;;18447:16;:55;;;;18467:23;:35;18491:10;18467:35;;;;;;;;;;;;;;;;;;;;;;;;;18447:55;18439:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18564:51;18604:10;18564:14;:26;18579:10;18564:26;;;;;;;;;;;;;;;:35;18591:7;18564:35;;;;;;;;;;;;;;;;:39;;:51;;;;:::i;:::-;18526:14;:26;18541:10;18526:26;;;;;;;;;;;;;;;:35;18553:7;18526:35;;;;;;;;;;;;;;;:89;;;;18652:7;18631:66;;18640:10;18631:66;;;18661:14;:26;18676:10;18661:26;;;;;;;;;;;;;;;:35;18688:7;18661:35;;;;;;;;;;;;;;;;18631:66;;;;;;;;;;;;;;;;;;18715:4;18708:11;;18301:426;;;;:::o;12147:34::-;;;;:::o;12305:31::-;;;;:::o;13943:144::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:16:::1;14045:15;;:34;;;;;;;;;;;;;;;;;;13943:144:::0;:::o;20524:475::-;20619:7;20663:12;;20647;:28;;20639:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20727:17;20722:270;;20762:19;20789:24;20800:12;20789:10;:24::i;:::-;20761:52;;;;;;20835:11;20828:18;;;;;20722:270;20881:27;20915:24;20926:12;20915:10;:24::i;:::-;20879:60;;;;;;20961:19;20954:26;;;20524:475;;;;;:::o;12958:27::-;;;;;;;;;;;;;:::o;16229:284::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16337:6:::1;16333:120;;;16380:4;16360:11;:17;16372:4;16360:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16333:120;;;16424:11;:17;16436:4;16424:17;;;;;;;;;;;;;;;;16417:24;;;;;;;;;;;16333:120;16468:37;16492:4;16498:6;16468:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;16229:284:::0;;:::o;19640:213::-;19706:7;19730:11;:20;19742:7;19730:20;;;;;;;;;;;;;;;;;;;;;;;;;19726:57;;;19759:15;:24;19775:7;19759:24;;;;;;;;;;;;;;;;19752:31;;;;19726:57;19801:44;19821:14;:23;19836:7;19821:23;;;;;;;;;;;;;;;;19801:19;:44::i;:::-;19794:51;;19640:213;;;;:::o;994:148::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1101:1:::1;1064:40;;1085:6;;;;;;;;;;;1064:40;;;;;;;;;;;;1132:1;1115:6;;:19;;;;;;;;;;;;;;;;;;994:148::o:0;12924:27::-;;;;:::o;13831:104::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13924:3:::1;13909:12;:18;;;;13831:104::o:0;12674:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12992:25::-;;;;;;;;;;;;;:::o;780:79::-;818:7;845:6;;;;;;;;;;;838:13;;780:79;:::o;14666:138::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14781:15:::1;14766:12;:30;;;;14666:138:::0;:::o;5232:87::-;5271:13;5304:7;5297:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:87;:::o;12069:39::-;;;;;;;;;;;;;:::o;18735:605::-;18856:4;18887:15;;;;;;;;;;;18886:16;:55;;;;18906:23;:35;18930:10;18906:35;;;;;;;;;;;;;;;;;;;;;;;;;18886:55;18878:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:16;18984:14;:26;18999:10;18984:26;;;;;;;;;;;;;;;:35;19011:7;18984:35;;;;;;;;;;;;;;;;18965:54;;19053:8;19034:15;:27;19030:199;;19116:1;19078:14;:26;19093:10;19078:26;;;;;;;;;;;;;;;:35;19105:7;19078:35;;;;;;;;;;;;;;;:39;;;;19030:199;;;19188:29;19201:15;19188:8;:12;;:29;;;;:::i;:::-;19150:14;:26;19165:10;19150:26;;;;;;;;;;;;;;;:35;19177:7;19150:35;;;;;;;;;;;;;;;:67;;;;19030:199;19265:7;19244:66;;19253:10;19244:66;;;19274:14;:26;19289:10;19274:26;;;;;;;;;;;;;;;:35;19301:7;19274:35;;;;;;;;;;;;;;;;19244:66;;;;;;;;;;;;;;;;;;19328:4;19321:11;;;18735:605;;;;:::o;16674:530::-;16824:4;16795:9;11655:3;11641:18;;:2;:18;;;;11633:27;;;;;;11693:4;11679:19;;:2;:19;;;;11671:28;;;;;;16882:5:::1;16855:32;;:11;:23;16867:10;16855:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;16847:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16926:15;;;;;;;;;;;16925:16;:55;;;;16945:23;:35;16969:10;16945:35;;;;;;;;;;;;;;;;;;;;;;;;;16925:55;16917:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17035:3;17010:21;17018:12;;17010:3;:7;;:21;;;;:::i;:::-;:28;;:61;;;;11763:2;17059;:12;17052:4;:19;17042:6;:29;;17010:61;17002:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17132:42;17142:12;:10;:12::i;:::-;17156:9;17167:6;17132:9;:42::i;:::-;17192:4;17185:11;;16674:530:::0;;;;;:::o;15014:925::-;15085:7;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15119:13:::1;;;;;;;;;;;15118:14;15110:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15187:59;15204:41;15241:3;15204:32;15221:14;;15204:12;;:16;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;15187:12;;:16;;:59;;;;:::i;:::-;15172:12;:74;;;;15275:65;15295:44;15335:3;15295:35;15315:14;;15295:15;;:19;;:35;;;;:::i;:::-;:39;;:44;;;;:::i;:::-;15275:15;;:19;;:65;;;;:::i;:::-;15257:15;:83;;;;15497:9;15492:272;15516:9;:16;;;;15512:1;:20;15492:272;;;15590:1;15558:15;:29;15574:9;15584:1;15574:12;;;;;;;;;;;;;;;;;;;;;;;;;15558:29;;;;;;;;;;;;;;;;:33;15554:199;;;15644:93;15678:58;15732:3;15678:49;15712:14;;15678:15;:29;15694:9;15704:1;15694:12;;;;;;;;;;;;;;;;;;;;;;;;;15678:29;;;;;;;;;;;;;;;;:33;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;15644:15;:29;15660:9;15670:1;15660:12;;;;;;;;;;;;;;;;;;;;;;;;;15644:29;;;;;;;;;;;;;;;;:33;;:93;;;;:::i;:::-;15612:15;:29;15628:9;15638:1;15628:12;;;;;;;;;;;;;;;;;;;;;;;;;15612:29;;;;;;;;;;;;;;;:125;;;;15554:199;15534:3;;;;;;;15492:272;;;;15783:13;15794:1;15783:6;;:10;;:13;;;;:::i;:::-;15774:6;:22;;;;15824:6;;15814:31;15832:12;;15814:31;;;;;;;;;;;;;;;;;;15869:24;;;;;;;;;;;15856:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15919:12;;15912:19;;15014:925:::0;:::o;14508:146::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14629:17:::1;14612:14;:34;;;;14508:146:::0;:::o;14364:136::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14478:14:::1;14462:13;;:30;;;;;;;;;;;;;;;;;;14364:136:::0;:::o;19861:110::-;19919:4;19943:11;:20;19955:7;19943:20;;;;;;;;;;;;;;;;;;;;;;;;;19936:27;;19861:110;;;:::o;15947:126::-;16021:7;16053:12;;16046:19;;15947:126;:::o;17212:189::-;17330:7;17362:14;:22;17377:6;17362:22;;;;;;;;;;;;;;;:31;17385:7;17362:31;;;;;;;;;;;;;;;;17355:38;;17212:189;;;;:::o;21292:354::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21374:11:::1;:20;21386:7;21374:20;;;;;;;;;;;;;;;;;;;;;;;;;21373:21;21365:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21466:1;21440:14;:23;21455:7;21440:23;;;;;;;;;;;;;;;;:27;21437:130;;;21511:44;21531:14;:23;21546:7;21531:23;;;;;;;;;;;;;;;;21511:19;:44::i;:::-;21484:15;:24;21500:7;21484:24;;;;;;;;;;;;;;;:71;;;;21437:130;21600:4;21577:11;:20;21589:7;21577:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21615:9;21630:7;21615:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21292:354:::0;:::o;1150:244::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1259:1:::1;1239:22;;:8;:22;;;;1231:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:8;1320:38;;1341:6;;;;;;;;;;;1320:38;;;;;;;;;;;;1378:8;1369:6;;:17;;;;;;;;;;;;;;;;;;1150:244:::0;:::o;13026:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;16081:140::-;16161:7;16193:14;:20;16208:4;16193:20;;;;;;;;;;;;;;;;16186:27;;16081:140;;;:::o;21654:486::-;917:12;:10;:12::i;:::-;907:22;;:6;;;;;;;;;;;:22;;;899:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21735:11:::1;:20;21747:7;21735:20;;;;;;;;;;;;;;;;;;;;;;;;;21727:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21803:9;21798:335;21822:9;:16;;;;21818:1;:20;21798:335;;;21880:7;21864:23;;:9;21874:1;21864:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21860:262;;;21923:9;21952:1;21933:9;:16;;;;:20;21923:31;;;;;;;;;;;;;;;;;;;;;;;;;21908:9;21918:1;21908:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22000:1;21973:15;:24;21989:7;21973:24;;;;;;;;;;;;;;;:28;;;;22043:5;22020:11;:20;22032:7;22020:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22067:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22101:5;;21860:262;21840:3;;;;;;;21798:335;;;;21654:486:::0;:::o;95:106::-;148:15;183:10;176:17;;95:106;:::o;25820:488::-;25884:7;25893;25902;25911;25920;25941:28;25971:17;25992:25;26004:12;25992:11;:25::i;:::-;25940:77;;;;26028:19;26051:23;:21;:23::i;:::-;26028:46;;26086:19;26107:27;26136:16;26156:49;26168:12;26182:9;26193:11;26156;:49::i;:::-;26085:120;;;;;;26224:11;26237:19;26258:8;26268:20;26290:9;26216:84;;;;;;;;;;;;;;;;25820:488;;;;;;;:::o;2305:136::-;2363:7;2390:43;2394:1;2397;2390:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2383:50;;2305:136;;;;:::o;2116:181::-;2174:7;2194:9;2210:1;2206;:5;2194:17;;2235:1;2230;:6;;2222:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2288:1;2281:8;;;2116:181;;;;:::o;22152:948::-;22284:1;22266:20;;:6;:20;;;;22258:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:1;22347:23;;:9;:23;;;;22339:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22438:1;22429:6;:10;22421:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22500:11;:19;22512:6;22500:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;22524:11;:22;22536:9;22524:22;;;;;;;;;;;;;;;;;;;;;;;;;22523:23;22500:46;22496:597;;;22563:48;22585:6;22593:9;22604:6;22563:21;:48::i;:::-;22496:597;;;22634:11;:19;22646:6;22634:19;;;;;;;;;;;;;;;;;;;;;;;;;22633:20;:46;;;;;22657:11;:22;22669:9;22657:22;;;;;;;;;;;;;;;;;;;;;;;;;22633:46;22629:464;;;22696:46;22716:6;22724:9;22735:6;22696:19;:46::i;:::-;22629:464;;;22765:11;:19;22777:6;22765:19;;;;;;;;;;;;;;;;;;;;;;;;;22764:20;:47;;;;;22789:11;:22;22801:9;22789:22;;;;;;;;;;;;;;;;;;;;;;;;;22788:23;22764:47;22760:333;;;22828:44;22846:6;22854:9;22865:6;22828:17;:44::i;:::-;22760:333;;;22894:11;:19;22906:6;22894:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;22917:11;:22;22929:9;22917:22;;;;;;;;;;;;;;;;;;;;;;;;;22894:45;22890:203;;;22956:48;22978:6;22986:9;22997:6;22956:21;:48::i;:::-;22890:203;;;23037:44;23055:6;23063:9;23074:6;23037:17;:44::i;:::-;22890:203;22760:333;22629:464;22496:597;22152:948;;;:::o;2449:192::-;2535:7;2568:1;2563;:6;;2571:12;2555:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2595:9;2611:1;2607;:5;2595:17;;2632:1;2625:8;;;2449:192;;;;;:::o;26999:207::-;27053:7;27074:19;27095:20;27119:32;:30;:32::i;:::-;27073:78;;;;27169:29;27185:12;27169:11;:15;;:29;;;;:::i;:::-;27162:36;;;;26999:207;:::o;2907:132::-;2965:7;2992:39;2996:1;2999;2992:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2985:46;;2907:132;;;;:::o;2649:250::-;2707:7;2736:1;2731;:6;2727:47;;;2761:1;2754:8;;;;2727:47;2786:9;2802:1;2798;:5;2786:17;;2831:1;2826;2822;:5;;;;;;:10;2814:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2890:1;2883:8;;;2649:250;;;;;:::o;26316:281::-;26381:7;26390;26410:17;26430:39;26456:12;;26430:21;26447:3;26430:12;:16;;:21;;;;:::i;:::-;:25;;:39;;;;:::i;:::-;26410:59;;26480:28;26511:27;26528:9;26511:12;:16;;:27;;;;:::i;:::-;26480:58;;26557:20;26579:9;26549:40;;;;;;26316:281;;;:::o;26605:386::-;26710:7;26719;26728;26748:19;26770:29;26787:11;26770:12;:16;;:29;;;;:::i;:::-;26748:51;;26810:16;26829:26;26843:11;26829:9;:13;;:26;;;;:::i;:::-;26810:45;;26866:27;26896:25;26912:8;26896:11;:15;;:25;;;;:::i;:::-;26866:55;;26940:11;26953:19;26974:8;26932:51;;;;;;;;;26605:386;;;;;;;:::o;24290:612::-;24398:19;24419:27;24448:16;24466:28;24496:17;24517:24;24528:12;24517:10;:24::i;:::-;24397:144;;;;;;;;;;24578:41;24606:12;24578:15;:23;24594:6;24578:23;;;;;;;;;;;;;;;;:27;;:41;;;;:::i;:::-;24552:15;:23;24568:6;24552:23;;;;;;;;;;;;;;;:67;;;;24655:39;24682:11;24655:14;:22;24670:6;24655:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;24630:14;:22;24645:6;24630:22;;;;;;;;;;;;;;;:64;;;;24733:50;24763:19;24733:14;:25;24748:9;24733:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;24705:14;:25;24720:9;24705:25;;;;;;;;;;;;;;;:78;;;;24797:32;24809:8;24819:9;24797:11;:32::i;:::-;24862:9;24845:49;;24854:6;24845:49;;;24873:20;24845:49;;;;;;;;;;;;;;;;;;24290:612;;;;;;;;:::o;23650:632::-;23756:19;23777:27;23806:16;23824:28;23854:17;23875:24;23886:12;23875:10;:24::i;:::-;23755:144;;;;;;;;;;23935:39;23962:11;23935:14;:22;23950:6;23935:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;23910:14;:22;23925:6;23910:22;;;;;;;;;;;;;;;:64;;;;24014:52;24045:20;24014:15;:26;24030:9;24014:26;;;;;;;;;;;;;;;;:30;;:52;;;;:::i;:::-;23985:15;:26;24001:9;23985:26;;;;;;;;;;;;;;;:81;;;;24105:50;24135:19;24105:14;:25;24120:9;24105:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;24077:14;:25;24092:9;24077:25;;;;;;;;;;;;;;;:78;;;;24177:32;24189:8;24199:9;24177:11;:32::i;:::-;24242:9;24225:49;;24234:6;24225:49;;;24253:20;24225:49;;;;;;;;;;;;;;;;;;23650:632;;;;;;;;:::o;23108:534::-;23212:19;23233:27;23262:16;23280:28;23310:17;23331:24;23342:12;23331:10;:24::i;:::-;23211:144;;;;;;;;;;23391:39;23418:11;23391:14;:22;23406:6;23391:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;23366:14;:22;23381:6;23366:22;;;;;;;;;;;;;;;:64;;;;23469:50;23499:19;23469:14;:25;23484:9;23469:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;23441:14;:25;23456:9;23441:25;;;;;;;;;;;;;;;:78;;;;23537:32;23549:8;23559:9;23537:11;:32::i;:::-;23602:9;23585:49;;23594:6;23585:49;;;23613:20;23585:49;;;;;;;;;;;;;;;;;;23108:534;;;;;;;;:::o;24910:709::-;25018:19;25039:27;25068:16;25086:28;25116:17;25137:24;25148:12;25137:10;:24::i;:::-;25017:144;;;;;;;;;;25198:41;25226:12;25198:15;:23;25214:6;25198:23;;;;;;;;;;;;;;;;:27;;:41;;;;:::i;:::-;25172:15;:23;25188:6;25172:23;;;;;;;;;;;;;;;:67;;;;25275:39;25302:11;25275:14;:22;25290:6;25275:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;25250:14;:22;25265:6;25250:22;;;;;;;;;;;;;;;:64;;;;25354:52;25385:20;25354:15;:26;25370:9;25354:26;;;;;;;;;;;;;;;;:30;;:52;;;;:::i;:::-;25325:15;:26;25341:9;25325:26;;;;;;;;;;;;;;;:81;;;;25445:50;25475:19;25445:14;:25;25460:9;25445:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;25417:14;:25;25432:9;25417:25;;;;;;;;;;;;;;;:78;;;;25514:32;25526:8;25536:9;25514:11;:32::i;:::-;25579:9;25562:49;;25571:6;25562:49;;;25590:20;25562:49;;;;;;;;;;;;;;;;;;24910:709;;;;;;;;:::o;27214:693::-;27277:7;27286;27306:19;27328:12;;27306:34;;27351:20;27374:12;;27351:35;;27408:9;27403:356;27427:9;:16;;;;27423:1;:20;27403:356;;;27500:11;27469:14;:28;27484:9;27494:1;27484:12;;;;;;;;;;;;;;;;;;;;;;;;;27469:28;;;;;;;;;;;;;;;;:42;:90;;;;27547:12;27515:15;:29;27531:9;27541:1;27531:12;;;;;;;;;;;;;;;;;;;;;;;;;27515:29;;;;;;;;;;;;;;;;:44;27469:90;27465:131;;;27569:12;;27583;;27561:35;;;;;;;;;27465:131;27625:45;27641:14;:28;27656:9;27666:1;27656:12;;;;;;;;;;;;;;;;;;;;;;;;;27641:28;;;;;;;;;;;;;;;;27625:11;:15;;:45;;;;:::i;:::-;27611:59;;27700:47;27717:15;:29;27733:9;27743:1;27733:12;;;;;;;;;;;;;;;;;;;;;;;;;27717:29;;;;;;;;;;;;;;;;27700:12;:16;;:47;;;;:::i;:::-;27685:62;;27445:3;;;;;;;27403:356;;;;27787:30;27804:12;;27787;;:16;;:30;;;;:::i;:::-;27773:11;:44;27769:85;;;27827:12;;27841;;27819:35;;;;;;;;27769:85;27873:11;27886:12;27865:34;;;;;;27214:693;;;:::o;3047:191::-;3133:7;3165:1;3161;:5;3168:12;3153:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3192:9;3208:1;3204;:5;;;;;;3192:17;;3229:1;3222:8;;;3047:191;;;;;:::o;25627:185::-;25719:26;25736:8;25719:12;;:16;;:26;;;;:::i;:::-;25704:12;:41;;;;25774:30;25794:9;25774:15;;:19;;:30;;;;:::i;:::-;25756:15;:48;;;;25627:185;;:::o
Swarm Source
ipfs://620fa2e4c2e18be301fe0753ff5fa9aa79bf7b2e770765ff99e42891d14d1bf0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.