Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 115 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 13246897 | 1185 days ago | IN | 0 ETH | 0.00278606 | ||||
Approve | 12960491 | 1229 days ago | IN | 0 ETH | 0.0027871 | ||||
Approve | 12939202 | 1232 days ago | IN | 0 ETH | 0.00098729 | ||||
Approve | 12894816 | 1239 days ago | IN | 0 ETH | 0.00259814 | ||||
Approve | 12891341 | 1240 days ago | IN | 0 ETH | 0.00065189 | ||||
Approve | 12885130 | 1241 days ago | IN | 0 ETH | 0.00076054 | ||||
Approve | 12878303 | 1242 days ago | IN | 0 ETH | 0.00198403 | ||||
Approve | 12871758 | 1243 days ago | IN | 0 ETH | 0.00111746 | ||||
Approve | 12864093 | 1244 days ago | IN | 0 ETH | 0.00141717 | ||||
Approve | 12856504 | 1245 days ago | IN | 0 ETH | 0.00070858 | ||||
Approve | 12855176 | 1246 days ago | IN | 0 ETH | 0.00070858 | ||||
Approve | 12854987 | 1246 days ago | IN | 0 ETH | 0.0008503 | ||||
Approve | 12852132 | 1246 days ago | IN | 0 ETH | 0.00103925 | ||||
Approve | 12850078 | 1246 days ago | IN | 0 ETH | 0.00066134 | ||||
Approve | 12846714 | 1247 days ago | IN | 0 ETH | 0.0008503 | ||||
Approve | 12846687 | 1247 days ago | IN | 0 ETH | 0.00093533 | ||||
Approve | 12804011 | 1254 days ago | IN | 0 ETH | 0.00051962 | ||||
Approve | 12780948 | 1257 days ago | IN | 0 ETH | 0.00179508 | ||||
Approve | 12780718 | 1257 days ago | IN | 0 ETH | 0.00174784 | ||||
Approve | 12780708 | 1257 days ago | IN | 0 ETH | 0.00193679 | ||||
Approve | 12780311 | 1257 days ago | IN | 0 ETH | 0.00155888 | ||||
Approve | 12779143 | 1257 days ago | IN | 0 ETH | 0.00184232 | ||||
Approve | 12776045 | 1258 days ago | IN | 0 ETH | 0.00244225 | ||||
Approve | 12774908 | 1258 days ago | IN | 0 ETH | 0.00400114 | ||||
Approve | 12773108 | 1258 days ago | IN | 0 ETH | 0.00401531 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
harbourDefi
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-03 */ pragma solidity 0.8.0; // SPDX-License-Identifier: Unlicensed /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); /** * @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); } /** * @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; } } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ 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; } } } /** * @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); } } } } contract harbourDefi is Context, Ownable, IERC20 { // Libraries using SafeMath for uint256; using SafeMath for uint8; using Address for address; // Attributes for ERC-20 token string private _name = "Harbour"; string private _symbol = "HBR"; uint8 private _decimals = 9; mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _total = 10**11 * 10**9; uint256 private maxTxAmount = 2* 10**9 * 10**9; uint256 private numTokensSellToAddToLiquidity = 350000 * 10**6 * 10**9; uint256 private minHoldingThreshold = 100 * 10**6 * 10**9; uint8 public tax = 5; uint8 public burnableFundRate = 1; uint8 public operationalFundRate = 3; uint8 public percentOfTheLiquidityStore = 1; address public addressForTheLiquidityStore; address public operationalAddress; address[] public _holders; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; struct Entity { address _key; bool _isValid; uint256 _createdAt; } mapping (address => uint256) private addressToIndex; mapping (uint256 => Entity) private indexToEntity; uint256 private lastIndexUsed = 1; uint256 private lastEntryAllowed = 0; uint32 public perBatchSize = 100; constructor () { _balance[_msgSender()] = _total; addEntity(_msgSender()); inSwapAndLiquify = true; addressForTheLiquidityStore = address(0x6464C435f0a7AE177263748ceF422662839f75A8); operationalAddress = address(0xd0b5636B8939b646181672B36254a6AfC0866779); emit Transfer(address(0), _msgSender(), _total); } modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } // additional functions function changeAddressForTheLiquidityStore(address _newLiquidityStoreAddress) onlyOwner public { addressForTheLiquidityStore = _newLiquidityStoreAddress; } function changePercentOfTheLiquidityStore(uint8 _newPercent) onlyOwner public { require(_newPercent>=100, "Invalid Percent"); require(_newPercent<=0, "Invalid Percent"); percentOfTheLiquidityStore = _newPercent; } // --- section 1 --- : Standard ERC 20 functions 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 _total; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, 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 allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 burnToken(uint256 amount) public onlyOwner virtual { require(amount <= _balance[address(this)], "Cannot burn more than avilable balancec"); _balance[address(this)] = _balance[address(this)].sub(amount); _total = _total.sub(amount); emit Transfer(address(this), address(0), amount); } function getminHoldingThreshold() public view returns (uint256) { return minHoldingThreshold; } function getMaxTxnAmount() public view returns (uint256) { return maxTxAmount; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; } function setminHoldingThreshold(uint256 amount) public onlyOwner { minHoldingThreshold = amount; } function setMaxTxnAmount(uint256 amount) public onlyOwner { maxTxAmount = amount; } function setBatchSize(uint32 newSize) public onlyOwner { perBatchSize = newSize; } //to recieve WETH from Uniswap when swaping receive() external payable {} 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); } mapping (address => uint256) private _holdersMapping; uint256 public lastReflection = 0; function _transfer(address fromAddress, address toAddress, uint256 amount) private { require(fromAddress != address(0) && toAddress != address(0), "ERC20: transfer from/to the zero address"); require(amount > 0 && amount <= _balance[fromAddress], "Transfer amount invalid"); if(fromAddress != owner() && toAddress != owner()){ require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } _balance[fromAddress] = _balance[fromAddress].sub(amount); uint256 totalTaxPercent = tax.add(burnableFundRate).add(operationalFundRate).add(percentOfTheLiquidityStore); uint256 receivePercent = uint256(100).sub(totalTaxPercent); uint256 transactionTokenAmount = receivePercent.mul(amount).div(uint256(100)); _balance[toAddress] = _balance[toAddress].add(transactionTokenAmount); uint256 transactionLiquidityAmount = percentOfTheLiquidityStore.mul(amount).div(uint256(100)); _balance[addressForTheLiquidityStore] = _balance[addressForTheLiquidityStore].add(transactionLiquidityAmount); uint256 transactionOperationalAmount = operationalFundRate.mul(amount).div(uint256(100)); _balance[operationalAddress] = _balance[operationalAddress].add(transactionOperationalAmount); uint256 currentTime = block.timestamp; uint256 reflectionAmount = tax.mul(amount).div(uint256(100)); for(uint i=0; i<_holders.length; i++){ if(_balance[_holders[i]]<10 && _holdersMapping[_holders[i]]==currentTime){ delete _holders[i]; continue; } else{ _holdersMapping[_holders[i]] = currentTime; } } for(uint i=0; i<_holders.length; i++){ _balance[_holders[i]] += reflectionAmount.div(_holders.length); } uint256 transactionBurnAmount = burnableFundRate.mul(amount).div(uint256(100)); _total.sub(transactionBurnAmount); // Add and remove wallet address from SAND eligibility if (_balance[toAddress] >= 10 && toAddress != address(this)){ _holders.push(toAddress); } emit Transfer(fromAddress, toAddress, transactionTokenAmount); } function addEntity (address walletAddress) private { if (addressToIndex[walletAddress] != 0) { return; } uint256 index = lastIndexUsed.add(1); indexToEntity[index] = Entity({ _key: walletAddress, _isValid: true, _createdAt: block.timestamp }); addressToIndex[walletAddress] = index; lastIndexUsed = index; } function removeEntity (address walletAddress) private { if (addressToIndex[walletAddress] == 0) { return; } uint256 index = addressToIndex[walletAddress]; addressToIndex[walletAddress] = 0; if (index != lastIndexUsed) { indexToEntity[index] = indexToEntity[lastIndexUsed]; addressToIndex[indexToEntity[lastIndexUsed]._key] = index; } indexToEntity[lastIndexUsed]._isValid = false; lastIndexUsed = lastIndexUsed.sub(1); } function getEntityListLength () public view returns (uint256) { return lastIndexUsed; } function getEntity (uint256 index, bool shouldReject) private view returns (Entity memory) { if (shouldReject == true) { require(index <= getEntityListLength(), "Index out of range"); } return indexToEntity[index]; } function getEntityTimeStamp (address walletAddress) public view returns (uint256) { require (addressToIndex[walletAddress] != 0, "Empty!"); return indexToEntity[addressToIndex[walletAddress]]._createdAt; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"uint256","name":"","type":"uint256"}],"name":"_holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressForTheLiquidityStore","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnableFundRate","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newLiquidityStoreAddress","type":"address"}],"name":"changeAddressForTheLiquidityStore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newPercent","type":"uint8"}],"name":"changePercentOfTheLiquidityStore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntityListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"getEntityTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getminHoldingThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationalAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationalFundRate","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perBatchSize","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentOfTheLiquidityStore","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"newSize","type":"uint32"}],"name":"setBatchSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setminHoldingThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600781526020017f486172626f7572000000000000000000000000000000000000000000000000008152506001908051906020019062000051929190620005bb565b506040518060400160405280600381526020017f4842520000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620005bb565b506009600360006101000a81548160ff021916908360ff16021790555068056bc75e2d63100000600655671bc16d674ec800006007556812f939c99edab8000060085567016345785d8a00006009556005600a60006101000a81548160ff021916908360ff1602179055506001600a60016101000a81548160ff021916908360ff1602179055506003600a60026101000a81548160ff021916908360ff1602179055506001600a60036101000a81548160ff021916908360ff1602179055506001600d60016101000a81548160ff021916908315150217905550600160105560006011556064601260006101000a81548163ffffffff021916908363ffffffff1602179055506000601455348015620001b757600080fd5b506000620001ca6200042160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600460006200027f6200042160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002dd620002d16200042160201b60201c565b6200042960201b60201c565b6001600d60006101000a81548160ff021916908315150217905550736464c435f0a7ae177263748cef422662839f75a8600a60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d0b5636b8939b646181672b36254a6afc0866779600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b26200042160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200041391906200067c565b60405180910390a362000794565b600033905090565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146200047757620005a0565b6000620004966001601054620005a360201b620018721790919060201c565b905060405180606001604052808373ffffffffffffffffffffffffffffffffffffffff16815260200160011515815260200142815250600f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055506040820151816001015590505080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601081905550505b50565b60008183620005b3919062000699565b905092915050565b828054620005c99062000700565b90600052602060002090601f016020900481019282620005ed576000855562000639565b82601f106200060857805160ff191683800117855562000639565b8280016001018555821562000639579182015b82811115620006385782518255916020019190600101906200061b565b5b5090506200064891906200064c565b5090565b5b80821115620006675760008160009055506001016200064d565b5090565b6200067681620006f6565b82525050565b60006020820190506200069360008301846200066b565b92915050565b6000620006a682620006f6565b9150620006b383620006f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006eb57620006ea62000736565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200071957607f821691505b6020821081141562000730576200072f62000765565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61321b80620007a46000396000f3fe6080604052600436106102085760003560e01c80637b47ec1a11610118578063ba3d9f01116100a0578063d9bf0d221161006f578063d9bf0d221461077e578063d9dc87be146107a7578063dd2cec7f146107d0578063dd62ed3e1461080d578063f2fde38b1461084a5761020f565b8063ba3d9f01146106d4578063c49b9a80146106ff578063c956e0c314610728578063d78c67c5146107535761020f565b806395d89b41116100e757806395d89b41146105db57806399c8d55614610606578063a457c2d714610631578063a9059cbb1461066e578063b820cd84146106ab5761020f565b80637b47ec1a146105335780638da5cb5b1461055c5780638ff0ab7f146105875780639381099a146105b05761020f565b8063395093511161019b5780636a4b05ad1161016a5780636a4b05ad1461046057806370a082311461048b578063715018a6146104c857806374010ece146104df57806378e03373146105085761020f565b8063395093511461039057806343023cfa146103cd5780634a74bb021461040a5780634b433e0f146104355761020f565b806323b872dd116101d757806323b872dd146102d2578063313ce5671461030f57806333d7dc0b1461033a578063382f5058146103655761020f565b806306fdde0314610214578063095ea7b31461023f5780630ab602a41461027c57806318160ddd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610873565b6040516102369190612c90565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612792565b610905565b6040516102739190612c75565b60405180910390f35b34801561028857600080fd5b50610291610923565b60405161029e9190612df2565b60405180910390f35b3480156102b357600080fd5b506102bc610929565b6040516102c99190612df2565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190612743565b610933565b6040516103069190612c75565b60405180910390f35b34801561031b57600080fd5b50610324610a0c565b6040516103319190612e28565b60405180910390f35b34801561034657600080fd5b5061034f610a23565b60405161035c9190612e28565b60405180910390f35b34801561037157600080fd5b5061037a610a36565b6040516103879190612c5a565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612792565b610a5c565b6040516103c49190612c75565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef91906126de565b610b0f565b6040516104019190612df2565b60405180910390f35b34801561041657600080fd5b5061041f610bf0565b60405161042c9190612c75565b60405180910390f35b34801561044157600080fd5b5061044a610c03565b6040516104579190612df2565b60405180910390f35b34801561046c57600080fd5b50610475610c0d565b6040516104829190612df2565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad91906126de565b610c17565b6040516104bf9190612df2565b60405180910390f35b3480156104d457600080fd5b506104dd610c60565b005b3480156104eb57600080fd5b50610506600480360381019061050191906127f7565b610d9a565b005b34801561051457600080fd5b5061051d610e20565b60405161052a9190612c5a565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906127f7565b610e46565b005b34801561056857600080fd5b5061057161105d565b60405161057e9190612c5a565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190612820565b611086565b005b3480156105bc57600080fd5b506105c5611126565b6040516105d29190612e0d565b60405180910390f35b3480156105e757600080fd5b506105f061113c565b6040516105fd9190612c90565b60405180910390f35b34801561061257600080fd5b5061061b6111ce565b6040516106289190612e28565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190612792565b6111e1565b6040516106659190612c75565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612792565b6112ae565b6040516106a29190612c75565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906126de565b6112cc565b005b3480156106e057600080fd5b506106e961138c565b6040516106f69190612df2565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906127ce565b611396565b005b34801561073457600080fd5b5061073d61142f565b60405161074a9190612e28565b60405180910390f35b34801561075f57600080fd5b50610768611442565b6040516107759190612e28565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a091906127f7565b611455565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190612849565b6114db565b005b3480156107dc57600080fd5b506107f760048036038101906107f291906127f7565b611603565b6040516108049190612c5a565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190612707565b611642565b6040516108419190612df2565b60405180910390f35b34801561085657600080fd5b50610871600480360381019061086c91906126de565b6116c9565b005b6060600180546108829061300c565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae9061300c565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b5050505050905090565b6000610919610912611888565b8484611890565b6001905092915050565b60145481565b6000600654905090565b6000610940848484611a5b565b610a018461094c611888565b6109fc8560405180606001604052806028815260200161319960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b2611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de9092919063ffffffff16565b611890565b600190509392505050565b6000600360009054906101000a900460ff16905090565b600a60039054906101000a900460ff1681565b600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b05610a69611888565b84610b008560056000610a7a611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b611890565b6001905092915050565b600080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612d32565b60405180910390fd5b600f6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020600101549050919050565b600d60019054906101000a900460ff1681565b6000600954905090565b6000601054905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c68611888565b73ffffffffffffffffffffffffffffffffffffffff16610c8661105d565b73ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da2611888565b73ffffffffffffffffffffffffffffffffffffffff16610dc061105d565b73ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612d92565b60405180910390fd5b8060078190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e4e611888565b73ffffffffffffffffffffffffffffffffffffffff16610e6c61105d565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990612d92565b60405180910390fd5b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612cb2565b60405180910390fd5b610f9681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fee8160065461263390919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110529190612df2565b60405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61108e611888565b73ffffffffffffffffffffffffffffffffffffffff166110ac61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990612d92565b60405180910390fd5b80601260006101000a81548163ffffffff021916908363ffffffff16021790555050565b601260009054906101000a900463ffffffff1681565b60606002805461114b9061300c565b80601f01602080910402602001604051908101604052809291908181526020018280546111779061300c565b80156111c45780601f10611199576101008083540402835291602001916111c4565b820191906000526020600020905b8154815290600101906020018083116111a757829003601f168201915b5050505050905090565b600a60009054906101000a900460ff1681565b60006112a46111ee611888565b8461129f856040518060600160405280602581526020016131c16025913960056000611218611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de9092919063ffffffff16565b611890565b6001905092915050565b60006112c26112bb611888565b8484611a5b565b6001905092915050565b6112d4611888565b73ffffffffffffffffffffffffffffffffffffffff166112f261105d565b73ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90612d92565b60405180910390fd5b80600a60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600754905090565b61139e611888565b73ffffffffffffffffffffffffffffffffffffffff166113bc61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612d92565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600a60019054906101000a900460ff1681565b600a60029054906101000a900460ff1681565b61145d611888565b73ffffffffffffffffffffffffffffffffffffffff1661147b61105d565b73ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890612d92565b60405180910390fd5b8060098190555050565b6114e3611888565b73ffffffffffffffffffffffffffffffffffffffff1661150161105d565b73ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90612d92565b60405180910390fd5b60648160ff16101561159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590612dd2565b60405180910390fd5b60008160ff1611156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90612dd2565b60405180910390fd5b80600a60036101000a81548160ff021916908360ff16021790555050565b600c818154811061161357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116d1611888565b73ffffffffffffffffffffffffffffffffffffffff166116ef61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90612d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612cd2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836118809190612e5f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612db2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790612cf2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a4e9190612df2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ac55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90612d12565b60405180910390fd5b600081118015611b535750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b611b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8990612d72565b60405180910390fd5b611b9a61105d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c085750611bd861105d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c5357600754811115611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990612d52565b60405180910390fd5b5b611ca581600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d69600a60039054906101000a900460ff1660ff16611d5b600a60029054906101000a900460ff1660ff16611d4d600a60019054906101000a900460ff1660ff16600a60009054906101000a900460ff1660ff1661187290919063ffffffff16565b61187290919063ffffffff16565b61187290919063ffffffff16565b90506000611d8182606461263390919063ffffffff16565b90506000611dab6064611d9d868561264990919063ffffffff16565b61265f90919063ffffffff16565b9050611dff81600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e7c6064611e6e87600a60039054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b9050611ef28160046000600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b60046000600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611f916064611f8388600a60029054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b90506120078160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b60046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600042905060006120ab606461209d8a600a60009054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b905060005b600c8054905081101561233f57600a60046000600c84815481106120fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561221257508260136000600c84815481106121aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1561228357600c8181548110612251577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561232c565b8260136000600c84815481106122c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806123379061303e565b9150506120b0565b5060005b600c8054905081101561243457612368600c805490508361265f90919063ffffffff16565b60046000600c84815481106123a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461241a9190612e5f565b92505081905550808061242c9061303e565b915050612343565b50600061246f60646124618b600a60019054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b90506124868160065461263390919063ffffffff16565b50600a600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561250357503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b1561256c57600c8a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516125c99190612df2565b60405180910390a35050505050505050505050565b6000838311158290612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9190612c90565b60405180910390fd5b5082840390509392505050565b600081836126419190612f40565b905092915050565b600081836126579190612ee6565b905092915050565b6000818361266d9190612eb5565b905092915050565b60008135905061268481613125565b92915050565b6000813590506126998161313c565b92915050565b6000813590506126ae81613153565b92915050565b6000813590506126c38161316a565b92915050565b6000813590506126d881613181565b92915050565b6000602082840312156126f057600080fd5b60006126fe84828501612675565b91505092915050565b6000806040838503121561271a57600080fd5b600061272885828601612675565b925050602061273985828601612675565b9150509250929050565b60008060006060848603121561275857600080fd5b600061276686828701612675565b935050602061277786828701612675565b92505060406127888682870161269f565b9150509250925092565b600080604083850312156127a557600080fd5b60006127b385828601612675565b92505060206127c48582860161269f565b9150509250929050565b6000602082840312156127e057600080fd5b60006127ee8482850161268a565b91505092915050565b60006020828403121561280957600080fd5b60006128178482850161269f565b91505092915050565b60006020828403121561283257600080fd5b6000612840848285016126b4565b91505092915050565b60006020828403121561285b57600080fd5b6000612869848285016126c9565b91505092915050565b61287b81612f74565b82525050565b61288a81612f86565b82525050565b600061289b82612e43565b6128a58185612e4e565b93506128b5818560208601612fd9565b6128be81613114565b840191505092915050565b60006128d6602783612e4e565b91507f43616e6e6f74206275726e206d6f7265207468616e206176696c61626c65206260008301527f616c616e636563000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061293c602683612e4e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129a2602283612e4e565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a08602883612e4e565b91507f45524332303a207472616e736665722066726f6d2f746f20746865207a65726f60008301527f20616464726573730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6e600683612e4e565b91507f456d7074792100000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612aae602883612e4e565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b14601783612e4e565b91507f5472616e7366657220616d6f756e7420696e76616c69640000000000000000006000830152602082019050919050565b6000612b54602083612e4e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612b94602483612e4e565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bfa600f83612e4e565b91507f496e76616c69642050657263656e7400000000000000000000000000000000006000830152602082019050919050565b612c3681612fb2565b82525050565b612c4581612fbc565b82525050565b612c5481612fcc565b82525050565b6000602082019050612c6f6000830184612872565b92915050565b6000602082019050612c8a6000830184612881565b92915050565b60006020820190508181036000830152612caa8184612890565b905092915050565b60006020820190508181036000830152612ccb816128c9565b9050919050565b60006020820190508181036000830152612ceb8161292f565b9050919050565b60006020820190508181036000830152612d0b81612995565b9050919050565b60006020820190508181036000830152612d2b816129fb565b9050919050565b60006020820190508181036000830152612d4b81612a61565b9050919050565b60006020820190508181036000830152612d6b81612aa1565b9050919050565b60006020820190508181036000830152612d8b81612b07565b9050919050565b60006020820190508181036000830152612dab81612b47565b9050919050565b60006020820190508181036000830152612dcb81612b87565b9050919050565b60006020820190508181036000830152612deb81612bed565b9050919050565b6000602082019050612e076000830184612c2d565b92915050565b6000602082019050612e226000830184612c3c565b92915050565b6000602082019050612e3d6000830184612c4b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e6a82612fb2565b9150612e7583612fb2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612eaa57612ea9613087565b5b828201905092915050565b6000612ec082612fb2565b9150612ecb83612fb2565b925082612edb57612eda6130b6565b5b828204905092915050565b6000612ef182612fb2565b9150612efc83612fb2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f3557612f34613087565b5b828202905092915050565b6000612f4b82612fb2565b9150612f5683612fb2565b925082821015612f6957612f68613087565b5b828203905092915050565b6000612f7f82612f92565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015612ff7578082015181840152602081019050612fdc565b83811115613006576000848401525b50505050565b6000600282049050600182168061302457607f821691505b60208210811415613038576130376130e5565b5b50919050565b600061304982612fb2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307c5761307b613087565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61312e81612f74565b811461313957600080fd5b50565b61314581612f86565b811461315057600080fd5b50565b61315c81612fb2565b811461316757600080fd5b50565b61317381612fbc565b811461317e57600080fd5b50565b61318a81612fcc565b811461319557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d31f5967311afa4e3bce62ca183da57fec8d760b17dd884b52b27466c532979264736f6c63430008000033
Deployed Bytecode
0x6080604052600436106102085760003560e01c80637b47ec1a11610118578063ba3d9f01116100a0578063d9bf0d221161006f578063d9bf0d221461077e578063d9dc87be146107a7578063dd2cec7f146107d0578063dd62ed3e1461080d578063f2fde38b1461084a5761020f565b8063ba3d9f01146106d4578063c49b9a80146106ff578063c956e0c314610728578063d78c67c5146107535761020f565b806395d89b41116100e757806395d89b41146105db57806399c8d55614610606578063a457c2d714610631578063a9059cbb1461066e578063b820cd84146106ab5761020f565b80637b47ec1a146105335780638da5cb5b1461055c5780638ff0ab7f146105875780639381099a146105b05761020f565b8063395093511161019b5780636a4b05ad1161016a5780636a4b05ad1461046057806370a082311461048b578063715018a6146104c857806374010ece146104df57806378e03373146105085761020f565b8063395093511461039057806343023cfa146103cd5780634a74bb021461040a5780634b433e0f146104355761020f565b806323b872dd116101d757806323b872dd146102d2578063313ce5671461030f57806333d7dc0b1461033a578063382f5058146103655761020f565b806306fdde0314610214578063095ea7b31461023f5780630ab602a41461027c57806318160ddd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610873565b6040516102369190612c90565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612792565b610905565b6040516102739190612c75565b60405180910390f35b34801561028857600080fd5b50610291610923565b60405161029e9190612df2565b60405180910390f35b3480156102b357600080fd5b506102bc610929565b6040516102c99190612df2565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190612743565b610933565b6040516103069190612c75565b60405180910390f35b34801561031b57600080fd5b50610324610a0c565b6040516103319190612e28565b60405180910390f35b34801561034657600080fd5b5061034f610a23565b60405161035c9190612e28565b60405180910390f35b34801561037157600080fd5b5061037a610a36565b6040516103879190612c5a565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612792565b610a5c565b6040516103c49190612c75565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef91906126de565b610b0f565b6040516104019190612df2565b60405180910390f35b34801561041657600080fd5b5061041f610bf0565b60405161042c9190612c75565b60405180910390f35b34801561044157600080fd5b5061044a610c03565b6040516104579190612df2565b60405180910390f35b34801561046c57600080fd5b50610475610c0d565b6040516104829190612df2565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad91906126de565b610c17565b6040516104bf9190612df2565b60405180910390f35b3480156104d457600080fd5b506104dd610c60565b005b3480156104eb57600080fd5b50610506600480360381019061050191906127f7565b610d9a565b005b34801561051457600080fd5b5061051d610e20565b60405161052a9190612c5a565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906127f7565b610e46565b005b34801561056857600080fd5b5061057161105d565b60405161057e9190612c5a565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190612820565b611086565b005b3480156105bc57600080fd5b506105c5611126565b6040516105d29190612e0d565b60405180910390f35b3480156105e757600080fd5b506105f061113c565b6040516105fd9190612c90565b60405180910390f35b34801561061257600080fd5b5061061b6111ce565b6040516106289190612e28565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190612792565b6111e1565b6040516106659190612c75565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612792565b6112ae565b6040516106a29190612c75565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906126de565b6112cc565b005b3480156106e057600080fd5b506106e961138c565b6040516106f69190612df2565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906127ce565b611396565b005b34801561073457600080fd5b5061073d61142f565b60405161074a9190612e28565b60405180910390f35b34801561075f57600080fd5b50610768611442565b6040516107759190612e28565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a091906127f7565b611455565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190612849565b6114db565b005b3480156107dc57600080fd5b506107f760048036038101906107f291906127f7565b611603565b6040516108049190612c5a565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190612707565b611642565b6040516108419190612df2565b60405180910390f35b34801561085657600080fd5b50610871600480360381019061086c91906126de565b6116c9565b005b6060600180546108829061300c565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae9061300c565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b5050505050905090565b6000610919610912611888565b8484611890565b6001905092915050565b60145481565b6000600654905090565b6000610940848484611a5b565b610a018461094c611888565b6109fc8560405180606001604052806028815260200161319960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b2611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de9092919063ffffffff16565b611890565b600190509392505050565b6000600360009054906101000a900460ff16905090565b600a60039054906101000a900460ff1681565b600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b05610a69611888565b84610b008560056000610a7a611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b611890565b6001905092915050565b600080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612d32565b60405180910390fd5b600f6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020600101549050919050565b600d60019054906101000a900460ff1681565b6000600954905090565b6000601054905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c68611888565b73ffffffffffffffffffffffffffffffffffffffff16610c8661105d565b73ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da2611888565b73ffffffffffffffffffffffffffffffffffffffff16610dc061105d565b73ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612d92565b60405180910390fd5b8060078190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e4e611888565b73ffffffffffffffffffffffffffffffffffffffff16610e6c61105d565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990612d92565b60405180910390fd5b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612cb2565b60405180910390fd5b610f9681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fee8160065461263390919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110529190612df2565b60405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61108e611888565b73ffffffffffffffffffffffffffffffffffffffff166110ac61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990612d92565b60405180910390fd5b80601260006101000a81548163ffffffff021916908363ffffffff16021790555050565b601260009054906101000a900463ffffffff1681565b60606002805461114b9061300c565b80601f01602080910402602001604051908101604052809291908181526020018280546111779061300c565b80156111c45780601f10611199576101008083540402835291602001916111c4565b820191906000526020600020905b8154815290600101906020018083116111a757829003601f168201915b5050505050905090565b600a60009054906101000a900460ff1681565b60006112a46111ee611888565b8461129f856040518060600160405280602581526020016131c16025913960056000611218611888565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de9092919063ffffffff16565b611890565b6001905092915050565b60006112c26112bb611888565b8484611a5b565b6001905092915050565b6112d4611888565b73ffffffffffffffffffffffffffffffffffffffff166112f261105d565b73ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90612d92565b60405180910390fd5b80600a60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600754905090565b61139e611888565b73ffffffffffffffffffffffffffffffffffffffff166113bc61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612d92565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600a60019054906101000a900460ff1681565b600a60029054906101000a900460ff1681565b61145d611888565b73ffffffffffffffffffffffffffffffffffffffff1661147b61105d565b73ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890612d92565b60405180910390fd5b8060098190555050565b6114e3611888565b73ffffffffffffffffffffffffffffffffffffffff1661150161105d565b73ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90612d92565b60405180910390fd5b60648160ff16101561159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590612dd2565b60405180910390fd5b60008160ff1611156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90612dd2565b60405180910390fd5b80600a60036101000a81548160ff021916908360ff16021790555050565b600c818154811061161357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116d1611888565b73ffffffffffffffffffffffffffffffffffffffff166116ef61105d565b73ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90612d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612cd2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836118809190612e5f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612db2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790612cf2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a4e9190612df2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ac55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90612d12565b60405180910390fd5b600081118015611b535750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b611b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8990612d72565b60405180910390fd5b611b9a61105d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c085750611bd861105d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c5357600754811115611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990612d52565b60405180910390fd5b5b611ca581600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d69600a60039054906101000a900460ff1660ff16611d5b600a60029054906101000a900460ff1660ff16611d4d600a60019054906101000a900460ff1660ff16600a60009054906101000a900460ff1660ff1661187290919063ffffffff16565b61187290919063ffffffff16565b61187290919063ffffffff16565b90506000611d8182606461263390919063ffffffff16565b90506000611dab6064611d9d868561264990919063ffffffff16565b61265f90919063ffffffff16565b9050611dff81600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e7c6064611e6e87600a60039054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b9050611ef28160046000600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b60046000600a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611f916064611f8388600a60029054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b90506120078160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187290919063ffffffff16565b60046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600042905060006120ab606461209d8a600a60009054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b905060005b600c8054905081101561233f57600a60046000600c84815481106120fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561221257508260136000600c84815481106121aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1561228357600c8181548110612251577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561232c565b8260136000600c84815481106122c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806123379061303e565b9150506120b0565b5060005b600c8054905081101561243457612368600c805490508361265f90919063ffffffff16565b60046000600c84815481106123a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461241a9190612e5f565b92505081905550808061242c9061303e565b915050612343565b50600061246f60646124618b600a60019054906101000a900460ff1660ff1661264990919063ffffffff16565b61265f90919063ffffffff16565b90506124868160065461263390919063ffffffff16565b50600a600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561250357503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b1561256c57600c8a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516125c99190612df2565b60405180910390a35050505050505050505050565b6000838311158290612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9190612c90565b60405180910390fd5b5082840390509392505050565b600081836126419190612f40565b905092915050565b600081836126579190612ee6565b905092915050565b6000818361266d9190612eb5565b905092915050565b60008135905061268481613125565b92915050565b6000813590506126998161313c565b92915050565b6000813590506126ae81613153565b92915050565b6000813590506126c38161316a565b92915050565b6000813590506126d881613181565b92915050565b6000602082840312156126f057600080fd5b60006126fe84828501612675565b91505092915050565b6000806040838503121561271a57600080fd5b600061272885828601612675565b925050602061273985828601612675565b9150509250929050565b60008060006060848603121561275857600080fd5b600061276686828701612675565b935050602061277786828701612675565b92505060406127888682870161269f565b9150509250925092565b600080604083850312156127a557600080fd5b60006127b385828601612675565b92505060206127c48582860161269f565b9150509250929050565b6000602082840312156127e057600080fd5b60006127ee8482850161268a565b91505092915050565b60006020828403121561280957600080fd5b60006128178482850161269f565b91505092915050565b60006020828403121561283257600080fd5b6000612840848285016126b4565b91505092915050565b60006020828403121561285b57600080fd5b6000612869848285016126c9565b91505092915050565b61287b81612f74565b82525050565b61288a81612f86565b82525050565b600061289b82612e43565b6128a58185612e4e565b93506128b5818560208601612fd9565b6128be81613114565b840191505092915050565b60006128d6602783612e4e565b91507f43616e6e6f74206275726e206d6f7265207468616e206176696c61626c65206260008301527f616c616e636563000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061293c602683612e4e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129a2602283612e4e565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a08602883612e4e565b91507f45524332303a207472616e736665722066726f6d2f746f20746865207a65726f60008301527f20616464726573730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6e600683612e4e565b91507f456d7074792100000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612aae602883612e4e565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b14601783612e4e565b91507f5472616e7366657220616d6f756e7420696e76616c69640000000000000000006000830152602082019050919050565b6000612b54602083612e4e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612b94602483612e4e565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bfa600f83612e4e565b91507f496e76616c69642050657263656e7400000000000000000000000000000000006000830152602082019050919050565b612c3681612fb2565b82525050565b612c4581612fbc565b82525050565b612c5481612fcc565b82525050565b6000602082019050612c6f6000830184612872565b92915050565b6000602082019050612c8a6000830184612881565b92915050565b60006020820190508181036000830152612caa8184612890565b905092915050565b60006020820190508181036000830152612ccb816128c9565b9050919050565b60006020820190508181036000830152612ceb8161292f565b9050919050565b60006020820190508181036000830152612d0b81612995565b9050919050565b60006020820190508181036000830152612d2b816129fb565b9050919050565b60006020820190508181036000830152612d4b81612a61565b9050919050565b60006020820190508181036000830152612d6b81612aa1565b9050919050565b60006020820190508181036000830152612d8b81612b07565b9050919050565b60006020820190508181036000830152612dab81612b47565b9050919050565b60006020820190508181036000830152612dcb81612b87565b9050919050565b60006020820190508181036000830152612deb81612bed565b9050919050565b6000602082019050612e076000830184612c2d565b92915050565b6000602082019050612e226000830184612c3c565b92915050565b6000602082019050612e3d6000830184612c4b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e6a82612fb2565b9150612e7583612fb2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612eaa57612ea9613087565b5b828201905092915050565b6000612ec082612fb2565b9150612ecb83612fb2565b925082612edb57612eda6130b6565b5b828204905092915050565b6000612ef182612fb2565b9150612efc83612fb2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f3557612f34613087565b5b828202905092915050565b6000612f4b82612fb2565b9150612f5683612fb2565b925082821015612f6957612f68613087565b5b828203905092915050565b6000612f7f82612f92565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015612ff7578082015181840152602081019050612fdc565b83811115613006576000848401525b50505050565b6000600282049050600182168061302457607f821691505b60208210811415613038576130376130e5565b5b50919050565b600061304982612fb2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307c5761307b613087565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61312e81612f74565b811461313957600080fd5b50565b61314581612f86565b811461315057600080fd5b50565b61315c81612fb2565b811461316757600080fd5b50565b61317381612fbc565b811461317e57600080fd5b50565b61318a81612fcc565b811461319557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d31f5967311afa4e3bce62ca183da57fec8d760b17dd884b52b27466c532979264736f6c63430008000033
Deployed Bytecode Sourcemap
20019:9751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22433:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22946:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25822:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22714:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23294:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22619:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20833:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20889:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23766:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29546:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21044:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24630:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29193:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22816:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4681:148;;;;;;;;;;;;;:::i;:::-;;25103:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20938:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24275:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4030:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25212:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21360:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22524:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20723:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23992:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23119:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21939:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24751:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24853:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20750:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20790:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24979:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22120:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20978:25;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23615:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4984:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22433:83;22470:13;22503:5;22496:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22433:83;:::o;22946:161::-;23021:4;23038:39;23047:12;:10;:12::i;:::-;23061:7;23070:6;23038:8;:39::i;:::-;23095:4;23088:11;;22946:161;;;;:::o;25822:33::-;;;;:::o;22714:94::-;22767:7;22794:6;;22787:13;;22714:94;:::o;23294:313::-;23392:4;23409:36;23419:6;23427:9;23438:6;23409:9;:36::i;:::-;23456:121;23465:6;23473:12;:10;:12::i;:::-;23487:89;23525:6;23487:89;;;;;;;;;;;;;;;;;:11;:19;23499:6;23487:19;;;;;;;;;;;;;;;:33;23507:12;:10;:12::i;:::-;23487:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23456:8;:121::i;:::-;23595:4;23588:11;;23294:313;;;;;:::o;22619:83::-;22660:5;22685:9;;;;;;;;;;;22678:16;;22619:83;:::o;20833:43::-;;;;;;;;;;;;;:::o;20889:42::-;;;;;;;;;;;;;:::o;23766:218::-;23854:4;23871:83;23880:12;:10;:12::i;:::-;23894:7;23903:50;23942:10;23903:11;:25;23915:12;:10;:12::i;:::-;23903:25;;;;;;;;;;;;;;;:34;23929:7;23903:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;23871:8;:83::i;:::-;23972:4;23965:11;;23766:218;;;;:::o;29546:219::-;29619:7;29678:1;29645:14;:29;29660:13;29645:29;;;;;;;;;;;;;;;;:34;;29636:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29705:13;:44;29719:14;:29;29734:13;29719:29;;;;;;;;;;;;;;;;29705:44;;;;;;;;;;;:55;;;29698:62;;29546:219;;;:::o;21044:40::-;;;;;;;;;;;;;:::o;24630:109::-;24685:7;24712:19;;24705:26;;24630:109;:::o;29193:95::-;29246:7;29270:13;;29263:20;;29193:95;:::o;22816:118::-;22882:7;22909:8;:17;22918:7;22909:17;;;;;;;;;;;;;;;;22902:24;;22816:118;;;:::o;4681:148::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4788:1:::1;4751:40;;4772:6;::::0;::::1;;;;;;;;4751:40;;;;;;;;;;;;4819:1;4802:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4681:148::o:0;25103:97::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25186:6:::1;25172:11;:20;;;;25103:97:::0;:::o;20938:33::-;;;;;;;;;;;;;:::o;24275:337::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24364:8:::1;:23;24381:4;24364:23;;;;;;;;;;;;;;;;24354:6;:33;;24346:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24470:35;24498:6;24470:8;:23;24487:4;24470:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;24444:8;:23;24461:4;24444:23;;;;;;;;;;;;;;;:61;;;;24525:18;24536:6;24525;;:10;;:18;;;;:::i;:::-;24516:6;:27;;;;24593:1;24561:43;;24578:4;24561:43;;;24597:6;24561:43;;;;;;:::i;:::-;;;;;;;;24275:337:::0;:::o;4030:87::-;4076:7;4103:6;;;;;;;;;;;4096:13;;4030:87;:::o;25212:96::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25293:7:::1;25278:12;;:22;;;;;;;;;;;;;;;;;;25212:96:::0;:::o;21360:32::-;;;;;;;;;;;;;:::o;22524:87::-;22563:13;22596:7;22589:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22524:87;:::o;20723:20::-;;;;;;;;;;;;;:::o;23992:269::-;24085:4;24102:129;24111:12;:10;:12::i;:::-;24125:7;24134:96;24173:15;24134:96;;;;;;;;;;;;;;;;;:11;:25;24146:12;:10;:12::i;:::-;24134:25;;;;;;;;;;;;;;;:34;24160:7;24134:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;24102:8;:129::i;:::-;24249:4;24242:11;;23992:269;;;;:::o;23119:167::-;23197:4;23214:42;23224:12;:10;:12::i;:::-;23238:9;23249:6;23214:9;:42::i;:::-;23274:4;23267:11;;23119:167;;;;:::o;21939:169::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22075:25:::1;22045:27;;:55;;;;;;;;;;;;;;;;;;21939:169:::0;:::o;24751:94::-;24799:7;24826:11;;24819:18;;24751:94;:::o;24853:114::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24951:8:::1;24927:21;;:32;;;;;;;;;;;;;;;;;;24853:114:::0;:::o;20750:33::-;;;;;;;;;;;;;:::o;20790:36::-;;;;;;;;;;;;;:::o;24979:112::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25077:6:::1;25055:19;:28;;;;24979:112:::0;:::o;22120:245::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22230:3:::1;22217:11;:16;;;;22209:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22285:1;22272:11;:14;;;;22264:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22346:11;22317:26;;:40;;;;;;;;;;;;;;;;;;22120:245:::0;:::o;20978:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23615:143::-;23696:7;23723:11;:18;23735:5;23723:18;;;;;;;;;;;;;;;:27;23742:7;23723:27;;;;;;;;;;;;;;;;23716:34;;23615:143;;;;:::o;4984:244::-;4261:12;:10;:12::i;:::-;4250:23;;:7;:5;:7::i;:::-;:23;;;4242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5093:1:::1;5073:22;;:8;:22;;;;5065:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5183:8;5154:38;;5175:6;::::0;::::1;;;;;;;;5154:38;;;;;;;;;;;;5212:8;5203:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4984:244:::0;:::o;7779:98::-;7837:7;7868:1;7864;:5;;;;:::i;:::-;7857:12;;7779:98;;;;:::o;605:::-;658:7;685:10;678:17;;605:98;:::o;25412:339::-;25522:1;25505:19;;:5;:19;;;;25497:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25603:1;25584:21;;:7;:21;;;;25576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25687:6;25657:11;:18;25669:5;25657:18;;;;;;;;;;;;;;;:27;25676:7;25657:27;;;;;;;;;;;;;;;:36;;;;25727:7;25711:32;;25720:5;25711:32;;;25736:6;25711:32;;;;;;:::i;:::-;;;;;;;;25412:339;;;:::o;25862:2370::-;25987:1;25964:25;;:11;:25;;;;:52;;;;;26014:1;25993:23;;:9;:23;;;;25964:52;25956:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;26089:1;26080:6;:10;:45;;;;;26104:8;:21;26113:11;26104:21;;;;;;;;;;;;;;;;26094:6;:31;;26080:45;26072:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26182:7;:5;:7::i;:::-;26167:22;;:11;:22;;;;:46;;;;;26206:7;:5;:7::i;:::-;26193:20;;:9;:20;;;;26167:46;26164:151;;;26247:11;;26237:6;:21;;26229:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26164:151;26359:33;26385:6;26359:8;:21;26368:11;26359:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;26335:8;:21;26344:11;26335:21;;;;;;;;;;;;;;;:57;;;;26403:23;26429:82;26484:26;;;;;;;;;;;26429:82;;:50;26459:19;;;;;;;;;;;26429:50;;:25;26437:16;;;;;;;;;;;26429:25;;:3;;;;;;;;;;;:7;;;;:25;;;;:::i;:::-;:29;;:50;;;;:::i;:::-;:54;;:82;;;;:::i;:::-;26403:108;;26522:22;26547:33;26564:15;26555:3;26547:16;;:33;;;;:::i;:::-;26522:58;;26601:30;26634:44;26673:3;26634:26;26653:6;26634:14;:18;;:26;;;;:::i;:::-;:30;;:44;;;;:::i;:::-;26601:77;;26711:47;26735:22;26711:8;:19;26720:9;26711:19;;;;;;;;;;;;;;;;:23;;:47;;;;:::i;:::-;26689:8;:19;26698:9;26689:19;;;;;;;;;;;;;;;:69;;;;26779:34;26816:56;26867:3;26816:38;26847:6;26816:26;;;;;;;;;;;:30;;;;:38;;;;:::i;:::-;:42;;:56;;;;:::i;:::-;26779:93;;26923:69;26965:26;26923:8;:37;26932:27;;;;;;;;;;;26923:37;;;;;;;;;;;;;;;;:41;;:69;;;;:::i;:::-;26883:8;:37;26892:27;;;;;;;;;;;26883:37;;;;;;;;;;;;;;;:109;;;;27013:36;27052:49;27096:3;27052:31;27076:6;27052:19;;;;;;;;;;;:23;;;;:31;;;;:::i;:::-;:35;;:49;;;;:::i;:::-;27013:88;;27143:62;27176:28;27143:8;:28;27152:18;;;;;;;;;;;27143:28;;;;;;;;;;;;;;;;:32;;:62;;;;:::i;:::-;27112:8;:28;27121:18;;;;;;;;;;;27112:28;;;;;;;;;;;;;;;:93;;;;27226:19;27248:15;27226:37;;27274:24;27301:33;27329:3;27301:15;27309:6;27301:3;;;;;;;;;;;:7;;;;:15;;;;:::i;:::-;:19;;:33;;;;:::i;:::-;27274:60;;27359:6;27355:311;27371:8;:15;;;;27369:1;:17;27355:311;;;27432:2;27410:8;:21;27419:8;27428:1;27419:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27410:21;;;;;;;;;;;;;;;;:24;:69;;;;;27468:11;27438:15;:28;27454:8;27463:1;27454:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27438:28;;;;;;;;;;;;;;;;:41;27410:69;27407:248;;;27506:8;27515:1;27506:11;;;;;;;;;;;;;;;;;;;;;;;;27499:18;;;;;;;;;;;27536:8;;27407:248;27628:11;27597:15;:28;27613:8;27622:1;27613:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27597:28;;;;;;;;;;;;;;;:42;;;;27355:311;27388:3;;;;;:::i;:::-;;;;27355:311;;;;27690:6;27686:126;27702:8;:15;;;;27700:1;:17;27686:126;;;27763:37;27784:8;:15;;;;27763:16;:20;;:37;;;;:::i;:::-;27738:8;:21;27747:8;27756:1;27747:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27738:21;;;;;;;;;;;;;;;;:62;;;;;;;:::i;:::-;;;;;;;;27719:3;;;;;:::i;:::-;;;;27686:126;;;;27832:29;27864:46;27905:3;27864:28;27885:6;27864:16;;;;;;;;;;;:20;;;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;27832:78;;27921:33;27932:21;27921:6;;:10;;:33;;;;:::i;:::-;;28062:2;28039:8;:19;28048:9;28039:19;;;;;;;;;;;;;;;;:25;;:55;;;;;28089:4;28068:26;;:9;:26;;;;28039:55;28035:108;;;28107:8;28121:9;28107:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28035:108;28190:9;28168:56;;28177:11;28168:56;;;28201:22;28168:56;;;;;;:::i;:::-;;;;;;;;25862:2370;;;;;;;;;;;:::o;10058:206::-;10144:7;10202:1;10197;:6;;10205:12;10189:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10244:1;10240;:5;10233:12;;10058:206;;;;;:::o;8160:98::-;8218:7;8249:1;8245;:5;;;;:::i;:::-;8238:12;;8160:98;;;;:::o;8517:::-;8575:7;8606:1;8602;:5;;;;:::i;:::-;8595:12;;8517:98;;;;:::o;8916:::-;8974:7;9005:1;9001;:5;;;;:::i;:::-;8994:12;;8916:98;;;;:::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:137::-;;519:6;506:20;497:29;;535:32;561:5;535:32;:::i;:::-;487:86;;;;:::o;579:135::-;;661:6;648:20;639:29;;677:31;702:5;677:31;:::i;:::-;629:85;;;;:::o;720:262::-;;828:2;816:9;807:7;803:23;799:32;796:2;;;844:1;841;834:12;796:2;887:1;912:53;957:7;948:6;937:9;933:22;912:53;:::i;:::-;902:63;;858:117;786:196;;;;:::o;988:407::-;;;1113:2;1101:9;1092:7;1088:23;1084:32;1081:2;;;1129:1;1126;1119:12;1081:2;1172:1;1197:53;1242:7;1233:6;1222:9;1218:22;1197:53;:::i;:::-;1187:63;;1143:117;1299:2;1325:53;1370:7;1361:6;1350:9;1346:22;1325:53;:::i;:::-;1315:63;;1270:118;1071:324;;;;;:::o;1401:552::-;;;;1543:2;1531:9;1522:7;1518:23;1514:32;1511:2;;;1559:1;1556;1549:12;1511:2;1602:1;1627:53;1672:7;1663:6;1652:9;1648:22;1627:53;:::i;:::-;1617:63;;1573:117;1729:2;1755:53;1800:7;1791:6;1780:9;1776:22;1755:53;:::i;:::-;1745:63;;1700:118;1857:2;1883:53;1928:7;1919:6;1908:9;1904:22;1883:53;:::i;:::-;1873:63;;1828:118;1501:452;;;;;:::o;1959:407::-;;;2084:2;2072:9;2063:7;2059:23;2055:32;2052:2;;;2100:1;2097;2090:12;2052:2;2143:1;2168:53;2213:7;2204:6;2193:9;2189:22;2168:53;:::i;:::-;2158:63;;2114:117;2270:2;2296:53;2341:7;2332:6;2321:9;2317:22;2296:53;:::i;:::-;2286:63;;2241:118;2042:324;;;;;:::o;2372:256::-;;2477:2;2465:9;2456:7;2452:23;2448:32;2445:2;;;2493:1;2490;2483:12;2445:2;2536:1;2561:50;2603:7;2594:6;2583:9;2579:22;2561:50;:::i;:::-;2551:60;;2507:114;2435:193;;;;:::o;2634:262::-;;2742:2;2730:9;2721:7;2717:23;2713:32;2710:2;;;2758:1;2755;2748:12;2710:2;2801:1;2826:53;2871:7;2862:6;2851:9;2847:22;2826:53;:::i;:::-;2816:63;;2772:117;2700:196;;;;:::o;2902:260::-;;3009:2;2997:9;2988:7;2984:23;2980:32;2977:2;;;3025:1;3022;3015:12;2977:2;3068:1;3093:52;3137:7;3128:6;3117:9;3113:22;3093:52;:::i;:::-;3083:62;;3039:116;2967:195;;;;:::o;3168:258::-;;3274:2;3262:9;3253:7;3249:23;3245:32;3242:2;;;3290:1;3287;3280:12;3242:2;3333:1;3358:51;3401:7;3392:6;3381:9;3377:22;3358:51;:::i;:::-;3348:61;;3304:115;3232:194;;;;:::o;3432:118::-;3519:24;3537:5;3519:24;:::i;:::-;3514:3;3507:37;3497:53;;:::o;3556:109::-;3637:21;3652:5;3637:21;:::i;:::-;3632:3;3625:34;3615:50;;:::o;3671:364::-;;3787:39;3820:5;3787:39;:::i;:::-;3842:71;3906:6;3901:3;3842:71;:::i;:::-;3835:78;;3922:52;3967:6;3962:3;3955:4;3948:5;3944:16;3922:52;:::i;:::-;3999:29;4021:6;3999:29;:::i;:::-;3994:3;3990:39;3983:46;;3763:272;;;;;:::o;4041:371::-;;4204:67;4268:2;4263:3;4204:67;:::i;:::-;4197:74;;4301:34;4297:1;4292:3;4288:11;4281:55;4367:9;4362:2;4357:3;4353:12;4346:31;4403:2;4398:3;4394:12;4387:19;;4187:225;;;:::o;4418:370::-;;4581:67;4645:2;4640:3;4581:67;:::i;:::-;4574:74;;4678:34;4674:1;4669:3;4665:11;4658:55;4744:8;4739:2;4734:3;4730:12;4723:30;4779:2;4774:3;4770:12;4763:19;;4564:224;;;:::o;4794:366::-;;4957:67;5021:2;5016:3;4957:67;:::i;:::-;4950:74;;5054:34;5050:1;5045:3;5041:11;5034:55;5120:4;5115:2;5110:3;5106:12;5099:26;5151:2;5146:3;5142:12;5135:19;;4940:220;;;:::o;5166:372::-;;5329:67;5393:2;5388:3;5329:67;:::i;:::-;5322:74;;5426:34;5422:1;5417:3;5413:11;5406:55;5492:10;5487:2;5482:3;5478:12;5471:32;5529:2;5524:3;5520:12;5513:19;;5312:226;;;:::o;5544:303::-;;5707:66;5771:1;5766:3;5707:66;:::i;:::-;5700:73;;5803:8;5799:1;5794:3;5790:11;5783:29;5838:2;5833:3;5829:12;5822:19;;5690:157;;;:::o;5853:372::-;;6016:67;6080:2;6075:3;6016:67;:::i;:::-;6009:74;;6113:34;6109:1;6104:3;6100:11;6093:55;6179:10;6174:2;6169:3;6165:12;6158:32;6216:2;6211:3;6207:12;6200:19;;5999:226;;;:::o;6231:321::-;;6394:67;6458:2;6453:3;6394:67;:::i;:::-;6387:74;;6491:25;6487:1;6482:3;6478:11;6471:46;6543:2;6538:3;6534:12;6527:19;;6377:175;;;:::o;6558:330::-;;6721:67;6785:2;6780:3;6721:67;:::i;:::-;6714:74;;6818:34;6814:1;6809:3;6805:11;6798:55;6879:2;6874:3;6870:12;6863:19;;6704:184;;;:::o;6894:368::-;;7057:67;7121:2;7116:3;7057:67;:::i;:::-;7050:74;;7154:34;7150:1;7145:3;7141:11;7134:55;7220:6;7215:2;7210:3;7206:12;7199:28;7253:2;7248:3;7244:12;7237:19;;7040:222;;;:::o;7268:313::-;;7431:67;7495:2;7490:3;7431:67;:::i;:::-;7424:74;;7528:17;7524:1;7519:3;7515:11;7508:38;7572:2;7567:3;7563:12;7556:19;;7414:167;;;:::o;7587:118::-;7674:24;7692:5;7674:24;:::i;:::-;7669:3;7662:37;7652:53;;:::o;7711:115::-;7796:23;7813:5;7796:23;:::i;:::-;7791:3;7784:36;7774:52;;:::o;7832:112::-;7915:22;7931:5;7915:22;:::i;:::-;7910:3;7903:35;7893:51;;:::o;7950:222::-;;8081:2;8070:9;8066:18;8058:26;;8094:71;8162:1;8151:9;8147:17;8138:6;8094:71;:::i;:::-;8048:124;;;;:::o;8178:210::-;;8303:2;8292:9;8288:18;8280:26;;8316:65;8378:1;8367:9;8363:17;8354:6;8316:65;:::i;:::-;8270:118;;;;:::o;8394:313::-;;8545:2;8534:9;8530:18;8522:26;;8594:9;8588:4;8584:20;8580:1;8569:9;8565:17;8558:47;8622:78;8695:4;8686:6;8622:78;:::i;:::-;8614:86;;8512:195;;;;:::o;8713:419::-;;8917:2;8906:9;8902:18;8894:26;;8966:9;8960:4;8956:20;8952:1;8941:9;8937:17;8930:47;8994:131;9120:4;8994:131;:::i;:::-;8986:139;;8884:248;;;:::o;9138:419::-;;9342:2;9331:9;9327:18;9319:26;;9391:9;9385:4;9381:20;9377:1;9366:9;9362:17;9355:47;9419:131;9545:4;9419:131;:::i;:::-;9411:139;;9309:248;;;:::o;9563:419::-;;9767:2;9756:9;9752:18;9744:26;;9816:9;9810:4;9806:20;9802:1;9791:9;9787:17;9780:47;9844:131;9970:4;9844:131;:::i;:::-;9836:139;;9734:248;;;:::o;9988:419::-;;10192:2;10181:9;10177:18;10169:26;;10241:9;10235:4;10231:20;10227:1;10216:9;10212:17;10205:47;10269:131;10395:4;10269:131;:::i;:::-;10261:139;;10159:248;;;:::o;10413:419::-;;10617:2;10606:9;10602:18;10594:26;;10666:9;10660:4;10656:20;10652:1;10641:9;10637:17;10630:47;10694:131;10820:4;10694:131;:::i;:::-;10686:139;;10584:248;;;:::o;10838:419::-;;11042:2;11031:9;11027:18;11019:26;;11091:9;11085:4;11081:20;11077:1;11066:9;11062:17;11055:47;11119:131;11245:4;11119:131;:::i;:::-;11111:139;;11009:248;;;:::o;11263:419::-;;11467:2;11456:9;11452:18;11444:26;;11516:9;11510:4;11506:20;11502:1;11491:9;11487:17;11480:47;11544:131;11670:4;11544:131;:::i;:::-;11536:139;;11434:248;;;:::o;11688:419::-;;11892:2;11881:9;11877:18;11869:26;;11941:9;11935:4;11931:20;11927:1;11916:9;11912:17;11905:47;11969:131;12095:4;11969:131;:::i;:::-;11961:139;;11859:248;;;:::o;12113:419::-;;12317:2;12306:9;12302:18;12294:26;;12366:9;12360:4;12356:20;12352:1;12341:9;12337:17;12330:47;12394:131;12520:4;12394:131;:::i;:::-;12386:139;;12284:248;;;:::o;12538:419::-;;12742:2;12731:9;12727:18;12719:26;;12791:9;12785:4;12781:20;12777:1;12766:9;12762:17;12755:47;12819:131;12945:4;12819:131;:::i;:::-;12811:139;;12709:248;;;:::o;12963:222::-;;13094:2;13083:9;13079:18;13071:26;;13107:71;13175:1;13164:9;13160:17;13151:6;13107:71;:::i;:::-;13061:124;;;;:::o;13191:218::-;;13320:2;13309:9;13305:18;13297:26;;13333:69;13399:1;13388:9;13384:17;13375:6;13333:69;:::i;:::-;13287:122;;;;:::o;13415:214::-;;13542:2;13531:9;13527:18;13519:26;;13555:67;13619:1;13608:9;13604:17;13595:6;13555:67;:::i;:::-;13509:120;;;;:::o;13635:99::-;;13721:5;13715:12;13705:22;;13694:40;;;:::o;13740:169::-;;13858:6;13853:3;13846:19;13898:4;13893:3;13889:14;13874:29;;13836:73;;;;:::o;13915:305::-;;13974:20;13992:1;13974:20;:::i;:::-;13969:25;;14008:20;14026:1;14008:20;:::i;:::-;14003:25;;14162:1;14094:66;14090:74;14087:1;14084:81;14081:2;;;14168:18;;:::i;:::-;14081:2;14212:1;14209;14205:9;14198:16;;13959:261;;;;:::o;14226:185::-;;14283:20;14301:1;14283:20;:::i;:::-;14278:25;;14317:20;14335:1;14317:20;:::i;:::-;14312:25;;14356:1;14346:2;;14361:18;;:::i;:::-;14346:2;14403:1;14400;14396:9;14391:14;;14268:143;;;;:::o;14417:348::-;;14480:20;14498:1;14480:20;:::i;:::-;14475:25;;14514:20;14532:1;14514:20;:::i;:::-;14509:25;;14702:1;14634:66;14630:74;14627:1;14624:81;14619:1;14612:9;14605:17;14601:105;14598:2;;;14709:18;;:::i;:::-;14598:2;14757:1;14754;14750:9;14739:20;;14465:300;;;;:::o;14771:191::-;;14831:20;14849:1;14831:20;:::i;:::-;14826:25;;14865:20;14883:1;14865:20;:::i;:::-;14860:25;;14904:1;14901;14898:8;14895:2;;;14909:18;;:::i;:::-;14895:2;14954:1;14951;14947:9;14939:17;;14816:146;;;;:::o;14968:96::-;;15034:24;15052:5;15034:24;:::i;:::-;15023:35;;15013:51;;;:::o;15070:90::-;;15147:5;15140:13;15133:21;15122:32;;15112:48;;;:::o;15166:126::-;;15243:42;15236:5;15232:54;15221:65;;15211:81;;;:::o;15298:77::-;;15364:5;15353:16;;15343:32;;;:::o;15381:93::-;;15457:10;15450:5;15446:22;15435:33;;15425:49;;;:::o;15480:86::-;;15555:4;15548:5;15544:16;15533:27;;15523:43;;;:::o;15572:307::-;15640:1;15650:113;15664:6;15661:1;15658:13;15650:113;;;15749:1;15744:3;15740:11;15734:18;15730:1;15725:3;15721:11;15714:39;15686:2;15683:1;15679:10;15674:15;;15650:113;;;15781:6;15778:1;15775:13;15772:2;;;15861:1;15852:6;15847:3;15843:16;15836:27;15772:2;15621:258;;;;:::o;15885:320::-;;15966:1;15960:4;15956:12;15946:22;;16013:1;16007:4;16003:12;16034:18;16024:2;;16090:4;16082:6;16078:17;16068:27;;16024:2;16152;16144:6;16141:14;16121:18;16118:38;16115:2;;;16171:18;;:::i;:::-;16115:2;15936:269;;;;:::o;16211:233::-;;16273:24;16291:5;16273:24;:::i;:::-;16264:33;;16319:66;16312:5;16309:77;16306:2;;;16389:18;;:::i;:::-;16306:2;16436:1;16429:5;16425:13;16418:20;;16254:190;;;:::o;16450:180::-;16498:77;16495:1;16488:88;16595:4;16592:1;16585:15;16619:4;16616:1;16609:15;16636:180;16684:77;16681:1;16674:88;16781:4;16778:1;16771:15;16805:4;16802:1;16795:15;16822:180;16870:77;16867:1;16860:88;16967:4;16964:1;16957:15;16991:4;16988:1;16981:15;17008:102;;17100:2;17096:7;17091:2;17084:5;17080:14;17076:28;17066:38;;17056:54;;;:::o;17116:122::-;17189:24;17207:5;17189:24;:::i;:::-;17182:5;17179:35;17169:2;;17228:1;17225;17218:12;17169:2;17159:79;:::o;17244:116::-;17314:21;17329:5;17314:21;:::i;:::-;17307:5;17304:32;17294:2;;17350:1;17347;17340:12;17294:2;17284:76;:::o;17366:122::-;17439:24;17457:5;17439:24;:::i;:::-;17432:5;17429:35;17419:2;;17478:1;17475;17468:12;17419:2;17409:79;:::o;17494:120::-;17566:23;17583:5;17566:23;:::i;:::-;17559:5;17556:34;17546:2;;17604:1;17601;17594:12;17546:2;17536:78;:::o;17620:118::-;17691:22;17707:5;17691:22;:::i;:::-;17684:5;17681:33;17671:2;;17728:1;17725;17718:12;17671:2;17661:77;:::o
Swarm Source
ipfs://d31f5967311afa4e3bce62ca183da57fec8d760b17dd884b52b27466c5329792
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.