Source Code
Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 11 from a total of 11 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 1792581 | 394 days ago | IN | 0 S | 0.00007532 | ||||
| Approve | 1792109 | 394 days ago | IN | 0 S | 0.00004693 | ||||
| Approve | 1791753 | 394 days ago | IN | 0 S | 0.00007527 | ||||
| Exclude Account | 1791678 | 394 days ago | IN | 0 S | 0.00013103 | ||||
| Approve | 1790688 | 394 days ago | IN | 0 S | 0.00004692 | ||||
| Approve | 1790454 | 394 days ago | IN | 0 S | 0.00004692 | ||||
| Approve | 1790333 | 394 days ago | IN | 0 S | 0.00005767 | ||||
| Approve | 1790307 | 394 days ago | IN | 0 S | 0.00007299 | ||||
| Transfer | 1789992 | 394 days ago | IN | 0 S | 0.0000651 | ||||
| Transfer | 1789945 | 394 days ago | IN | 0 S | 0.00008485 | ||||
| Transfer | 1789913 | 394 days ago | IN | 0 S | 0.0001046 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ponzi
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2024-12-28
*/
// File: browser/Context.sol
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: browser/Ownable.sol
pragma solidity ^0.8.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File: browser/Address.sol
pragma solidity ^0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
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");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: browser/SafeMath.sol
pragma solidity ^0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// File: browser/IERC20.sol
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: browser/ponzi.sol
// ponzi.finance: DeFi token with 2% reflect redistribution tax
pragma solidity ^0.8.0;
contract ponzi is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcluded;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private constant _tTotal = 10 * 10**6 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = 'ponzi.finance';
string private _symbol = 'PFI';
uint8 private _decimals = 9;
constructor () public {
_rOwned[_msgSender()] = _rTotal;
emit Transfer(address(0), _msgSender(), _tTotal);
}
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 override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public 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 isExcluded(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function reflect(uint256 tAmount) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(uint256 rAmount,,,,) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
(uint256 rAmount,,,,) = _getValues(tAmount);
return rAmount;
} else {
(,uint256 rTransferAmount,,,) = _getValues(tAmount);
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeAccount(address account) external onlyOwner() {
require(!_isExcluded[account], "Account is already excluded");
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeAccount(address account) external onlyOwner() {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function _approve(address owner, address spender, uint256 amount) private {
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 _transfer(address sender, address recipient, uint256 amount) private {
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 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
(uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
}
function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
uint256 tFee = tAmount.mul(2).div(100);
uint256 tTransferAmount = tAmount.sub(tFee);
return (tTransferAmount, tFee);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","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"}]Contract Creation Code
6080604052662386f26fc100006000196200001b9190620003dd565b6000196200002a919062000362565b6006556040518060400160405280600d81526020017f706f6e7a692e66696e616e636500000000000000000000000000000000000000815250600890805190602001906200007a92919062000284565b506040518060400160405280600381526020017f504649000000000000000000000000000000000000000000000000000000000081525060099080519060200190620000c892919062000284565b506009600a60006101000a81548160ff021916908360ff160217905550348015620000f257600080fd5b506000620001056200027c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001ba6200027c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002086200027c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200026e919062000345565b60405180910390a3620004a2565b600033905090565b8280546200029290620003a7565b90600052602060002090601f016020900481019282620002b6576000855562000302565b82601f10620002d157805160ff191683800117855562000302565b8280016001018555821562000302579182015b8281111562000301578251825591602001919060010190620002e4565b5b50905062000311919062000315565b5090565b5b808211156200033057600081600090555060010162000316565b5090565b6200033f816200039d565b82525050565b60006020820190506200035c600083018462000334565b92915050565b60006200036f826200039d565b91506200037c836200039d565b92508282101562000392576200039162000415565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003c057607f821691505b60208210811415620003d757620003d662000473565b5b50919050565b6000620003ea826200039d565b9150620003f7836200039d565b9250826200040a576200040962000444565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61360f80620004b26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612bbd565b61044a565b005b6101606105c4565b60405161016d91906130bd565b60405180910390f35b610190600480360381019061018b9190612b81565b610656565b60405161019d91906130a2565b60405180910390f35b6101ae610674565b6040516101bb919061323f565b60405180910390f35b6101cc61067e565b6040516101d9919061323f565b60405180910390f35b6101fc60048036038101906101f79190612b32565b61068d565b60405161020991906130a2565b60405180910390f35b61022c60048036038101906102279190612bbd565b610766565b604051610239919061323f565b60405180910390f35b61024a6107d4565b604051610257919061325a565b60405180910390f35b61027a60048036038101906102759190612b81565b6107eb565b60405161028791906130a2565b60405180910390f35b6102aa60048036038101906102a59190612be6565b61089e565b6040516102b7919061323f565b60405180910390f35b6102da60048036038101906102d59190612acd565b610925565b6040516102e7919061323f565b60405180910390f35b6102f8610a10565b005b610302610b4a565b60405161030f9190613087565b60405180910390f35b610320610b73565b60405161032d91906130bd565b60405180910390f35b610350600480360381019061034b9190612b81565b610c05565b60405161035d91906130a2565b60405180910390f35b610380600480360381019061037b9190612b81565b610cd2565b60405161038d91906130a2565b60405180910390f35b6103b060048036038101906103ab9190612acd565b610cf0565b6040516103bd91906130a2565b60405180910390f35b6103e060048036038101906103db9190612af6565b610d46565b6040516103ed919061323f565b60405180910390f35b610410600480360381019061040b9190612acd565b610dcd565b005b61042c60048036038101906104279190612acd565b611068565b005b61044860048036038101906104439190612acd565b611211565b005b60006104546115df565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061321f565b60405180910390fd5b60006104ee836115e7565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461163f90919063ffffffff16565b6006819055506105b98360075461165590919063ffffffff16565b600781905550505050565b6060600880546105d39061342e565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff9061342e565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115df565b848461166b565b6001905092915050565b6000600754905090565b6000662386f26fc10000905090565b600061069a848484611836565b61075b846106a66115df565b6107568560405180606001604052806028815260200161358d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070c6115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4d9092919063ffffffff16565b61166b565b600190509392505050565b60006006548211156107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a4906130ff565b60405180910390fd5b60006107b7611ca2565b90506107cc8184611ccd90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108946107f86115df565b8461088f85600360006108096115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b61166b565b6001905092915050565b6000662386f26fc100008311156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e19061317f565b60405180910390fd5b816109095760006108fa846115e7565b5050505090508091505061091f565b6000610914846115e7565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c057600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a0b565b610a08600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610766565b90505b919050565b610a186115df565b73ffffffffffffffffffffffffffffffffffffffff16610a36610b4a565b73ffffffffffffffffffffffffffffffffffffffff1614610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061319f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610b829061342e565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae9061342e565b8015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b5050505050905090565b6000610cc8610c126115df565b84610cc3856040518060600160405280602581526020016135b56025913960036000610c3c6115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4d9092919063ffffffff16565b61166b565b6001905092915050565b6000610ce6610cdf6115df565b8484611836565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dd56115df565b73ffffffffffffffffffffffffffffffffffffffff16610df3610b4a565b73ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061319f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd9061315f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610faa57610f66600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610766565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110706115df565b73ffffffffffffffffffffffffffffffffffffffff1661108e610b4a565b73ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061319f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b9061311f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112196115df565b73ffffffffffffffffffffffffffffffffffffffff16611237610b4a565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112849061319f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061315f565b60405180910390fd5b60005b6005805490508110156115db578173ffffffffffffffffffffffffffffffffffffffff166005828154811061137a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115c857600560016005805490506113d59190613372565b8154811061140c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061158e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115db565b80806115d390613460565b91505061131c565b5050565b600033905090565b60008060008060008060006115fb88611ce3565b915091506000611609611ca2565b9050600080600061161b8c8686611d35565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b6000818361164d9190613372565b905092915050565b600081836116639190613291565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d2906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117429061313f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611829919061323f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d906131df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906130df565b60405180910390fd5b60008111611959576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611950906131bf565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119fc5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1157611a0c838383611d93565b611c48565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ac957611ac4838383611fe6565b611c47565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b6d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8257611b7d838383612239565b611c46565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c245750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c3957611c348383836123f7565b611c45565b611c44838383612239565b5b5b5b5b505050565b6000838311158290611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c91906130bd565b60405180910390fd5b5082840390509392505050565b6000806000611caf6126df565b91509150611cc68183611ccd90919063ffffffff16565b9250505090565b60008183611cdb91906132e7565b905092915050565b6000806000611d0f6064611d01600287612a3e90919063ffffffff16565b611ccd90919063ffffffff16565b90506000611d26828661163f90919063ffffffff16565b90508082935093505050915091565b600080600080611d4e8588612a3e90919063ffffffff16565b90506000611d658688612a3e90919063ffffffff16565b90506000611d7c828461163f90919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611da4866115e7565b94509450945094509450611e0086600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f778382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd4919061323f565b60405180910390a35050505050505050565b6000806000806000611ff7866115e7565b9450945094509450945061205385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e882600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217d84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ca8382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612227919061323f565b60405180910390a35050505050505050565b600080600080600061224a866115e7565b945094509450945094506122a685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233b84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123888382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e5919061323f565b60405180910390a35050505050505050565b6000806000806000612408866115e7565b9450945094509450945061246486600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258e82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262384600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126708382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cd919061323f565b60405180910390a35050505050505050565b600080600060065490506000662386f26fc10000905060005b6005805490508110156129f757826001600060058481548110612744577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061285857508160026000600584815481106127f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561287457600654662386f26fc1000094509450505050612a3a565b61292a60016000600584815481106128b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461163f90919063ffffffff16565b92506129e2600260006005848154811061296d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361163f90919063ffffffff16565b915080806129ef90613460565b9150506126f8565b50612a14662386f26fc10000600654611ccd90919063ffffffff16565b821015612a3157600654662386f26fc10000935093505050612a3a565b81819350935050505b9091565b60008183612a4c9190613318565b905092915050565b612a698260065461163f90919063ffffffff16565b600681905550612a848160075461165590919063ffffffff16565b6007819055505050565b600081359050612a9d81613547565b92915050565b600081359050612ab28161355e565b92915050565b600081359050612ac781613575565b92915050565b600060208284031215612adf57600080fd5b6000612aed84828501612a8e565b91505092915050565b60008060408385031215612b0957600080fd5b6000612b1785828601612a8e565b9250506020612b2885828601612a8e565b9150509250929050565b600080600060608486031215612b4757600080fd5b6000612b5586828701612a8e565b9350506020612b6686828701612a8e565b9250506040612b7786828701612ab8565b9150509250925092565b60008060408385031215612b9457600080fd5b6000612ba285828601612a8e565b9250506020612bb385828601612ab8565b9150509250929050565b600060208284031215612bcf57600080fd5b6000612bdd84828501612ab8565b91505092915050565b60008060408385031215612bf957600080fd5b6000612c0785828601612ab8565b9250506020612c1885828601612aa3565b9150509250929050565b612c2b816133a6565b82525050565b612c3a816133b8565b82525050565b6000612c4b82613275565b612c558185613280565b9350612c658185602086016133fb565b612c6e81613536565b840191505092915050565b6000612c86602383613280565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612cec602a83613280565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d52602683613280565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612db8602283613280565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e1e601b83613280565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000612e5e601f83613280565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000612e9e602083613280565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612ede602983613280565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f44602583613280565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612faa602483613280565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613010602c83613280565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b613072816133e4565b82525050565b613081816133ee565b82525050565b600060208201905061309c6000830184612c22565b92915050565b60006020820190506130b76000830184612c31565b92915050565b600060208201905081810360008301526130d78184612c40565b905092915050565b600060208201905081810360008301526130f881612c79565b9050919050565b6000602082019050818103600083015261311881612cdf565b9050919050565b6000602082019050818103600083015261313881612d45565b9050919050565b6000602082019050818103600083015261315881612dab565b9050919050565b6000602082019050818103600083015261317881612e11565b9050919050565b6000602082019050818103600083015261319881612e51565b9050919050565b600060208201905081810360008301526131b881612e91565b9050919050565b600060208201905081810360008301526131d881612ed1565b9050919050565b600060208201905081810360008301526131f881612f37565b9050919050565b6000602082019050818103600083015261321881612f9d565b9050919050565b6000602082019050818103600083015261323881613003565b9050919050565b60006020820190506132546000830184613069565b92915050565b600060208201905061326f6000830184613078565b92915050565b600081519050919050565b600082825260208201905092915050565b600061329c826133e4565b91506132a7836133e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132dc576132db6134a9565b5b828201905092915050565b60006132f2826133e4565b91506132fd836133e4565b92508261330d5761330c6134d8565b5b828204905092915050565b6000613323826133e4565b915061332e836133e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613367576133666134a9565b5b828202905092915050565b600061337d826133e4565b9150613388836133e4565b92508282101561339b5761339a6134a9565b5b828203905092915050565b60006133b1826133c4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156134195780820151818401526020810190506133fe565b83811115613428576000848401525b50505050565b6000600282049050600182168061344657607f821691505b6020821081141561345a57613459613507565b5b50919050565b600061346b826133e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561349e5761349d6134a9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613550816133a6565b811461355b57600080fd5b50565b613567816133b8565b811461357257600080fd5b50565b61357e816133e4565b811461358957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e97910eff497dda211cd2af356a7d31e29cc70fbafbf684d11d46f8cba9c994a64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612bbd565b61044a565b005b6101606105c4565b60405161016d91906130bd565b60405180910390f35b610190600480360381019061018b9190612b81565b610656565b60405161019d91906130a2565b60405180910390f35b6101ae610674565b6040516101bb919061323f565b60405180910390f35b6101cc61067e565b6040516101d9919061323f565b60405180910390f35b6101fc60048036038101906101f79190612b32565b61068d565b60405161020991906130a2565b60405180910390f35b61022c60048036038101906102279190612bbd565b610766565b604051610239919061323f565b60405180910390f35b61024a6107d4565b604051610257919061325a565b60405180910390f35b61027a60048036038101906102759190612b81565b6107eb565b60405161028791906130a2565b60405180910390f35b6102aa60048036038101906102a59190612be6565b61089e565b6040516102b7919061323f565b60405180910390f35b6102da60048036038101906102d59190612acd565b610925565b6040516102e7919061323f565b60405180910390f35b6102f8610a10565b005b610302610b4a565b60405161030f9190613087565b60405180910390f35b610320610b73565b60405161032d91906130bd565b60405180910390f35b610350600480360381019061034b9190612b81565b610c05565b60405161035d91906130a2565b60405180910390f35b610380600480360381019061037b9190612b81565b610cd2565b60405161038d91906130a2565b60405180910390f35b6103b060048036038101906103ab9190612acd565b610cf0565b6040516103bd91906130a2565b60405180910390f35b6103e060048036038101906103db9190612af6565b610d46565b6040516103ed919061323f565b60405180910390f35b610410600480360381019061040b9190612acd565b610dcd565b005b61042c60048036038101906104279190612acd565b611068565b005b61044860048036038101906104439190612acd565b611211565b005b60006104546115df565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061321f565b60405180910390fd5b60006104ee836115e7565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461163f90919063ffffffff16565b6006819055506105b98360075461165590919063ffffffff16565b600781905550505050565b6060600880546105d39061342e565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff9061342e565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115df565b848461166b565b6001905092915050565b6000600754905090565b6000662386f26fc10000905090565b600061069a848484611836565b61075b846106a66115df565b6107568560405180606001604052806028815260200161358d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070c6115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4d9092919063ffffffff16565b61166b565b600190509392505050565b60006006548211156107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a4906130ff565b60405180910390fd5b60006107b7611ca2565b90506107cc8184611ccd90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108946107f86115df565b8461088f85600360006108096115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b61166b565b6001905092915050565b6000662386f26fc100008311156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e19061317f565b60405180910390fd5b816109095760006108fa846115e7565b5050505090508091505061091f565b6000610914846115e7565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c057600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a0b565b610a08600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610766565b90505b919050565b610a186115df565b73ffffffffffffffffffffffffffffffffffffffff16610a36610b4a565b73ffffffffffffffffffffffffffffffffffffffff1614610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061319f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610b829061342e565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae9061342e565b8015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b5050505050905090565b6000610cc8610c126115df565b84610cc3856040518060600160405280602581526020016135b56025913960036000610c3c6115df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4d9092919063ffffffff16565b61166b565b6001905092915050565b6000610ce6610cdf6115df565b8484611836565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dd56115df565b73ffffffffffffffffffffffffffffffffffffffff16610df3610b4a565b73ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061319f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd9061315f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610faa57610f66600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610766565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110706115df565b73ffffffffffffffffffffffffffffffffffffffff1661108e610b4a565b73ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061319f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b9061311f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112196115df565b73ffffffffffffffffffffffffffffffffffffffff16611237610b4a565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112849061319f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061315f565b60405180910390fd5b60005b6005805490508110156115db578173ffffffffffffffffffffffffffffffffffffffff166005828154811061137a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115c857600560016005805490506113d59190613372565b8154811061140c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061158e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115db565b80806115d390613460565b91505061131c565b5050565b600033905090565b60008060008060008060006115fb88611ce3565b915091506000611609611ca2565b9050600080600061161b8c8686611d35565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b6000818361164d9190613372565b905092915050565b600081836116639190613291565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d2906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117429061313f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611829919061323f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d906131df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906130df565b60405180910390fd5b60008111611959576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611950906131bf565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119fc5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1157611a0c838383611d93565b611c48565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ac957611ac4838383611fe6565b611c47565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b6d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8257611b7d838383612239565b611c46565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c245750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c3957611c348383836123f7565b611c45565b611c44838383612239565b5b5b5b5b505050565b6000838311158290611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c91906130bd565b60405180910390fd5b5082840390509392505050565b6000806000611caf6126df565b91509150611cc68183611ccd90919063ffffffff16565b9250505090565b60008183611cdb91906132e7565b905092915050565b6000806000611d0f6064611d01600287612a3e90919063ffffffff16565b611ccd90919063ffffffff16565b90506000611d26828661163f90919063ffffffff16565b90508082935093505050915091565b600080600080611d4e8588612a3e90919063ffffffff16565b90506000611d658688612a3e90919063ffffffff16565b90506000611d7c828461163f90919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611da4866115e7565b94509450945094509450611e0086600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f778382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd4919061323f565b60405180910390a35050505050505050565b6000806000806000611ff7866115e7565b9450945094509450945061205385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e882600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217d84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ca8382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612227919061323f565b60405180910390a35050505050505050565b600080600080600061224a866115e7565b945094509450945094506122a685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233b84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123888382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e5919061323f565b60405180910390a35050505050505050565b6000806000806000612408866115e7565b9450945094509450945061246486600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163f90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258e82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262384600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165590919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126708382612a54565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cd919061323f565b60405180910390a35050505050505050565b600080600060065490506000662386f26fc10000905060005b6005805490508110156129f757826001600060058481548110612744577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061285857508160026000600584815481106127f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561287457600654662386f26fc1000094509450505050612a3a565b61292a60016000600584815481106128b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461163f90919063ffffffff16565b92506129e2600260006005848154811061296d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361163f90919063ffffffff16565b915080806129ef90613460565b9150506126f8565b50612a14662386f26fc10000600654611ccd90919063ffffffff16565b821015612a3157600654662386f26fc10000935093505050612a3a565b81819350935050505b9091565b60008183612a4c9190613318565b905092915050565b612a698260065461163f90919063ffffffff16565b600681905550612a848160075461165590919063ffffffff16565b6007819055505050565b600081359050612a9d81613547565b92915050565b600081359050612ab28161355e565b92915050565b600081359050612ac781613575565b92915050565b600060208284031215612adf57600080fd5b6000612aed84828501612a8e565b91505092915050565b60008060408385031215612b0957600080fd5b6000612b1785828601612a8e565b9250506020612b2885828601612a8e565b9150509250929050565b600080600060608486031215612b4757600080fd5b6000612b5586828701612a8e565b9350506020612b6686828701612a8e565b9250506040612b7786828701612ab8565b9150509250925092565b60008060408385031215612b9457600080fd5b6000612ba285828601612a8e565b9250506020612bb385828601612ab8565b9150509250929050565b600060208284031215612bcf57600080fd5b6000612bdd84828501612ab8565b91505092915050565b60008060408385031215612bf957600080fd5b6000612c0785828601612ab8565b9250506020612c1885828601612aa3565b9150509250929050565b612c2b816133a6565b82525050565b612c3a816133b8565b82525050565b6000612c4b82613275565b612c558185613280565b9350612c658185602086016133fb565b612c6e81613536565b840191505092915050565b6000612c86602383613280565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612cec602a83613280565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d52602683613280565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612db8602283613280565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e1e601b83613280565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000612e5e601f83613280565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000612e9e602083613280565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612ede602983613280565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f44602583613280565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612faa602483613280565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613010602c83613280565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b613072816133e4565b82525050565b613081816133ee565b82525050565b600060208201905061309c6000830184612c22565b92915050565b60006020820190506130b76000830184612c31565b92915050565b600060208201905081810360008301526130d78184612c40565b905092915050565b600060208201905081810360008301526130f881612c79565b9050919050565b6000602082019050818103600083015261311881612cdf565b9050919050565b6000602082019050818103600083015261313881612d45565b9050919050565b6000602082019050818103600083015261315881612dab565b9050919050565b6000602082019050818103600083015261317881612e11565b9050919050565b6000602082019050818103600083015261319881612e51565b9050919050565b600060208201905081810360008301526131b881612e91565b9050919050565b600060208201905081810360008301526131d881612ed1565b9050919050565b600060208201905081810360008301526131f881612f37565b9050919050565b6000602082019050818103600083015261321881612f9d565b9050919050565b6000602082019050818103600083015261323881613003565b9050919050565b60006020820190506132546000830184613069565b92915050565b600060208201905061326f6000830184613078565b92915050565b600081519050919050565b600082825260208201905092915050565b600061329c826133e4565b91506132a7836133e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132dc576132db6134a9565b5b828201905092915050565b60006132f2826133e4565b91506132fd836133e4565b92508261330d5761330c6134d8565b5b828204905092915050565b6000613323826133e4565b915061332e836133e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613367576133666134a9565b5b828202905092915050565b600061337d826133e4565b9150613388836133e4565b92508282101561339b5761339a6134a9565b5b828203905092915050565b60006133b1826133c4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156134195780820151818401526020810190506133fe565b83811115613428576000848401525b50505050565b6000600282049050600182168061344657607f821691505b6020821081141561345a57613459613507565b5b50919050565b600061346b826133e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561349e5761349d6134a9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613550816133a6565b811461355b57600080fd5b50565b613567816133b8565b811461357257600080fd5b50565b61357e816133e4565b811461358957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e97910eff497dda211cd2af356a7d31e29cc70fbafbf684d11d46f8cba9c994a64736f6c63430008000033
Deployed Bytecode Sourcemap
20884:10118:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23844:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21726:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22638:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23749:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22003:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22807:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24670:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21912:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23128:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24228:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22106:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2666:148;;;:::i;:::-;;2015:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21817;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23354:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22312:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23631:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22487:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24931:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2969:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25271:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23844:376;23896:14;23913:12;:10;:12::i;:::-;23896:29;;23945:11;:19;23957:6;23945:19;;;;;;;;;;;;;;;;;;;;;;;;;23944:20;23936:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;24025:15;24048:19;24059:7;24048:10;:19::i;:::-;24024:43;;;;;;24096:28;24116:7;24096;:15;24104:6;24096:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24078:7;:15;24086:6;24078:15;;;;;;;;;;;;;;;:46;;;;24145:20;24157:7;24145;;:11;;:20;;;;:::i;:::-;24135:7;:30;;;;24189:23;24204:7;24189:10;;:14;;:23;;;;:::i;:::-;24176:10;:36;;;;23844:376;;;:::o;21726:83::-;21763:13;21796:5;21789:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21726:83;:::o;22638:161::-;22713:4;22730:39;22739:12;:10;:12::i;:::-;22753:7;22762:6;22730:8;:39::i;:::-;22787:4;22780:11;;22638:161;;;;:::o;23749:87::-;23791:7;23818:10;;23811:17;;23749:87;:::o;22003:95::-;22056:7;21353:18;22076:14;;22003:95;:::o;22807:313::-;22905:4;22922:36;22932:6;22940:9;22951:6;22922:9;:36::i;:::-;22969:121;22978:6;22986:12;:10;:12::i;:::-;23000:89;23038:6;23000:89;;;;;;;;;;;;;;;;;:11;:19;23012:6;23000:19;;;;;;;;;;;;;;;:33;23020:12;:10;:12::i;:::-;23000:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22969:8;:121::i;:::-;23108:4;23101:11;;22807:313;;;;;:::o;24670:253::-;24736:7;24775;;24764;:18;;24756:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24840:19;24863:10;:8;:10::i;:::-;24840:33;;24891:24;24903:11;24891:7;:11;;:24;;;;:::i;:::-;24884:31;;;24670:253;;;:::o;21912:83::-;21953:5;21978:9;;;;;;;;;;;21971:16;;21912:83;:::o;23128:218::-;23216:4;23233:83;23242:12;:10;:12::i;:::-;23256:7;23265:50;23304:10;23265:11;:25;23277:12;:10;:12::i;:::-;23265:25;;;;;;;;;;;;;;;:34;23291:7;23265:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;23233:8;:83::i;:::-;23334:4;23327:11;;23128:218;;;;:::o;24228:434::-;24318:7;21353:18;24346:7;:18;;24338:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24416:17;24411:244;;24451:15;24474:19;24485:7;24474:10;:19::i;:::-;24450:43;;;;;;24515:7;24508:14;;;;;24411:244;24557:23;24587:19;24598:7;24587:10;:19::i;:::-;24555:51;;;;;;24628:15;24621:22;;;24228:434;;;;;:::o;22106:198::-;22172:7;22196:11;:20;22208:7;22196:20;;;;;;;;;;;;;;;;;;;;;;;;;22192:49;;;22225:7;:16;22233:7;22225:16;;;;;;;;;;;;;;;;22218:23;;;;22192:49;22259:37;22279:7;:16;22287:7;22279:16;;;;;;;;;;;;;;;;22259:19;:37::i;:::-;22252:44;;22106:198;;;;:::o;2666:148::-;2246:12;:10;:12::i;:::-;2235:23;;:7;:5;:7::i;:::-;:23;;;2227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2773:1:::1;2736:40;;2757:6;::::0;::::1;;;;;;;;2736:40;;;;;;;;;;;;2804:1;2787:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2666:148::o:0;2015:87::-;2061:7;2088:6;;;;;;;;;;;2081:13;;2015:87;:::o;21817:::-;21856:13;21889:7;21882:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21817:87;:::o;23354:269::-;23447:4;23464:129;23473:12;:10;:12::i;:::-;23487:7;23496:96;23535:15;23496:96;;;;;;;;;;;;;;;;;:11;:25;23508:12;:10;:12::i;:::-;23496:25;;;;;;;;;;;;;;;:34;23522:7;23496:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;23464:8;:129::i;:::-;23611:4;23604:11;;23354:269;;;;:::o;22312:167::-;22390:4;22407:42;22417:12;:10;:12::i;:::-;22431:9;22442:6;22407:9;:42::i;:::-;22467:4;22460:11;;22312:167;;;;:::o;23631:110::-;23689:4;23713:11;:20;23725:7;23713:20;;;;;;;;;;;;;;;;;;;;;;;;;23706:27;;23631:110;;;:::o;22487:143::-;22568:7;22595:11;:18;22607:5;22595:18;;;;;;;;;;;;;;;:27;22614:7;22595:27;;;;;;;;;;;;;;;;22588:34;;22487:143;;;;:::o;24931:332::-;2246:12;:10;:12::i;:::-;2235:23;;:7;:5;:7::i;:::-;:23;;;2227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25013:11:::1;:20;25025:7;25013:20;;;;;;;;;;;;;;;;;;;;;;;;;25012:21;25004:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25098:1;25079:7;:16;25087:7;25079:16;;;;;;;;;;;;;;;;:20;25076:108;;;25135:37;25155:7;:16;25163:7;25155:16;;;;;;;;;;;;;;;;25135:19;:37::i;:::-;25116:7;:16;25124:7;25116:16;;;;;;;;;;;;;;;:56;;;;25076:108;25217:4;25194:11;:20;25206:7;25194:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25232:9;25247:7;25232:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24931:332:::0;:::o;2969:244::-;2246:12;:10;:12::i;:::-;2235:23;;:7;:5;:7::i;:::-;:23;;;2227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3078:1:::1;3058:22;;:8;:22;;;;3050:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3168:8;3139:38;;3160:6;::::0;::::1;;;;;;;;3139:38;;;;;;;;;;;;3197:8;3188:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2969:244:::0;:::o;25271:478::-;2246:12;:10;:12::i;:::-;2235:23;;:7;:5;:7::i;:::-;:23;;;2227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25352:11:::1;:20;25364:7;25352:20;;;;;;;;;;;;;;;;;;;;;;;;;25344:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25420:9;25415:327;25439:9;:16;;;;25435:1;:20;25415:327;;;25497:7;25481:23;;:9;25491:1;25481:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;25477:254;;;25540:9;25569:1;25550:9;:16;;;;:20;;;;:::i;:::-;25540:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25525:9;25535:1;25525:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25609:1;25590:7;:16;25598:7;25590:16;;;;;;;;;;;;;;;:20;;;;25652:5;25629:11;:20;25641:7;25629:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25676:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25710:5;;25477:254;25457:3;;;;;:::i;:::-;;;;25415:327;;;;25271:478:::0;:::o;602:98::-;655:7;682:10;675:17;;602:98;:::o;29274:411::-;29333:7;29342;29351;29360;29369;29390:23;29415:12;29431:20;29443:7;29431:11;:20::i;:::-;29389:62;;;;29462:19;29485:10;:8;:10::i;:::-;29462:33;;29507:15;29524:23;29549:12;29565:39;29577:7;29586:4;29592:11;29565;:39::i;:::-;29506:98;;;;;;29623:7;29632:15;29649:4;29655:15;29672:4;29615:62;;;;;;;;;;;;;;;;29274:411;;;;;;;:::o;14074:98::-;14132:7;14163:1;14159;:5;;;;:::i;:::-;14152:12;;14074:98;;;;:::o;13693:::-;13751:7;13782:1;13778;:5;;;;:::i;:::-;13771:12;;13693:98;;;;:::o;25757:337::-;25867:1;25850:19;;:5;:19;;;;25842:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25948:1;25929:21;;:7;:21;;;;25921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26032:6;26002:11;:18;26014:5;26002:18;;;;;;;;;;;;;;;:27;26021:7;26002:27;;;;;;;;;;;;;;;:36;;;;26070:7;26054:32;;26063:5;26054:32;;;26079:6;26054:32;;;;;;:::i;:::-;;;;;;;;25757:337;;;:::o;26102:931::-;26217:1;26199:20;;:6;:20;;;;26191:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26301:1;26280:23;;:9;:23;;;;26272:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26371:1;26362:6;:10;26354:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26433:11;:19;26445:6;26433:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;26457:11;:22;26469:9;26457:22;;;;;;;;;;;;;;;;;;;;;;;;;26456:23;26433:46;26429:597;;;26496:48;26518:6;26526:9;26537:6;26496:21;:48::i;:::-;26429:597;;;26567:11;:19;26579:6;26567:19;;;;;;;;;;;;;;;;;;;;;;;;;26566:20;:46;;;;;26590:11;:22;26602:9;26590:22;;;;;;;;;;;;;;;;;;;;;;;;;26566:46;26562:464;;;26629:46;26649:6;26657:9;26668:6;26629:19;:46::i;:::-;26562:464;;;26698:11;:19;26710:6;26698:19;;;;;;;;;;;;;;;;;;;;;;;;;26697:20;:47;;;;;26722:11;:22;26734:9;26722:22;;;;;;;;;;;;;;;;;;;;;;;;;26721:23;26697:47;26693:333;;;26761:44;26779:6;26787:9;26798:6;26761:17;:44::i;:::-;26693:333;;;26827:11;:19;26839:6;26827:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;26850:11;:22;26862:9;26850:22;;;;;;;;;;;;;;;;;;;;;;;;;26827:45;26823:203;;;26889:48;26911:6;26919:9;26930:6;26889:21;:48::i;:::-;26823:203;;;26970:44;26988:6;26996:9;27007:6;26970:17;:44::i;:::-;26823:203;26693:333;26562:464;26429:597;26102:931;;;:::o;15972:206::-;16058:7;16116:1;16111;:6;;16119:12;16103:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16158:1;16154;:5;16147:12;;15972:206;;;;;:::o;30273:163::-;30314:7;30335:15;30352;30371:19;:17;:19::i;:::-;30334:56;;;;30408:20;30420:7;30408;:11;;:20;;;;:::i;:::-;30401:27;;;;30273:163;:::o;14830:98::-;14888:7;14919:1;14915;:5;;;;:::i;:::-;14908:12;;14830:98;;;;:::o;29693:230::-;29753:7;29762;29782:12;29797:23;29816:3;29797:14;29809:1;29797:7;:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;29782:38;;29831:23;29857:17;29869:4;29857:7;:11;;:17;;;;:::i;:::-;29831:43;;29893:15;29910:4;29885:30;;;;;;29693:230;;;:::o;29931:334::-;30026:7;30035;30044;30064:15;30082:24;30094:11;30082:7;:11;;:24;;;;:::i;:::-;30064:42;;30117:12;30132:21;30141:11;30132:4;:8;;:21;;;;:::i;:::-;30117:36;;30164:23;30190:17;30202:4;30190:7;:11;;:17;;;;:::i;:::-;30164:43;;30226:7;30235:15;30252:4;30218:39;;;;;;;;;29931:334;;;;;;;:::o;28020:506::-;28123:15;28140:23;28165:12;28179:23;28204:12;28220:19;28231:7;28220:10;:19::i;:::-;28122:117;;;;;;;;;;28268:28;28288:7;28268;:15;28276:6;28268:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28250:7;:15;28258:6;28250:15;;;;;;;;;;;;;;;:46;;;;28325:28;28345:7;28325;:15;28333:6;28325:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28307:7;:15;28315:6;28307:15;;;;;;;;;;;;;;;:46;;;;28385:39;28408:15;28385:7;:18;28393:9;28385:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28364:7;:18;28372:9;28364:18;;;;;;;;;;;;;;;:60;;;;28435:23;28447:4;28453;28435:11;:23::i;:::-;28491:9;28474:44;;28483:6;28474:44;;;28502:15;28474:44;;;;;;:::i;:::-;;;;;;;;28020:506;;;;;;;;:::o;27494:518::-;27595:15;27612:23;27637:12;27651:23;27676:12;27692:19;27703:7;27692:10;:19::i;:::-;27594:117;;;;;;;;;;27740:28;27760:7;27740;:15;27748:6;27740:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27722:7;:15;27730:6;27722:15;;;;;;;;;;;;;;;:46;;;;27800:39;27823:15;27800:7;:18;27808:9;27800:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27779:7;:18;27787:9;27779:18;;;;;;;;;;;;;;;:60;;;;27871:39;27894:15;27871:7;:18;27879:9;27871:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27850:7;:18;27858:9;27850:18;;;;;;;;;;;;;;;:60;;;;27921:23;27933:4;27939;27921:11;:23::i;:::-;27977:9;27960:44;;27969:6;27960:44;;;27988:15;27960:44;;;;;;:::i;:::-;;;;;;;;27494:518;;;;;;;;:::o;27041:445::-;27140:15;27157:23;27182:12;27196:23;27221:12;27237:19;27248:7;27237:10;:19::i;:::-;27139:117;;;;;;;;;;27285:28;27305:7;27285;:15;27293:6;27285:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27267:7;:15;27275:6;27267:15;;;;;;;;;;;;;;;:46;;;;27345:39;27368:15;27345:7;:18;27353:9;27345:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27324:7;:18;27332:9;27324:18;;;;;;;;;;;;;;;:60;;;;27395:23;27407:4;27413;27395:11;:23::i;:::-;27451:9;27434:44;;27443:6;27434:44;;;27462:15;27434:44;;;;;;:::i;:::-;;;;;;;;27041:445;;;;;;;;:::o;28534:577::-;28637:15;28654:23;28679:12;28693:23;28718:12;28734:19;28745:7;28734:10;:19::i;:::-;28636:117;;;;;;;;;;28782:28;28802:7;28782;:15;28790:6;28782:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28764:7;:15;28772:6;28764:15;;;;;;;;;;;;;;;:46;;;;28839:28;28859:7;28839;:15;28847:6;28839:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28821:7;:15;28829:6;28821:15;;;;;;;;;;;;;;;:46;;;;28899:39;28922:15;28899:7;:18;28907:9;28899:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28878:7;:18;28886:9;28878:18;;;;;;;;;;;;;;;:60;;;;28970:39;28993:15;28970:7;:18;28978:9;28970:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28949:7;:18;28957:9;28949:18;;;;;;;;;;;;;;;:60;;;;29020:23;29032:4;29038;29020:11;:23::i;:::-;29076:9;29059:44;;29068:6;29059:44;;;29087:15;29059:44;;;;;;:::i;:::-;;;;;;;;28534:577;;;;;;;;:::o;30444:555::-;30494:7;30503;30523:15;30541:7;;30523:25;;30559:15;21353:18;30559:25;;30600:9;30595:289;30619:9;:16;;;;30615:1;:20;30595:289;;;30685:7;30661;:21;30669:9;30679:1;30669:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30661:21;;;;;;;;;;;;;;;;:31;:66;;;;30720:7;30696;:21;30704:9;30714:1;30704:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30696:21;;;;;;;;;;;;;;;;:31;30661:66;30657:97;;;30737:7;;21353:18;30729:25;;;;;;;;;30657:97;30779:34;30791:7;:21;30799:9;30809:1;30799:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30791:21;;;;;;;;;;;;;;;;30779:7;:11;;:34;;;;:::i;:::-;30769:44;;30838:34;30850:7;:21;30858:9;30868:1;30858:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30850:21;;;;;;;;;;;;;;;;30838:7;:11;;:34;;;;:::i;:::-;30828:44;;30637:3;;;;;:::i;:::-;;;;30595:289;;;;30908:20;21353:18;30908:7;;:11;;:20;;;;:::i;:::-;30898:7;:30;30894:61;;;30938:7;;21353:18;30930:25;;;;;;;;30894:61;30974:7;30983;30966:25;;;;;;30444:555;;;:::o;14431:98::-;14489:7;14520:1;14516;:5;;;;:::i;:::-;14509:12;;14431:98;;;;:::o;29119:147::-;29197:17;29209:4;29197:7;;:11;;:17;;;;:::i;:::-;29187:7;:27;;;;29238:20;29253:4;29238:10;;:14;;:20;;;;:::i;:::-;29225:10;:33;;;;29119:147;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:367::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3632:34;3628:1;3623:3;3619:11;3612:55;3698:5;3693:2;3688:3;3684:12;3677:27;3730:2;3725:3;3721:12;3714:19;;3518:221;;;:::o;3745:374::-;;3908:67;3972:2;3967:3;3908:67;:::i;:::-;3901:74;;4005:34;4001:1;3996:3;3992:11;3985:55;4071:12;4066:2;4061:3;4057:12;4050:34;4110:2;4105:3;4101:12;4094:19;;3891:228;;;:::o;4125:370::-;;4288:67;4352:2;4347:3;4288:67;:::i;:::-;4281:74;;4385:34;4381:1;4376:3;4372:11;4365:55;4451:8;4446:2;4441:3;4437:12;4430:30;4486:2;4481:3;4477:12;4470:19;;4271:224;;;:::o;4501:366::-;;4664:67;4728:2;4723:3;4664:67;:::i;:::-;4657:74;;4761:34;4757:1;4752:3;4748:11;4741:55;4827:4;4822:2;4817:3;4813:12;4806:26;4858:2;4853:3;4849:12;4842:19;;4647:220;;;:::o;4873:325::-;;5036:67;5100:2;5095:3;5036:67;:::i;:::-;5029:74;;5133:29;5129:1;5124:3;5120:11;5113:50;5189:2;5184:3;5180:12;5173:19;;5019:179;;;:::o;5204:329::-;;5367:67;5431:2;5426:3;5367:67;:::i;:::-;5360:74;;5464:33;5460:1;5455:3;5451:11;5444:54;5524:2;5519:3;5515:12;5508:19;;5350:183;;;:::o;5539:330::-;;5702:67;5766:2;5761:3;5702:67;:::i;:::-;5695:74;;5799:34;5795:1;5790:3;5786:11;5779:55;5860:2;5855:3;5851:12;5844:19;;5685:184;;;:::o;5875:373::-;;6038:67;6102:2;6097:3;6038:67;:::i;:::-;6031:74;;6135:34;6131:1;6126:3;6122:11;6115:55;6201:11;6196:2;6191:3;6187:12;6180:33;6239:2;6234:3;6230:12;6223:19;;6021:227;;;:::o;6254:369::-;;6417:67;6481:2;6476:3;6417:67;:::i;:::-;6410:74;;6514:34;6510:1;6505:3;6501:11;6494:55;6580:7;6575:2;6570:3;6566:12;6559:29;6614:2;6609:3;6605:12;6598:19;;6400:223;;;:::o;6629:368::-;;6792:67;6856:2;6851:3;6792:67;:::i;:::-;6785:74;;6889:34;6885:1;6880:3;6876:11;6869:55;6955:6;6950:2;6945:3;6941:12;6934:28;6988:2;6983:3;6979:12;6972:19;;6775:222;;;:::o;7003:376::-;;7166:67;7230:2;7225:3;7166:67;:::i;:::-;7159:74;;7263:34;7259:1;7254:3;7250:11;7243:55;7329:14;7324:2;7319:3;7315:12;7308:36;7370:2;7365:3;7361:12;7354:19;;7149:230;;;:::o;7385:118::-;7472:24;7490:5;7472:24;:::i;:::-;7467:3;7460:37;7450:53;;:::o;7509:112::-;7592:22;7608:5;7592:22;:::i;:::-;7587:3;7580:35;7570:51;;:::o;7627:222::-;;7758:2;7747:9;7743:18;7735:26;;7771:71;7839:1;7828:9;7824:17;7815:6;7771:71;:::i;:::-;7725:124;;;;:::o;7855:210::-;;7980:2;7969:9;7965:18;7957:26;;7993:65;8055:1;8044:9;8040:17;8031:6;7993:65;:::i;:::-;7947:118;;;;:::o;8071:313::-;;8222:2;8211:9;8207:18;8199:26;;8271:9;8265:4;8261:20;8257:1;8246:9;8242:17;8235:47;8299:78;8372:4;8363:6;8299:78;:::i;:::-;8291:86;;8189:195;;;;:::o;8390:419::-;;8594:2;8583:9;8579:18;8571:26;;8643:9;8637:4;8633:20;8629:1;8618:9;8614:17;8607:47;8671:131;8797:4;8671:131;:::i;:::-;8663:139;;8561:248;;;:::o;8815:419::-;;9019:2;9008:9;9004:18;8996:26;;9068:9;9062:4;9058:20;9054:1;9043:9;9039:17;9032:47;9096:131;9222:4;9096:131;:::i;:::-;9088:139;;8986:248;;;:::o;9240:419::-;;9444:2;9433:9;9429:18;9421:26;;9493:9;9487:4;9483:20;9479:1;9468:9;9464:17;9457:47;9521:131;9647:4;9521:131;:::i;:::-;9513:139;;9411:248;;;:::o;9665:419::-;;9869:2;9858:9;9854:18;9846:26;;9918:9;9912:4;9908:20;9904:1;9893:9;9889:17;9882:47;9946:131;10072:4;9946:131;:::i;:::-;9938:139;;9836:248;;;:::o;10090:419::-;;10294:2;10283:9;10279:18;10271:26;;10343:9;10337:4;10333:20;10329:1;10318:9;10314:17;10307:47;10371:131;10497:4;10371:131;:::i;:::-;10363:139;;10261:248;;;:::o;10515:419::-;;10719:2;10708:9;10704:18;10696:26;;10768:9;10762:4;10758:20;10754:1;10743:9;10739:17;10732:47;10796:131;10922:4;10796:131;:::i;:::-;10788:139;;10686:248;;;:::o;10940:419::-;;11144:2;11133:9;11129:18;11121:26;;11193:9;11187:4;11183:20;11179:1;11168:9;11164:17;11157:47;11221:131;11347:4;11221:131;:::i;:::-;11213:139;;11111:248;;;:::o;11365:419::-;;11569:2;11558:9;11554:18;11546:26;;11618:9;11612:4;11608:20;11604:1;11593:9;11589:17;11582:47;11646:131;11772:4;11646:131;:::i;:::-;11638:139;;11536:248;;;:::o;11790:419::-;;11994:2;11983:9;11979:18;11971:26;;12043:9;12037:4;12033:20;12029:1;12018:9;12014:17;12007:47;12071:131;12197:4;12071:131;:::i;:::-;12063:139;;11961:248;;;:::o;12215:419::-;;12419:2;12408:9;12404:18;12396:26;;12468:9;12462:4;12458:20;12454:1;12443:9;12439:17;12432:47;12496:131;12622:4;12496:131;:::i;:::-;12488:139;;12386:248;;;:::o;12640:419::-;;12844:2;12833:9;12829:18;12821:26;;12893:9;12887:4;12883:20;12879:1;12868:9;12864:17;12857:47;12921:131;13047:4;12921:131;:::i;:::-;12913:139;;12811:248;;;:::o;13065:222::-;;13196:2;13185:9;13181:18;13173:26;;13209:71;13277:1;13266:9;13262:17;13253:6;13209:71;:::i;:::-;13163:124;;;;:::o;13293:214::-;;13420:2;13409:9;13405:18;13397:26;;13433:67;13497:1;13486:9;13482:17;13473:6;13433:67;:::i;:::-;13387:120;;;;:::o;13513:99::-;;13599:5;13593:12;13583:22;;13572:40;;;:::o;13618:169::-;;13736:6;13731:3;13724:19;13776:4;13771:3;13767:14;13752:29;;13714:73;;;;:::o;13793:305::-;;13852:20;13870:1;13852:20;:::i;:::-;13847:25;;13886:20;13904:1;13886:20;:::i;:::-;13881:25;;14040:1;13972:66;13968:74;13965:1;13962:81;13959:2;;;14046:18;;:::i;:::-;13959:2;14090:1;14087;14083:9;14076:16;;13837:261;;;;:::o;14104:185::-;;14161:20;14179:1;14161:20;:::i;:::-;14156:25;;14195:20;14213:1;14195:20;:::i;:::-;14190:25;;14234:1;14224:2;;14239:18;;:::i;:::-;14224:2;14281:1;14278;14274:9;14269:14;;14146:143;;;;:::o;14295:348::-;;14358:20;14376:1;14358:20;:::i;:::-;14353:25;;14392:20;14410:1;14392:20;:::i;:::-;14387:25;;14580:1;14512:66;14508:74;14505:1;14502:81;14497:1;14490:9;14483:17;14479:105;14476:2;;;14587:18;;:::i;:::-;14476:2;14635:1;14632;14628:9;14617:20;;14343:300;;;;:::o;14649:191::-;;14709:20;14727:1;14709:20;:::i;:::-;14704:25;;14743:20;14761:1;14743:20;:::i;:::-;14738:25;;14782:1;14779;14776:8;14773:2;;;14787:18;;:::i;:::-;14773:2;14832:1;14829;14825:9;14817:17;;14694:146;;;;:::o;14846:96::-;;14912:24;14930:5;14912:24;:::i;:::-;14901:35;;14891:51;;;:::o;14948:90::-;;15025:5;15018:13;15011:21;15000:32;;14990:48;;;:::o;15044:126::-;;15121:42;15114:5;15110:54;15099:65;;15089:81;;;:::o;15176:77::-;;15242:5;15231:16;;15221:32;;;:::o;15259:86::-;;15334:4;15327:5;15323:16;15312:27;;15302:43;;;:::o;15351:307::-;15419:1;15429:113;15443:6;15440:1;15437:13;15429:113;;;15528:1;15523:3;15519:11;15513:18;15509:1;15504:3;15500:11;15493:39;15465:2;15462:1;15458:10;15453:15;;15429:113;;;15560:6;15557:1;15554:13;15551:2;;;15640:1;15631:6;15626:3;15622:16;15615:27;15551:2;15400:258;;;;:::o;15664:320::-;;15745:1;15739:4;15735:12;15725:22;;15792:1;15786:4;15782:12;15813:18;15803:2;;15869:4;15861:6;15857:17;15847:27;;15803:2;15931;15923:6;15920:14;15900:18;15897:38;15894:2;;;15950:18;;:::i;:::-;15894:2;15715:269;;;;:::o;15990:233::-;;16052:24;16070:5;16052:24;:::i;:::-;16043:33;;16098:66;16091:5;16088:77;16085:2;;;16168:18;;:::i;:::-;16085:2;16215:1;16208:5;16204:13;16197:20;;16033:190;;;:::o;16229:180::-;16277:77;16274:1;16267:88;16374:4;16371:1;16364:15;16398:4;16395:1;16388:15;16415:180;16463:77;16460:1;16453:88;16560:4;16557:1;16550:15;16584:4;16581:1;16574:15;16601:180;16649:77;16646:1;16639:88;16746:4;16743:1;16736:15;16770:4;16767:1;16760:15;16787:102;;16879:2;16875:7;16870:2;16863:5;16859:14;16855:28;16845:38;;16835:54;;;:::o;16895:122::-;16968:24;16986:5;16968:24;:::i;:::-;16961:5;16958:35;16948:2;;17007:1;17004;16997:12;16948:2;16938:79;:::o;17023:116::-;17093:21;17108:5;17093:21;:::i;:::-;17086:5;17083:32;17073:2;;17129:1;17126;17119:12;17073:2;17063:76;:::o;17145:122::-;17218:24;17236:5;17218:24;:::i;:::-;17211:5;17208:35;17198:2;;17257:1;17254;17247:12;17198:2;17188:79;:::o
Swarm Source
ipfs://e97910eff497dda211cd2af356a7d31e29cc70fbafbf684d11d46f8cba9c994a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.