Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 20 from a total of 20 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 21368254 | 429 days ago | IN | 0 ETH | 0.00257198 | ||||
| Transfer | 21365941 | 429 days ago | IN | 0 ETH | 0.00355021 | ||||
| Transfer | 21365687 | 429 days ago | IN | 0 ETH | 0.00321069 | ||||
| Transfer | 21361168 | 430 days ago | IN | 0 ETH | 0.00091934 | ||||
| Transfer | 21360950 | 430 days ago | IN | 0 ETH | 0.00152265 | ||||
| Transfer | 21311923 | 437 days ago | IN | 0 ETH | 0.0017061 | ||||
| Transfer | 21133535 | 462 days ago | IN | 0 ETH | 0.0011257 | ||||
| Transfer | 21133535 | 462 days ago | IN | 0 ETH | 0.0011257 | ||||
| Transfer | 21133525 | 462 days ago | IN | 0 ETH | 0.00099456 | ||||
| Transfer | 21133517 | 462 days ago | IN | 0 ETH | 0.00102817 | ||||
| Transfer | 21125558 | 463 days ago | IN | 0 ETH | 0.00133146 | ||||
| Transfer | 21125552 | 463 days ago | IN | 0 ETH | 0.00132775 | ||||
| Transfer | 20480082 | 553 days ago | IN | 0 ETH | 0.00014462 | ||||
| Transfer | 18343065 | 852 days ago | IN | 0 ETH | 0.00133892 | ||||
| Transfer | 18307722 | 857 days ago | IN | 0 ETH | 0.00064496 | ||||
| Transfer | 18306429 | 857 days ago | IN | 0 ETH | 0.00120876 | ||||
| Transfer | 18274899 | 862 days ago | IN | 0 ETH | 0.00076561 | ||||
| Transfer | 14821549 | 1362 days ago | IN | 0 ETH | 0.00341349 | ||||
| Transfer | 14814743 | 1363 days ago | IN | 0 ETH | 0.00448794 | ||||
| Transfer | 14727202 | 1377 days ago | IN | 0 ETH | 0.00314166 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CUBED
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-04-11
*/
// SPDX-License-Identifier: Unlicensed
/**
#HQxpress (CUBED)
3% fee auto add to the Liquidity pool
2% Distribute to charity wallet
Total supply = 1,000,000,000,000
decimals 9
*/
pragma solidity ^0.8.9;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @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 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;
}
}
/**
* @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);
}
}
}
}
/**
* @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 () {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @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;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract CUBED is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcluded;
address[] private _excluded;
address private _charityWalletAddress = 0xf3996144407f63F7C0dae6dc81672088d1929421 ;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 1000000000000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = "HQxpress";
string private _symbol = "CUBED";
uint8 private _decimals = 9;
uint256 private _taxFee;
uint256 private _previousTaxFee;
uint256 public _charityFee = 2;
uint256 private _previouscharityFee = _charityFee;
uint256 public _liquidityFee = 3;
uint256 private _previousLiquidityFee = _liquidityFee;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = false;
uint256 public _maxTxAmount = 1000000000000 * 10**9;
uint256 private numTokensSellToAddToLiquidity = 100000 * 10**9;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
_rOwned[owner()] = _rTotal;
//Main Net
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// Create a uniswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
// set the rest of the contract variables
uniswapV2Router = _uniswapV2Router;
//exclude owner and this contract from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
emit Transfer(address(0), owner(), _tTotal);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function charityWalletAddress() public view virtual returns (address) {
return _charityWalletAddress;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(uint256 rAmount,,,,,,) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
(uint256 rAmount,,,,,,) = _getValues(tAmount);
return rAmount;
} else {
(,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner() {
// require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
require(!_isExcluded[account], "Account is already excluded");
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner() {
require(_isExcluded[account], "Account is already included");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takecharity(tcharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setcharityAddress(address payable charity) public onlyOwner() {
_charityWalletAddress = charity;
}
function setcharityFeePercent(uint256 charityFee) external onlyOwner() {
_charityFee = charityFee;
}
function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
_liquidityFee = liquidityFee;
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount;
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tcharity, _getRate());
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tcharity);
}
function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
uint256 tFee = calculateTaxFee(tAmount);
uint256 tLiquidity = calculateLiquidityFee(tAmount);
uint256 tcharity = calculatecharityFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tcharity);
return (tTransferAmount, tFee, tLiquidity, tcharity);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rcharity = tcharity.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rcharity);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeLiquidity(uint256 tLiquidity) private {
uint256 currentRate = _getRate();
uint256 rLiquidity = tLiquidity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
if(_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
}
function _takecharity(uint256 tcharity) private {
uint256 currentRate = _getRate();
uint256 rcharity = tcharity.mul(currentRate);
_rOwned[_charityWalletAddress] = _rOwned[_charityWalletAddress].add(rcharity);
if(_isExcluded[_charityWalletAddress])
_tOwned[_charityWalletAddress] = _tOwned[_charityWalletAddress].add(tcharity);
}
function calculateTaxFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_taxFee).div(
10**2
);
}
function calculatecharityFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_charityFee).div(
10**2
);
}
function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_liquidityFee).div(
10**2
);
}
function removeAllFee() private {
if(_taxFee == 0 && _liquidityFee == 0) return;
_previousTaxFee = _taxFee;
_previouscharityFee = _charityFee;
_previousLiquidityFee = _liquidityFee;
_taxFee = 0;
_charityFee = 0;
_liquidityFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_charityFee = _previouscharityFee;
_liquidityFee = _previousLiquidityFee;
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if(from != owner() && to != owner())
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
// is the token balance of this contract address over the min number of
// tokens that we need to initiate a swap + liquidity lock?
// also, don't get caught in a circular liquidity event.
// also, don't swap & liquify if sender is uniswap pair.
uint256 contractTokenBalance = balanceOf(address(this));
if(contractTokenBalance >= _maxTxAmount)
{
contractTokenBalance = _maxTxAmount;
}
bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
if (
overMinTokenBalance &&
!inSwapAndLiquify &&
from != uniswapV2Pair &&
swapAndLiquifyEnabled
) {
contractTokenBalance = numTokensSellToAddToLiquidity;
//add liquidity
swapAndLiquify(contractTokenBalance);
}
//indicates if fee should be deducted from transfer
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
takeFee = false;
}
//transfer amount, it will take tax, burn, liquidity fee
_tokenTransfer(from,to,amount,takeFee);
}
function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
// split the contract balance into halves
uint256 half = contractTokenBalance.div(2);
uint256 otherHalf = contractTokenBalance.sub(half);
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
// swap tokens for ETH
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 newBalance = address(this).balance.sub(initialBalance);
// add liquidity to uniswap
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
if(!takeFee)
removeAllFee();
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if(!takeFee)
restoreAllFee();
}
function _transferStandard(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takecharity(tcharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takecharity(tcharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takecharity(tcharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"charityWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"charity","type":"address"}],"name":"setcharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"charityFee","type":"uint256"}],"name":"setcharityFeePercent","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":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405273f3996144407f63f7c0dae6dc81672088d1929421600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea00000600855600854600019620000789190620006de565b60001962000087919062000745565b6009556040518060400160405280600881526020017f4851787072657373000000000000000000000000000000000000000000000000815250600b9080519060200190620000d7929190620005f5565b506040518060400160405280600581526020017f4355424544000000000000000000000000000000000000000000000000000000815250600c908051906020019062000125929190620005f5565b506009600d60006101000a81548160ff021916908360ff160217905550600260105560105460115560036012556012546013556000601460016101000a81548160ff021916908315150217905550683635c9adc5dea00000601555655af3107a40006016553480156200019757600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600954600160006200026a620005cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003339190620007ea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c19190620007ea565b6040518363ffffffff1660e01b8152600401620003e09291906200082d565b6020604051808303816000875af115801562000400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004269190620007ea565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160046000620004a3620005cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200055c620005cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620005bd91906200086b565b60405180910390a350620008ec565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200060390620008b7565b90600052602060002090601f01602090048101928262000627576000855562000673565b82601f106200064257805160ff191683800117855562000673565b8280016001018555821562000673579182015b828111156200067257825182559160200191906001019062000655565b5b50905062000682919062000686565b5090565b5b80821115620006a157600081600090555060010162000687565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006eb82620006a5565b9150620006f883620006a5565b9250826200070b576200070a620006af565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200075282620006a5565b91506200075f83620006a5565b92508282101562000775576200077462000716565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007b28262000785565b9050919050565b620007c481620007a5565b8114620007d057600080fd5b50565b600081519050620007e481620007b9565b92915050565b60006020828403121562000803576200080262000780565b5b60006200081384828501620007d3565b91505092915050565b6200082781620007a5565b82525050565b60006040820190506200084460008301856200081c565b6200085360208301846200081c565b9392505050565b6200086581620006a5565b82525050565b60006020820190506200088260008301846200085a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008d057607f821691505b602082108103620008e657620008e562000888565b5b50919050565b60805160a0516151186200093c600039600081816112960152612377015260008181610a4301528181612e4d01528181612f2e01528181612f5501528181612ff1015261301801526151186000f3fe6080604052600436106102135760003560e01c80635342acb411610118578063a457c2d7116100a0578063ea2f0b371161006f578063ea2f0b37146107f8578063ec271be214610821578063ec28438a1461084c578063f2fde38b14610875578063f6889a261461089e5761021a565b8063a457c2d714610718578063a9059cbb14610755578063c49b9a8014610792578063dd62ed3e146107bb5761021a565b80637d1db4a5116100e75780637d1db4a51461063157806388f820201461065c5780638da5cb5b146106995780638ee88c53146106c457806395d89b41146106ed5761021a565b80635342acb4146105755780636bc87c3a146105b257806370a08231146105dd578063715018a61461061a5761021a565b80633685d4191161019b578063437823ec1161016a578063437823ec146104905780634549b039146104b957806349bd5a5e146104f65780634a74bb021461052157806352390c021461054c5761021a565b80633685d419146103d657806339509351146103ff5780633bd5d1731461043c57806340f8007a146104655761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b806306fdde031461021f578063081fdcc71461024a578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b604051610241919061405f565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906140e4565b610959565b005b34801561027f57600080fd5b5061029a60048036038101906102959190614185565b610a19565b6040516102a791906141e0565b60405180910390f35b3480156102bc57600080fd5b506102c5610a37565b6040516102d2919061420a565b60405180910390f35b3480156102e757600080fd5b506102f0610a41565b6040516102fd9190614284565b60405180910390f35b34801561031257600080fd5b5061031b610a65565b604051610328919061420a565b60405180910390f35b34801561033d57600080fd5b506103586004803603810190610353919061429f565b610a6f565b60405161036591906141e0565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906142f2565b610b48565b6040516103a2919061420a565b60405180910390f35b3480156103b757600080fd5b506103c0610bb6565b6040516103cd919061433b565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190614356565b610bcd565b005b34801561040b57600080fd5b5061042660048036038101906104219190614185565b610f02565b60405161043391906141e0565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906142f2565b610fb5565b005b34801561047157600080fd5b5061047a611131565b604051610487919061420a565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190614356565b611137565b005b3480156104c557600080fd5b506104e060048036038101906104db91906143af565b61120e565b6040516104ed919061420a565b60405180910390f35b34801561050257600080fd5b5061050b611294565b60405161051891906143fe565b60405180910390f35b34801561052d57600080fd5b506105366112b8565b60405161054391906141e0565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614356565b6112cb565b005b34801561058157600080fd5b5061059c60048036038101906105979190614356565b611566565b6040516105a991906141e0565b60405180910390f35b3480156105be57600080fd5b506105c76115bc565b6040516105d4919061420a565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614356565b6115c2565b604051610611919061420a565b60405180910390f35b34801561062657600080fd5b5061062f6116ad565b005b34801561063d57600080fd5b506106466117e7565b604051610653919061420a565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190614356565b6117ed565b60405161069091906141e0565b60405180910390f35b3480156106a557600080fd5b506106ae611843565b6040516106bb91906143fe565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e691906142f2565b61186c565b005b3480156106f957600080fd5b506107026118f2565b60405161070f919061405f565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190614185565b611984565b60405161074c91906141e0565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190614185565b611a51565b60405161078991906141e0565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190614419565b611a6f565b005b3480156107c757600080fd5b506107e260048036038101906107dd9190614446565b611b3f565b6040516107ef919061420a565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190614356565b611bc6565b005b34801561082d57600080fd5b50610836611c9d565b60405161084391906143fe565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906142f2565b611cc7565b005b34801561088157600080fd5b5061089c60048036038101906108979190614356565b611d4d565b005b3480156108aa57600080fd5b506108c560048036038101906108c091906142f2565b611ef5565b005b6060600b80546108d6906144b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906144b5565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b610961611f7b565b73ffffffffffffffffffffffffffffffffffffffff1661097f611843565b73ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90614532565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a2d610a26611f7b565b8484611f83565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6000610a7c84848461214c565b610b3d84610a88611f7b565b610b388560405180606001604052806028815260200161509660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aee611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b79092919063ffffffff16565b611f83565b600190509392505050565b6000600954821115610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906145c4565b60405180910390fd5b6000610b9961250c565b9050610bae818461253790919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610bd5611f7b565b73ffffffffffffffffffffffffffffffffffffffff16610bf3611843565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090614532565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90614630565b60405180910390fd5b60005b600680549050811015610efe578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610d1057610d0f614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610eeb5760066001600680549050610d6a91906146ae565b81548110610d7b57610d7a614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610dba57610db9614650565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610eb157610eb06146e2565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610efe565b8080610ef690614711565b915050610cd8565b5050565b6000610fab610f0f611f7b565b84610fa68560036000610f20611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b611f83565b6001905092915050565b6000610fbf611f7b565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906147cb565b60405180910390fd5b600061105983612563565b50505050505090506110b381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110b816009546125cb90919063ffffffff16565b60098190555061112683600a5461254d90919063ffffffff16565b600a81905550505050565b60105481565b61113f611f7b565b73ffffffffffffffffffffffffffffffffffffffff1661115d611843565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90614532565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90614837565b60405180910390fd5b8161127657600061126584612563565b50505050505090508091505061128e565b600061128184612563565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460019054906101000a900460ff1681565b6112d3611f7b565b73ffffffffffffffffffffffffffffffffffffffff166112f1611843565b73ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90614532565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb906148a3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114a857611464600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b48565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561165d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506116a8565b6116a5600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b48565b90505b919050565b6116b5611f7b565b73ffffffffffffffffffffffffffffffffffffffff166116d3611843565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172090614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611874611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611892611843565b73ffffffffffffffffffffffffffffffffffffffff16146118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df90614532565b60405180910390fd5b8060128190555050565b6060600c8054611901906144b5565b80601f016020809104026020016040519081016040528092919081815260200182805461192d906144b5565b801561197a5780601f1061194f5761010080835404028352916020019161197a565b820191906000526020600020905b81548152906001019060200180831161195d57829003601f168201915b5050505050905090565b6000611a47611991611f7b565b84611a42856040518060600160405280602581526020016150be60259139600360006119bb611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b79092919063ffffffff16565b611f83565b6001905092915050565b6000611a65611a5e611f7b565b848461214c565b6001905092915050565b611a77611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611a95611843565b73ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290614532565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b3491906141e0565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bce611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611bec611843565b73ffffffffffffffffffffffffffffffffffffffff1614611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614532565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ccf611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611ced611843565b73ffffffffffffffffffffffffffffffffffffffff1614611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90614532565b60405180910390fd5b8060158190555050565b611d55611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611d73611843565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90614935565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efd611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611f1b611843565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6890614532565b60405180910390fd5b8060108190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe9906149c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890614a59565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213f919061420a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614aeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614b7d565b60405180910390fd5b6000811161226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614c0f565b60405180910390fd5b612275611843565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122e357506122b3611843565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232e5760155481111561232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232490614ca1565b60405180910390fd5b5b6000612339306115c2565b9050601554811061234a5760155490505b6000601654821015905080801561236e5750601460009054906101000a900460ff16155b80156123c657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123de5750601460019054906101000a900460ff165b156123f25760165491506123f1826125e1565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124995750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124a357600090505b6124af868686846126b7565b505050505050565b60008383111582906124ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f6919061405f565b60405180910390fd5b5082840390509392505050565b60008060006125196129c8565b91509150612530818361253790919063ffffffff16565b9250505090565b600081836125459190614cf0565b905092915050565b6000818361255b9190614d21565b905092915050565b600080600080600080600080600080600061257d8c612c7b565b9350935093509350600080600061259e8f87878761259961250c565b612cfa565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125d991906146ae565b905092915050565b6001601460006101000a81548160ff021916908315150217905550600061261260028361253790919063ffffffff16565b9050600061262982846125cb90919063ffffffff16565b9050600047905061263983612dae565b600061264e82476125cb90919063ffffffff16565b905061265a8382612feb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161268d93929190614d77565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b806126c5576126c46130cc565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127685750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561277d5761277884848461311a565b6129b4565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283557612830848484613388565b6129b3565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128d95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576128e98484846135f6565b6129b2565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129905750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129a5576129a08484846137cf565b6129b1565b6129b08484846135f6565b5b5b5b5b806129c2576129c1613ad2565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612c3e57826001600060068481548110612a0257612a01614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612af05750816002600060068481548110612a8857612a87614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612b075760095460085494509450505050612c77565b612b976001600060068481548110612b2257612b21614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125cb90919063ffffffff16565b9250612c296002600060068481548110612bb457612bb3614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125cb90919063ffffffff16565b91508080612c3690614711565b9150506129dc565b50612c5660085460095461253790919063ffffffff16565b821015612c6e57600954600854935093505050612c77565b81819350935050505b9091565b6000806000806000612c8c86613aef565b90506000612c9987613b20565b90506000612ca688613b51565b90506000612ce182612cd385612cc5888e6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612d13858a613b8290919063ffffffff16565b90506000612d2a868a613b8290919063ffffffff16565b90506000612d41878a613b8290919063ffffffff16565b90506000612d58888a613b8290919063ffffffff16565b90506000612d9382612d8585612d77888a6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612dcb57612dca614dae565b5b604051908082528060200260200182016040528015612df95781602001602082028036833780820191505090505b5090503081600081518110612e1157612e10614650565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eda9190614df2565b81600181518110612eee57612eed614650565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f53307f000000000000000000000000000000000000000000000000000000000000000084611f83565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fb5959493929190614f18565b600060405180830381600087803b158015612fcf57600080fd5b505af1158015612fe3573d6000803e3d6000fd5b505050505050565b613016307f000000000000000000000000000000000000000000000000000000000000000084611f83565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613060611843565b426040518863ffffffff1660e01b815260040161308296959493929190614f72565b60606040518083038185885af11580156130a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130c59190614fe8565b5050505050565b6000600e541480156130e057506000601254145b61311857600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b600080600080600080600061312e88612563565b965096509650965096509650965061318e88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061322387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061330482613b98565b61330d81613d3d565b6133178584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613374919061420a565b60405180910390a350505050505050505050565b600080600080600080600061339c88612563565b96509650965096509650965096506133fc87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349184600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352686600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357282613b98565b61357b81613d3d565b6135858584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135e2919061420a565b60405180910390a350505050505050505050565b600080600080600080600061360a88612563565b965096509650965096509650965061366a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ff86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374b82613b98565b61375481613d3d565b61375e8584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137bb919061420a565b60405180910390a350505050505050505050565b60008060008060008060006137e388612563565b965096509650965096509650965061384388600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d887600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e82613b98565b613a5781613d3d565b613a618584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613abe919061420a565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613b196064613b0b600e5485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b6000613b4a6064613b3c60125485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b6000613b7b6064613b6d60105485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b60008183613b90919061503b565b905092915050565b6000613ba261250c565b90506000613bb98284613b8290919063ffffffff16565b9050613c0d81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d3857613cf483600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613d4761250c565b90506000613d5e8284613b8290919063ffffffff16565b9050613dd48160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f8757613f218360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613fa1826009546125cb90919063ffffffff16565b600981905550613fbc81600a5461254d90919063ffffffff16565b600a819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614000578082015181840152602081019050613fe5565b8381111561400f576000848401525b50505050565b6000601f19601f8301169050919050565b600061403182613fc6565b61403b8185613fd1565b935061404b818560208601613fe2565b61405481614015565b840191505092915050565b600060208201905081810360008301526140798184614026565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140b182614086565b9050919050565b6140c1816140a6565b81146140cc57600080fd5b50565b6000813590506140de816140b8565b92915050565b6000602082840312156140fa576140f9614081565b5b6000614108848285016140cf565b91505092915050565b600061411c82614086565b9050919050565b61412c81614111565b811461413757600080fd5b50565b60008135905061414981614123565b92915050565b6000819050919050565b6141628161414f565b811461416d57600080fd5b50565b60008135905061417f81614159565b92915050565b6000806040838503121561419c5761419b614081565b5b60006141aa8582860161413a565b92505060206141bb85828601614170565b9150509250929050565b60008115159050919050565b6141da816141c5565b82525050565b60006020820190506141f560008301846141d1565b92915050565b6142048161414f565b82525050565b600060208201905061421f60008301846141fb565b92915050565b6000819050919050565b600061424a61424561424084614086565b614225565b614086565b9050919050565b600061425c8261422f565b9050919050565b600061426e82614251565b9050919050565b61427e81614263565b82525050565b60006020820190506142996000830184614275565b92915050565b6000806000606084860312156142b8576142b7614081565b5b60006142c68682870161413a565b93505060206142d78682870161413a565b92505060406142e886828701614170565b9150509250925092565b60006020828403121561430857614307614081565b5b600061431684828501614170565b91505092915050565b600060ff82169050919050565b6143358161431f565b82525050565b6000602082019050614350600083018461432c565b92915050565b60006020828403121561436c5761436b614081565b5b600061437a8482850161413a565b91505092915050565b61438c816141c5565b811461439757600080fd5b50565b6000813590506143a981614383565b92915050565b600080604083850312156143c6576143c5614081565b5b60006143d485828601614170565b92505060206143e58582860161439a565b9150509250929050565b6143f881614111565b82525050565b600060208201905061441360008301846143ef565b92915050565b60006020828403121561442f5761442e614081565b5b600061443d8482850161439a565b91505092915050565b6000806040838503121561445d5761445c614081565b5b600061446b8582860161413a565b925050602061447c8582860161413a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144cd57607f821691505b6020821081036144e0576144df614486565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061451c602083613fd1565b9150614527826144e6565b602082019050919050565b6000602082019050818103600083015261454b8161450f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145ae602a83613fd1565b91506145b982614552565b604082019050919050565b600060208201905081810360008301526145dd816145a1565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b600061461a601b83613fd1565b9150614625826145e4565b602082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b98261414f565b91506146c48361414f565b9250828210156146d7576146d661467f565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061471c8261414f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474e5761474d61467f565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006147b5602c83613fd1565b91506147c082614759565b604082019050919050565b600060208201905081810360008301526147e4816147a8565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614821601f83613fd1565b915061482c826147eb565b602082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b600061488d601b83613fd1565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061491f602683613fd1565b915061492a826148c3565b604082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149b1602483613fd1565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a43602283613fd1565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ad5602583613fd1565b9150614ae082614a79565b604082019050919050565b60006020820190508181036000830152614b0481614ac8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b67602383613fd1565b9150614b7282614b0b565b604082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614bf9602983613fd1565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614c8b602883613fd1565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cfb8261414f565b9150614d068361414f565b925082614d1657614d15614cc1565b5b828204905092915050565b6000614d2c8261414f565b9150614d378361414f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d6c57614d6b61467f565b5b828201905092915050565b6000606082019050614d8c60008301866141fb565b614d9960208301856141fb565b614da660408301846141fb565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614dec81614123565b92915050565b600060208284031215614e0857614e07614081565b5b6000614e1684828501614ddd565b91505092915050565b6000819050919050565b6000614e44614e3f614e3a84614e1f565b614225565b61414f565b9050919050565b614e5481614e29565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e8f81614111565b82525050565b6000614ea18383614e86565b60208301905092915050565b6000602082019050919050565b6000614ec582614e5a565b614ecf8185614e65565b9350614eda83614e76565b8060005b83811015614f0b578151614ef28882614e95565b9750614efd83614ead565b925050600181019050614ede565b5085935050505092915050565b600060a082019050614f2d60008301886141fb565b614f3a6020830187614e4b565b8181036040830152614f4c8186614eba565b9050614f5b60608301856143ef565b614f6860808301846141fb565b9695505050505050565b600060c082019050614f8760008301896143ef565b614f9460208301886141fb565b614fa16040830187614e4b565b614fae6060830186614e4b565b614fbb60808301856143ef565b614fc860a08301846141fb565b979650505050505050565b600081519050614fe281614159565b92915050565b60008060006060848603121561500157615000614081565b5b600061500f86828701614fd3565b935050602061502086828701614fd3565b925050604061503186828701614fd3565b9150509250925092565b60006150468261414f565b91506150518361414f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561508a5761508961467f565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220109989d7191fcb966c1f6084b3c593614e7cce098b2a7c39c3f9b67cd420bf2d64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102135760003560e01c80635342acb411610118578063a457c2d7116100a0578063ea2f0b371161006f578063ea2f0b37146107f8578063ec271be214610821578063ec28438a1461084c578063f2fde38b14610875578063f6889a261461089e5761021a565b8063a457c2d714610718578063a9059cbb14610755578063c49b9a8014610792578063dd62ed3e146107bb5761021a565b80637d1db4a5116100e75780637d1db4a51461063157806388f820201461065c5780638da5cb5b146106995780638ee88c53146106c457806395d89b41146106ed5761021a565b80635342acb4146105755780636bc87c3a146105b257806370a08231146105dd578063715018a61461061a5761021a565b80633685d4191161019b578063437823ec1161016a578063437823ec146104905780634549b039146104b957806349bd5a5e146104f65780634a74bb021461052157806352390c021461054c5761021a565b80633685d419146103d657806339509351146103ff5780633bd5d1731461043c57806340f8007a146104655761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b806306fdde031461021f578063081fdcc71461024a578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b604051610241919061405f565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906140e4565b610959565b005b34801561027f57600080fd5b5061029a60048036038101906102959190614185565b610a19565b6040516102a791906141e0565b60405180910390f35b3480156102bc57600080fd5b506102c5610a37565b6040516102d2919061420a565b60405180910390f35b3480156102e757600080fd5b506102f0610a41565b6040516102fd9190614284565b60405180910390f35b34801561031257600080fd5b5061031b610a65565b604051610328919061420a565b60405180910390f35b34801561033d57600080fd5b506103586004803603810190610353919061429f565b610a6f565b60405161036591906141e0565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906142f2565b610b48565b6040516103a2919061420a565b60405180910390f35b3480156103b757600080fd5b506103c0610bb6565b6040516103cd919061433b565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190614356565b610bcd565b005b34801561040b57600080fd5b5061042660048036038101906104219190614185565b610f02565b60405161043391906141e0565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906142f2565b610fb5565b005b34801561047157600080fd5b5061047a611131565b604051610487919061420a565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190614356565b611137565b005b3480156104c557600080fd5b506104e060048036038101906104db91906143af565b61120e565b6040516104ed919061420a565b60405180910390f35b34801561050257600080fd5b5061050b611294565b60405161051891906143fe565b60405180910390f35b34801561052d57600080fd5b506105366112b8565b60405161054391906141e0565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614356565b6112cb565b005b34801561058157600080fd5b5061059c60048036038101906105979190614356565b611566565b6040516105a991906141e0565b60405180910390f35b3480156105be57600080fd5b506105c76115bc565b6040516105d4919061420a565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614356565b6115c2565b604051610611919061420a565b60405180910390f35b34801561062657600080fd5b5061062f6116ad565b005b34801561063d57600080fd5b506106466117e7565b604051610653919061420a565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190614356565b6117ed565b60405161069091906141e0565b60405180910390f35b3480156106a557600080fd5b506106ae611843565b6040516106bb91906143fe565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e691906142f2565b61186c565b005b3480156106f957600080fd5b506107026118f2565b60405161070f919061405f565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190614185565b611984565b60405161074c91906141e0565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190614185565b611a51565b60405161078991906141e0565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190614419565b611a6f565b005b3480156107c757600080fd5b506107e260048036038101906107dd9190614446565b611b3f565b6040516107ef919061420a565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190614356565b611bc6565b005b34801561082d57600080fd5b50610836611c9d565b60405161084391906143fe565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906142f2565b611cc7565b005b34801561088157600080fd5b5061089c60048036038101906108979190614356565b611d4d565b005b3480156108aa57600080fd5b506108c560048036038101906108c091906142f2565b611ef5565b005b6060600b80546108d6906144b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906144b5565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b610961611f7b565b73ffffffffffffffffffffffffffffffffffffffff1661097f611843565b73ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90614532565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a2d610a26611f7b565b8484611f83565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6000610a7c84848461214c565b610b3d84610a88611f7b565b610b388560405180606001604052806028815260200161509660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aee611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b79092919063ffffffff16565b611f83565b600190509392505050565b6000600954821115610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906145c4565b60405180910390fd5b6000610b9961250c565b9050610bae818461253790919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610bd5611f7b565b73ffffffffffffffffffffffffffffffffffffffff16610bf3611843565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090614532565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90614630565b60405180910390fd5b60005b600680549050811015610efe578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610d1057610d0f614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610eeb5760066001600680549050610d6a91906146ae565b81548110610d7b57610d7a614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610dba57610db9614650565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610eb157610eb06146e2565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610efe565b8080610ef690614711565b915050610cd8565b5050565b6000610fab610f0f611f7b565b84610fa68560036000610f20611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b611f83565b6001905092915050565b6000610fbf611f7b565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906147cb565b60405180910390fd5b600061105983612563565b50505050505090506110b381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110b816009546125cb90919063ffffffff16565b60098190555061112683600a5461254d90919063ffffffff16565b600a81905550505050565b60105481565b61113f611f7b565b73ffffffffffffffffffffffffffffffffffffffff1661115d611843565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90614532565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90614837565b60405180910390fd5b8161127657600061126584612563565b50505050505090508091505061128e565b600061128184612563565b5050505050915050809150505b92915050565b7f0000000000000000000000004e9abe95482924fc3744f4126bc9c085be50e12c81565b601460019054906101000a900460ff1681565b6112d3611f7b565b73ffffffffffffffffffffffffffffffffffffffff166112f1611843565b73ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90614532565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb906148a3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114a857611464600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b48565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561165d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506116a8565b6116a5600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b48565b90505b919050565b6116b5611f7b565b73ffffffffffffffffffffffffffffffffffffffff166116d3611843565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172090614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611874611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611892611843565b73ffffffffffffffffffffffffffffffffffffffff16146118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df90614532565b60405180910390fd5b8060128190555050565b6060600c8054611901906144b5565b80601f016020809104026020016040519081016040528092919081815260200182805461192d906144b5565b801561197a5780601f1061194f5761010080835404028352916020019161197a565b820191906000526020600020905b81548152906001019060200180831161195d57829003601f168201915b5050505050905090565b6000611a47611991611f7b565b84611a42856040518060600160405280602581526020016150be60259139600360006119bb611f7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b79092919063ffffffff16565b611f83565b6001905092915050565b6000611a65611a5e611f7b565b848461214c565b6001905092915050565b611a77611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611a95611843565b73ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290614532565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b3491906141e0565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bce611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611bec611843565b73ffffffffffffffffffffffffffffffffffffffff1614611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614532565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ccf611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611ced611843565b73ffffffffffffffffffffffffffffffffffffffff1614611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90614532565b60405180910390fd5b8060158190555050565b611d55611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611d73611843565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90614935565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efd611f7b565b73ffffffffffffffffffffffffffffffffffffffff16611f1b611843565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6890614532565b60405180910390fd5b8060108190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe9906149c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890614a59565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213f919061420a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614aeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614b7d565b60405180910390fd5b6000811161226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614c0f565b60405180910390fd5b612275611843565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122e357506122b3611843565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232e5760155481111561232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232490614ca1565b60405180910390fd5b5b6000612339306115c2565b9050601554811061234a5760155490505b6000601654821015905080801561236e5750601460009054906101000a900460ff16155b80156123c657507f0000000000000000000000004e9abe95482924fc3744f4126bc9c085be50e12c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123de5750601460019054906101000a900460ff165b156123f25760165491506123f1826125e1565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124995750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124a357600090505b6124af868686846126b7565b505050505050565b60008383111582906124ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f6919061405f565b60405180910390fd5b5082840390509392505050565b60008060006125196129c8565b91509150612530818361253790919063ffffffff16565b9250505090565b600081836125459190614cf0565b905092915050565b6000818361255b9190614d21565b905092915050565b600080600080600080600080600080600061257d8c612c7b565b9350935093509350600080600061259e8f87878761259961250c565b612cfa565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125d991906146ae565b905092915050565b6001601460006101000a81548160ff021916908315150217905550600061261260028361253790919063ffffffff16565b9050600061262982846125cb90919063ffffffff16565b9050600047905061263983612dae565b600061264e82476125cb90919063ffffffff16565b905061265a8382612feb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161268d93929190614d77565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b806126c5576126c46130cc565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127685750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561277d5761277884848461311a565b6129b4565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283557612830848484613388565b6129b3565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128d95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576128e98484846135f6565b6129b2565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129905750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129a5576129a08484846137cf565b6129b1565b6129b08484846135f6565b5b5b5b5b806129c2576129c1613ad2565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612c3e57826001600060068481548110612a0257612a01614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612af05750816002600060068481548110612a8857612a87614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612b075760095460085494509450505050612c77565b612b976001600060068481548110612b2257612b21614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125cb90919063ffffffff16565b9250612c296002600060068481548110612bb457612bb3614650565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125cb90919063ffffffff16565b91508080612c3690614711565b9150506129dc565b50612c5660085460095461253790919063ffffffff16565b821015612c6e57600954600854935093505050612c77565b81819350935050505b9091565b6000806000806000612c8c86613aef565b90506000612c9987613b20565b90506000612ca688613b51565b90506000612ce182612cd385612cc5888e6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612d13858a613b8290919063ffffffff16565b90506000612d2a868a613b8290919063ffffffff16565b90506000612d41878a613b8290919063ffffffff16565b90506000612d58888a613b8290919063ffffffff16565b90506000612d9382612d8585612d77888a6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b6125cb90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612dcb57612dca614dae565b5b604051908082528060200260200182016040528015612df95781602001602082028036833780820191505090505b5090503081600081518110612e1157612e10614650565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eda9190614df2565b81600181518110612eee57612eed614650565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f53307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f83565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fb5959493929190614f18565b600060405180830381600087803b158015612fcf57600080fd5b505af1158015612fe3573d6000803e3d6000fd5b505050505050565b613016307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f83565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613060611843565b426040518863ffffffff1660e01b815260040161308296959493929190614f72565b60606040518083038185885af11580156130a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130c59190614fe8565b5050505050565b6000600e541480156130e057506000601254145b61311857600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b600080600080600080600061312e88612563565b965096509650965096509650965061318e88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061322387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061330482613b98565b61330d81613d3d565b6133178584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613374919061420a565b60405180910390a350505050505050505050565b600080600080600080600061339c88612563565b96509650965096509650965096506133fc87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349184600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352686600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357282613b98565b61357b81613d3d565b6135858584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135e2919061420a565b60405180910390a350505050505050505050565b600080600080600080600061360a88612563565b965096509650965096509650965061366a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ff86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374b82613b98565b61375481613d3d565b61375e8584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137bb919061420a565b60405180910390a350505050505050505050565b60008060008060008060006137e388612563565b965096509650965096509650965061384388600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d887600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cb90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e82613b98565b613a5781613d3d565b613a618584613f8c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613abe919061420a565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613b196064613b0b600e5485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b6000613b4a6064613b3c60125485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b6000613b7b6064613b6d60105485613b8290919063ffffffff16565b61253790919063ffffffff16565b9050919050565b60008183613b90919061503b565b905092915050565b6000613ba261250c565b90506000613bb98284613b8290919063ffffffff16565b9050613c0d81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d3857613cf483600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613d4761250c565b90506000613d5e8284613b8290919063ffffffff16565b9050613dd48160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f8757613f218360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254d90919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613fa1826009546125cb90919063ffffffff16565b600981905550613fbc81600a5461254d90919063ffffffff16565b600a819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614000578082015181840152602081019050613fe5565b8381111561400f576000848401525b50505050565b6000601f19601f8301169050919050565b600061403182613fc6565b61403b8185613fd1565b935061404b818560208601613fe2565b61405481614015565b840191505092915050565b600060208201905081810360008301526140798184614026565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140b182614086565b9050919050565b6140c1816140a6565b81146140cc57600080fd5b50565b6000813590506140de816140b8565b92915050565b6000602082840312156140fa576140f9614081565b5b6000614108848285016140cf565b91505092915050565b600061411c82614086565b9050919050565b61412c81614111565b811461413757600080fd5b50565b60008135905061414981614123565b92915050565b6000819050919050565b6141628161414f565b811461416d57600080fd5b50565b60008135905061417f81614159565b92915050565b6000806040838503121561419c5761419b614081565b5b60006141aa8582860161413a565b92505060206141bb85828601614170565b9150509250929050565b60008115159050919050565b6141da816141c5565b82525050565b60006020820190506141f560008301846141d1565b92915050565b6142048161414f565b82525050565b600060208201905061421f60008301846141fb565b92915050565b6000819050919050565b600061424a61424561424084614086565b614225565b614086565b9050919050565b600061425c8261422f565b9050919050565b600061426e82614251565b9050919050565b61427e81614263565b82525050565b60006020820190506142996000830184614275565b92915050565b6000806000606084860312156142b8576142b7614081565b5b60006142c68682870161413a565b93505060206142d78682870161413a565b92505060406142e886828701614170565b9150509250925092565b60006020828403121561430857614307614081565b5b600061431684828501614170565b91505092915050565b600060ff82169050919050565b6143358161431f565b82525050565b6000602082019050614350600083018461432c565b92915050565b60006020828403121561436c5761436b614081565b5b600061437a8482850161413a565b91505092915050565b61438c816141c5565b811461439757600080fd5b50565b6000813590506143a981614383565b92915050565b600080604083850312156143c6576143c5614081565b5b60006143d485828601614170565b92505060206143e58582860161439a565b9150509250929050565b6143f881614111565b82525050565b600060208201905061441360008301846143ef565b92915050565b60006020828403121561442f5761442e614081565b5b600061443d8482850161439a565b91505092915050565b6000806040838503121561445d5761445c614081565b5b600061446b8582860161413a565b925050602061447c8582860161413a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144cd57607f821691505b6020821081036144e0576144df614486565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061451c602083613fd1565b9150614527826144e6565b602082019050919050565b6000602082019050818103600083015261454b8161450f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145ae602a83613fd1565b91506145b982614552565b604082019050919050565b600060208201905081810360008301526145dd816145a1565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b600061461a601b83613fd1565b9150614625826145e4565b602082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b98261414f565b91506146c48361414f565b9250828210156146d7576146d661467f565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061471c8261414f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474e5761474d61467f565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006147b5602c83613fd1565b91506147c082614759565b604082019050919050565b600060208201905081810360008301526147e4816147a8565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614821601f83613fd1565b915061482c826147eb565b602082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b600061488d601b83613fd1565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061491f602683613fd1565b915061492a826148c3565b604082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149b1602483613fd1565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a43602283613fd1565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ad5602583613fd1565b9150614ae082614a79565b604082019050919050565b60006020820190508181036000830152614b0481614ac8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b67602383613fd1565b9150614b7282614b0b565b604082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614bf9602983613fd1565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614c8b602883613fd1565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cfb8261414f565b9150614d068361414f565b925082614d1657614d15614cc1565b5b828204905092915050565b6000614d2c8261414f565b9150614d378361414f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d6c57614d6b61467f565b5b828201905092915050565b6000606082019050614d8c60008301866141fb565b614d9960208301856141fb565b614da660408301846141fb565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614dec81614123565b92915050565b600060208284031215614e0857614e07614081565b5b6000614e1684828501614ddd565b91505092915050565b6000819050919050565b6000614e44614e3f614e3a84614e1f565b614225565b61414f565b9050919050565b614e5481614e29565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e8f81614111565b82525050565b6000614ea18383614e86565b60208301905092915050565b6000602082019050919050565b6000614ec582614e5a565b614ecf8185614e65565b9350614eda83614e76565b8060005b83811015614f0b578151614ef28882614e95565b9750614efd83614ead565b925050600181019050614ede565b5085935050505092915050565b600060a082019050614f2d60008301886141fb565b614f3a6020830187614e4b565b8181036040830152614f4c8186614eba565b9050614f5b60608301856143ef565b614f6860808301846141fb565b9695505050505050565b600060c082019050614f8760008301896143ef565b614f9460208301886141fb565b614fa16040830187614e4b565b614fae6060830186614e4b565b614fbb60808301856143ef565b614fc860a08301846141fb565b979650505050505050565b600081519050614fe281614159565b92915050565b60008060006060848603121561500157615000614081565b5b600061500f86828701614fd3565b935050602061502086828701614fd3565b925050604061503186828701614fd3565b9150509250925092565b60006150468261414f565b91506150518361414f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561508a5761508961467f565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220109989d7191fcb966c1f6084b3c593614e7cce098b2a7c39c3f9b67cd420bf2d64736f6c634300080d0033
Deployed Bytecode Sourcemap
28894:19877:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31466:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36715:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32501:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33622:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30017:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31743:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32670:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34549:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31652:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35265:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32991:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33717:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29823:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36463:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34103:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30075:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30154:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34810:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41610:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29916:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31969:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20377:148;;;;;;;;;;;;;:::i;:::-;;30208:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33494:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19726:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36970:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31557:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33217:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32175:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37222:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32350:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36586:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31844:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37103:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20680:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36844:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31466:83;31503:13;31536:5;31529:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31466:83;:::o;36715:121::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36821:7:::1;36797:21;;:31;;;;;;;;;;;;;;;;;;36715:121:::0;:::o;32501:161::-;32576:4;32593:39;32602:12;:10;:12::i;:::-;32616:7;32625:6;32593:8;:39::i;:::-;32650:4;32643:11;;32501:161;;;;:::o;33622:87::-;33664:7;33691:10;;33684:17;;33622:87;:::o;30017:51::-;;;:::o;31743:95::-;31796:7;31823;;31816:14;;31743:95;:::o;32670:313::-;32768:4;32785:36;32795:6;32803:9;32814:6;32785:9;:36::i;:::-;32832:121;32841:6;32849:12;:10;:12::i;:::-;32863:89;32901:6;32863:89;;;;;;;;;;;;;;;;;:11;:19;32875:6;32863:19;;;;;;;;;;;;;;;:33;32883:12;:10;:12::i;:::-;32863:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;32832:8;:121::i;:::-;32971:4;32964:11;;32670:313;;;;;:::o;34549:253::-;34615:7;34654;;34643;:18;;34635:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34719:19;34742:10;:8;:10::i;:::-;34719:33;;34770:24;34782:11;34770:7;:11;;:24;;;;:::i;:::-;34763:31;;;34549:253;;;:::o;31652:83::-;31693:5;31718:9;;;;;;;;;;;31711:16;;31652:83;:::o;35265:479::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35347:11:::1;:20;35359:7;35347:20;;;;;;;;;;;;;;;;;;;;;;;;;35339:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35415:9;35410:327;35434:9;:16;;;;35430:1;:20;35410:327;;;35492:7;35476:23;;:9;35486:1;35476:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;35472:254:::1;;35535:9;35564:1;35545:9;:16;;;;:20;;;;:::i;:::-;35535:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35520:9;35530:1;35520:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35604:1;35585:7;:16;35593:7;35585:16;;;;;;;;;;;;;;;:20;;;;35647:5;35624:11;:20;35636:7;35624:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;35671:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;35705:5;;35472:254;35452:3;;;;;:::i;:::-;;;;35410:327;;;;35265:479:::0;:::o;32991:218::-;33079:4;33096:83;33105:12;:10;:12::i;:::-;33119:7;33128:50;33167:10;33128:11;:25;33140:12;:10;:12::i;:::-;33128:25;;;;;;;;;;;;;;;:34;33154:7;33128:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;33096:8;:83::i;:::-;33197:4;33190:11;;32991:218;;;;:::o;33717:378::-;33769:14;33786:12;:10;:12::i;:::-;33769:29;;33818:11;:19;33830:6;33818:19;;;;;;;;;;;;;;;;;;;;;;;;;33817:20;33809:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;33898:15;33923:19;33934:7;33923:10;:19::i;:::-;33897:45;;;;;;;;33971:28;33991:7;33971;:15;33979:6;33971:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33953:7;:15;33961:6;33953:15;;;;;;;;;;;;;;;:46;;;;34020:20;34032:7;34020;;:11;;:20;;;;:::i;:::-;34010:7;:30;;;;34064:23;34079:7;34064:10;;:14;;:23;;;;:::i;:::-;34051:10;:36;;;;33758:337;;33717:378;:::o;29823:30::-;;;;:::o;36463:111::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36562:4:::1;36532:18;:27;36551:7;36532:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;36463:111:::0;:::o;34103:438::-;34193:7;34232;;34221;:18;;34213:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34291:17;34286:248;;34326:15;34351:19;34362:7;34351:10;:19::i;:::-;34325:45;;;;;;;;34392:7;34385:14;;;;;34286:248;34434:23;34466:19;34477:7;34466:10;:19::i;:::-;34432:53;;;;;;;;34507:15;34500:22;;;34103:438;;;;;:::o;30075:38::-;;;:::o;30154:41::-;;;;;;;;;;;;;:::o;34810:447::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35007:11:::1;:20;35019:7;35007:20;;;;;;;;;;;;;;;;;;;;;;;;;35006:21;34998:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35092:1;35073:7;:16;35081:7;35073:16;;;;;;;;;;;;;;;;:20;35070:108;;;35129:37;35149:7;:16;35157:7;35149:16;;;;;;;;;;;;;;;;35129:19;:37::i;:::-;35110:7;:16;35118:7;35110:16;;;;;;;;;;;;;;;:56;;;;35070:108;35211:4;35188:11;:20;35200:7;35188:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;35226:9;35241:7;35226:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34810:447:::0;:::o;41610:133::-;41674:4;41698:18;:27;41717:7;41698:27;;;;;;;;;;;;;;;;;;;;;;;;;41691:34;;41610:133;;;:::o;29916:32::-;;;;:::o;31969:198::-;32035:7;32059:11;:20;32071:7;32059:20;;;;;;;;;;;;;;;;;;;;;;;;;32055:49;;;32088:7;:16;32096:7;32088:16;;;;;;;;;;;;;;;;32081:23;;;;32055:49;32122:37;32142:7;:16;32150:7;32142:16;;;;;;;;;;;;;;;;32122:19;:37::i;:::-;32115:44;;31969:198;;;;:::o;20377:148::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20484:1:::1;20447:40;;20468:6;::::0;::::1;;;;;;;;20447:40;;;;;;;;;;;;20515:1;20498:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;20377:148::o:0;30208:51::-;;;;:::o;33494:120::-;33562:4;33586:11;:20;33598:7;33586:20;;;;;;;;;;;;;;;;;;;;;;;;;33579:27;;33494:120;;;:::o;19726:87::-;19772:7;19799:6;;;;;;;;;;;19792:13;;19726:87;:::o;36970:122::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37072:12:::1;37056:13;:28;;;;36970:122:::0;:::o;31557:87::-;31596:13;31629:7;31622:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31557:87;:::o;33217:269::-;33310:4;33327:129;33336:12;:10;:12::i;:::-;33350:7;33359:96;33398:15;33359:96;;;;;;;;;;;;;;;;;:11;:25;33371:12;:10;:12::i;:::-;33359:25;;;;;;;;;;;;;;;:34;33385:7;33359:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;33327:8;:129::i;:::-;33474:4;33467:11;;33217:269;;;;:::o;32175:167::-;32253:4;32270:42;32280:12;:10;:12::i;:::-;32294:9;32305:6;32270:9;:42::i;:::-;32330:4;32323:11;;32175:167;;;;:::o;37222:171::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37323:8:::1;37299:21;;:32;;;;;;;;;;;;;;;;;;37347:38;37376:8;37347:38;;;;;;:::i;:::-;;;;;;;;37222:171:::0;:::o;32350:143::-;32431:7;32458:11;:18;32470:5;32458:18;;;;;;;;;;;;;;;:27;32477:7;32458:27;;;;;;;;;;;;;;;;32451:34;;32350:143;;;;:::o;36586:110::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36683:5:::1;36653:18;:27;36672:7;36653:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36586:110:::0;:::o;31844:117::-;31905:7;31932:21;;;;;;;;;;;31925:28;;31844:117;:::o;37103:111::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37195:11:::1;37180:12;:26;;;;37103:111:::0;:::o;20680:244::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20789:1:::1;20769:22;;:8;:22;;::::0;20761:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20879:8;20850:38;;20871:6;::::0;::::1;;;;;;;;20850:38;;;;;;;;;;;;20908:8;20899:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;20680:244:::0;:::o;36844:114::-;19957:12;:10;:12::i;:::-;19946:23;;:7;:5;:7::i;:::-;:23;;;19938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36940:10:::1;36926:11;:24;;;;36844:114:::0;:::o;10475:98::-;10528:7;10555:10;10548:17;;10475:98;:::o;41751:337::-;41861:1;41844:19;;:5;:19;;;41836:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41942:1;41923:21;;:7;:21;;;41915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42026:6;41996:11;:18;42008:5;41996:18;;;;;;;;;;;;;;;:27;42015:7;41996:27;;;;;;;;;;;;;;;:36;;;;42064:7;42048:32;;42057:5;42048:32;;;42073:6;42048:32;;;;;;:::i;:::-;;;;;;;;41751:337;;;:::o;42096:1813::-;42234:1;42218:18;;:4;:18;;;42210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42311:1;42297:16;;:2;:16;;;42289:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;42381:1;42372:6;:10;42364:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;42450:7;:5;:7::i;:::-;42442:15;;:4;:15;;;;:32;;;;;42467:7;:5;:7::i;:::-;42461:13;;:2;:13;;;;42442:32;42439:125;;;42507:12;;42497:6;:22;;42489:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;42439:125;42859:28;42890:24;42908:4;42890:9;:24::i;:::-;42859:55;;42962:12;;42938:20;:36;42935:112;;43023:12;;43000:35;;42935:112;43067:24;43118:29;;43094:20;:53;;43067:80;;43176:19;:53;;;;;43213:16;;;;;;;;;;;43212:17;43176:53;:91;;;;;43254:13;43246:21;;:4;:21;;;;43176:91;:129;;;;;43284:21;;;;;;;;;;;43176:129;43158:318;;;43355:29;;43332:52;;43428:36;43443:20;43428:14;:36::i;:::-;43158:318;43557:12;43572:4;43557:19;;43684:18;:24;43703:4;43684:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;43712:18;:22;43731:2;43712:22;;;;;;;;;;;;;;;;;;;;;;;;;43684:50;43681:96;;;43760:5;43750:15;;43681:96;43863:38;43878:4;43883:2;43886:6;43893:7;43863:14;:38::i;:::-;42199:1710;;;42096:1813;;;:::o;7925:206::-;8011:7;8069:1;8064;:6;;8072:12;8056:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8111:1;8107;:5;8100:12;;7925:206;;;;;:::o;39081:163::-;39122:7;39143:15;39160;39179:19;:17;:19::i;:::-;39142:56;;;;39216:20;39228:7;39216;:11;;:20;;;;:::i;:::-;39209:27;;;;39081:163;:::o;6783:98::-;6841:7;6872:1;6868;:5;;;;:::i;:::-;6861:12;;6783:98;;;;:::o;5646:::-;5704:7;5735:1;5731;:5;;;;:::i;:::-;5724:12;;5646:98;;;;:::o;37654:466::-;37713:7;37722;37731;37740;37749;37758;37767;37788:23;37813:12;37827:18;37847:16;37867:20;37879:7;37867:11;:20::i;:::-;37787:100;;;;;;;;37899:15;37916:23;37941:12;37957:60;37969:7;37978:4;37984:10;37996:8;38006:10;:8;:10::i;:::-;37957:11;:60::i;:::-;37898:119;;;;;;38036:7;38045:15;38062:4;38068:15;38085:4;38091:10;38103:8;38028:84;;;;;;;;;;;;;;;;;;;;;37654:466;;;;;;;;;:::o;6027:98::-;6085:7;6116:1;6112;:5;;;;:::i;:::-;6105:12;;6027:98;;;;:::o;43917:985::-;30654:4;30635:16;;:23;;;;;;;;;;;;;;;;;;44053:12:::1;44068:27;44093:1;44068:20;:24;;:27;;;;:::i;:::-;44053:42;;44106:17;44126:30;44151:4;44126:20;:24;;:30;;;;:::i;:::-;44106:50;;44434:22;44459:21;44434:46;;44525:22;44542:4;44525:16;:22::i;:::-;44678:18;44699:41;44725:14;44699:21;:25;;:41;;;;:::i;:::-;44678:62;;44790:35;44803:9;44814:10;44790:12;:35::i;:::-;44851:43;44866:4;44872:10;44884:9;44851:43;;;;;;;;:::i;:::-;;;;;;;;43991:911;;;;30700:5:::0;30681:16;;:24;;;;;;;;;;;;;;;;;;43917:985;:::o;46101:834::-;46212:7;46208:40;;46234:14;:12;:14::i;:::-;46208:40;46273:11;:19;46285:6;46273:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;46297:11;:22;46309:9;46297:22;;;;;;;;;;;;;;;;;;;;;;;;;46296:23;46273:46;46269:597;;;46336:48;46358:6;46366:9;46377:6;46336:21;:48::i;:::-;46269:597;;;46407:11;:19;46419:6;46407:19;;;;;;;;;;;;;;;;;;;;;;;;;46406:20;:46;;;;;46430:11;:22;46442:9;46430:22;;;;;;;;;;;;;;;;;;;;;;;;;46406:46;46402:464;;;46469:46;46489:6;46497:9;46508:6;46469:19;:46::i;:::-;46402:464;;;46538:11;:19;46550:6;46538:19;;;;;;;;;;;;;;;;;;;;;;;;;46537:20;:47;;;;;46562:11;:22;46574:9;46562:22;;;;;;;;;;;;;;;;;;;;;;;;;46561:23;46537:47;46533:333;;;46601:44;46619:6;46627:9;46638:6;46601:17;:44::i;:::-;46533:333;;;46667:11;:19;46679:6;46667:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;46690:11;:22;46702:9;46690:22;;;;;;;;;;;;;;;;;;;;;;;;;46667:45;46663:203;;;46729:48;46751:6;46759:9;46770:6;46729:21;:48::i;:::-;46663:203;;;46810:44;46828:6;46836:9;46847:6;46810:17;:44::i;:::-;46663:203;46533:333;46402:464;46269:597;46890:7;46886:41;;46912:15;:13;:15::i;:::-;46886:41;46101:834;;;;:::o;39252:561::-;39302:7;39311;39331:15;39349:7;;39331:25;;39367:15;39385:7;;39367:25;;39414:9;39409:289;39433:9;:16;;;;39429:1;:20;39409:289;;;39499:7;39475;:21;39483:9;39493:1;39483:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39475:21;;;;;;;;;;;;;;;;:31;:66;;;;39534:7;39510;:21;39518:9;39528:1;39518:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39510:21;;;;;;;;;;;;;;;;:31;39475:66;39471:97;;;39551:7;;39560;;39543:25;;;;;;;;;39471:97;39593:34;39605:7;:21;39613:9;39623:1;39613:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39605:21;;;;;;;;;;;;;;;;39593:7;:11;;:34;;;;:::i;:::-;39583:44;;39652:34;39664:7;:21;39672:9;39682:1;39672:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39664:21;;;;;;;;;;;;;;;;39652:7;:11;;:34;;;;:::i;:::-;39642:44;;39451:3;;;;;:::i;:::-;;;;39409:289;;;;39722:20;39734:7;;39722;;:11;;:20;;;;:::i;:::-;39712:7;:30;39708:61;;;39752:7;;39761;;39744:25;;;;;;;;39708:61;39788:7;39797;39780:25;;;;;;39252:561;;;:::o;38128:421::-;38188:7;38197;38206;38215;38235:12;38250:24;38266:7;38250:15;:24::i;:::-;38235:39;;38285:18;38306:30;38328:7;38306:21;:30::i;:::-;38285:51;;38347:16;38366:28;38386:7;38366:19;:28::i;:::-;38347:47;;38405:23;38431:47;38469:8;38431:33;38453:10;38431:17;38443:4;38431:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;38405:73;;38497:15;38514:4;38520:10;38532:8;38489:52;;;;;;;;;;;;38128:421;;;;;:::o;38557:516::-;38690:7;38699;38708;38728:15;38746:24;38758:11;38746:7;:11;;:24;;;;:::i;:::-;38728:42;;38781:12;38796:21;38805:11;38796:4;:8;;:21;;;;:::i;:::-;38781:36;;38828:18;38849:27;38864:11;38849:10;:14;;:27;;;;:::i;:::-;38828:48;;38887:16;38906:25;38919:11;38906:8;:12;;:25;;;;:::i;:::-;38887:44;;38942:23;38968:47;39006:8;38968:33;38990:10;38968:17;38980:4;38968:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;38942:73;;39034:7;39043:15;39060:4;39026:39;;;;;;;;;;;38557:516;;;;;;;;;:::o;44910:589::-;45036:21;45074:1;45060:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45036:40;;45105:4;45087;45092:1;45087:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;45131:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45121:4;45126:1;45121:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;45166:62;45183:4;45198:15;45216:11;45166:8;:62::i;:::-;45267:15;:66;;;45348:11;45374:1;45418:4;45445;45465:15;45267:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44965:534;44910:589;:::o;45507:513::-;45655:62;45672:4;45687:15;45705:11;45655:8;:62::i;:::-;45760:15;:31;;;45799:9;45832:4;45852:11;45878:1;45921;45964:7;:5;:7::i;:::-;45986:15;45760:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45507:513;;:::o;41097:320::-;41154:1;41143:7;;:12;:34;;;;;41176:1;41159:13;;:18;41143:34;41179:7;41140:46;41224:7;;41206:15;:25;;;;41264:11;;41242:19;:33;;;;41310:13;;41286:21;:37;;;;41354:1;41344:7;:11;;;;41380:1;41366:11;:15;;;;41408:1;41392:13;:17;;;;41097:320;:::o;48149:617::-;48252:15;48269:23;48294:12;48308:23;48333:12;48347:18;48367:16;48387:19;48398:7;48387:10;:19::i;:::-;48251:155;;;;;;;;;;;;;;48435:28;48455:7;48435;:15;48443:6;48435:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;48417:7;:15;48425:6;48417:15;;;;;;;;;;;;;;;:46;;;;48492:28;48512:7;48492;:15;48500:6;48492:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;48474:7;:15;48482:6;48474:15;;;;;;;;;;;;;;;:46;;;;48552:39;48575:15;48552:7;:18;48560:9;48552:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;48531:7;:18;48539:9;48531:18;;;;;;;;;;;;;;;:60;;;;48605:26;48620:10;48605:14;:26::i;:::-;48642:22;48655:8;48642:12;:22::i;:::-;48675:23;48687:4;48693;48675:11;:23::i;:::-;48731:9;48714:44;;48723:6;48714:44;;;48742:15;48714:44;;;;;;:::i;:::-;;;;;;;;48240:526;;;;;;;48149:617;;;:::o;47504:637::-;47605:15;47622:23;47647:12;47661:23;47686:12;47700:18;47720:16;47740:19;47751:7;47740:10;:19::i;:::-;47604:155;;;;;;;;;;;;;;47788:28;47808:7;47788;:15;47796:6;47788:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;47770:7;:15;47778:6;47770:15;;;;;;;;;;;;;;;:46;;;;47848:39;47871:15;47848:7;:18;47856:9;47848:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;47827:7;:18;47835:9;47827:18;;;;;;;;;;;;;;;:60;;;;47919:39;47942:15;47919:7;:18;47927:9;47919:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;47898:7;:18;47906:9;47898:18;;;;;;;;;;;;;;;:60;;;;47980:26;47995:10;47980:14;:26::i;:::-;48017:22;48030:8;48017:12;:22::i;:::-;48050:23;48062:4;48068;48050:11;:23::i;:::-;48106:9;48089:44;;48098:6;48089:44;;;48117:15;48089:44;;;;;;:::i;:::-;;;;;;;;47593:548;;;;;;;47504:637;;;:::o;46943:553::-;47042:15;47059:23;47084:12;47098:23;47123:12;47137:18;47157:16;47177:19;47188:7;47177:10;:19::i;:::-;47041:155;;;;;;;;;;;;;;47225:28;47245:7;47225;:15;47233:6;47225:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;47207:7;:15;47215:6;47207:15;;;;;;;;;;;;;;;:46;;;;47285:39;47308:15;47285:7;:18;47293:9;47285:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;47264:7;:18;47272:9;47264:18;;;;;;;;;;;;;;;:60;;;;47335:26;47350:10;47335:14;:26::i;:::-;47372:22;47385:8;47372:12;:22::i;:::-;47405:23;47417:4;47423;47405:11;:23::i;:::-;47461:9;47444:44;;47453:6;47444:44;;;47472:15;47444:44;;;;;;:::i;:::-;;;;;;;;47030:466;;;;;;;46943:553;;;:::o;35754:693::-;35857:15;35874:23;35899:12;35913:23;35938:12;35952:18;35972:16;35992:19;36003:7;35992:10;:19::i;:::-;35856:155;;;;;;;;;;;;;;36040:28;36060:7;36040;:15;36048:6;36040:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36022:7;:15;36030:6;36022:15;;;;;;;;;;;;;;;:46;;;;36097:28;36117:7;36097;:15;36105:6;36097:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36079:7;:15;36087:6;36079:15;;;;;;;;;;;;;;;:46;;;;36157:39;36180:15;36157:7;:18;36165:9;36157:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36136:7;:18;36144:9;36136:18;;;;;;;;;;;;;;;:60;;;;36228:39;36251:15;36228:7;:18;36236:9;36228:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36207:7;:18;36215:9;36207:18;;;;;;;;;;;;;;;:60;;;;36286:26;36301:10;36286:14;:26::i;:::-;36323:22;36336:8;36323:12;:22::i;:::-;36356:23;36368:4;36374;36356:11;:23::i;:::-;36412:9;36395:44;;36404:6;36395:44;;;36423:15;36395:44;;;;;;:::i;:::-;;;;;;;;35845:602;;;;;;;35754:693;;;:::o;41429:169::-;41483:15;;41473:7;:25;;;;41523:19;;41509:11;:33;;;;41569:21;;41553:13;:37;;;;41429:169::o;40587:154::-;40651:7;40678:55;40717:5;40678:20;40690:7;;40678;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;40671:62;;40587:154;;;:::o;40919:166::-;40989:7;41016:61;41061:5;41016:26;41028:13;;41016:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;41009:68;;40919:166;;;:::o;40749:162::-;40817:7;40844:59;40887:5;40844:24;40856:11;;40844:7;:11;;:24;;;;:::i;:::-;:28;;:59;;;;:::i;:::-;40837:66;;40749:162;;;:::o;6384:98::-;6442:7;6473:1;6469;:5;;;;:::i;:::-;6462:12;;6384:98;;;;:::o;39825:355::-;39888:19;39911:10;:8;:10::i;:::-;39888:33;;39932:18;39953:27;39968:11;39953:10;:14;;:27;;;;:::i;:::-;39932:48;;40016:38;40043:10;40016:7;:22;40032:4;40016:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;39991:7;:22;40007:4;39991:22;;;;;;;;;;;;;;;:63;;;;40068:11;:26;40088:4;40068:26;;;;;;;;;;;;;;;;;;;;;;;;;40065:107;;;40134:38;40161:10;40134:7;:22;40150:4;40134:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;40109:7;:22;40125:4;40109:22;;;;;;;;;;;;;;;:63;;;;40065:107;39877:303;;39825:355;:::o;40192:383::-;40251:19;40274:10;:8;:10::i;:::-;40251:33;;40295:16;40314:25;40327:11;40314:8;:12;;:25;;;;:::i;:::-;40295:44;;40383;40418:8;40383:7;:30;40391:21;;;;;;;;;;;40383:30;;;;;;;;;;;;;;;;:34;;:44;;;;:::i;:::-;40350:7;:30;40358:21;;;;;;;;;;;40350:30;;;;;;;;;;;;;;;:77;;;;40441:11;:34;40453:21;;;;;;;;;;;40441:34;;;;;;;;;;;;;;;;;;;;;;;;;40438:129;;;40523:44;40558:8;40523:7;:30;40531:21;;;;;;;;;;;40523:30;;;;;;;;;;;;;;;;:34;;:44;;;;:::i;:::-;40490:7;:30;40498:21;;;;;;;;;;;40490:30;;;;;;;;;;;;;;;:77;;;;40438:129;40240:335;;40192:383;:::o;37499:147::-;37577:17;37589:4;37577:7;;:11;;:17;;;;:::i;:::-;37567:7;:27;;;;37618:20;37633:4;37618:10;;:14;;:20;;;;:::i;:::-;37605:10;:33;;;;37499:147;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:104::-;1901:7;1930:24;1948:5;1930:24;:::i;:::-;1919:35;;1856:104;;;:::o;1966:138::-;2047:32;2073:5;2047:32;:::i;:::-;2040:5;2037:43;2027:71;;2094:1;2091;2084:12;2027:71;1966:138;:::o;2110:155::-;2164:5;2202:6;2189:20;2180:29;;2218:41;2253:5;2218:41;:::i;:::-;2110:155;;;;:::o;2271:345::-;2338:6;2387:2;2375:9;2366:7;2362:23;2358:32;2355:119;;;2393:79;;:::i;:::-;2355:119;2513:1;2538:61;2591:7;2582:6;2571:9;2567:22;2538:61;:::i;:::-;2528:71;;2484:125;2271:345;;;;:::o;2622:96::-;2659:7;2688:24;2706:5;2688:24;:::i;:::-;2677:35;;2622:96;;;:::o;2724:122::-;2797:24;2815:5;2797:24;:::i;:::-;2790:5;2787:35;2777:63;;2836:1;2833;2826:12;2777:63;2724:122;:::o;2852:139::-;2898:5;2936:6;2923:20;2914:29;;2952:33;2979:5;2952:33;:::i;:::-;2852:139;;;;:::o;2997:77::-;3034:7;3063:5;3052:16;;2997:77;;;:::o;3080:122::-;3153:24;3171:5;3153:24;:::i;:::-;3146:5;3143:35;3133:63;;3192:1;3189;3182:12;3133:63;3080:122;:::o;3208:139::-;3254:5;3292:6;3279:20;3270:29;;3308:33;3335:5;3308:33;:::i;:::-;3208:139;;;;:::o;3353:474::-;3421:6;3429;3478:2;3466:9;3457:7;3453:23;3449:32;3446:119;;;3484:79;;:::i;:::-;3446:119;3604:1;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3575:117;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3353:474;;;;;:::o;3833:90::-;3867:7;3910:5;3903:13;3896:21;3885:32;;3833:90;;;:::o;3929:109::-;4010:21;4025:5;4010:21;:::i;:::-;4005:3;3998:34;3929:109;;:::o;4044:210::-;4131:4;4169:2;4158:9;4154:18;4146:26;;4182:65;4244:1;4233:9;4229:17;4220:6;4182:65;:::i;:::-;4044:210;;;;:::o;4260:118::-;4347:24;4365:5;4347:24;:::i;:::-;4342:3;4335:37;4260:118;;:::o;4384:222::-;4477:4;4515:2;4504:9;4500:18;4492:26;;4528:71;4596:1;4585:9;4581:17;4572:6;4528:71;:::i;:::-;4384:222;;;;:::o;4612:60::-;4640:3;4661:5;4654:12;;4612:60;;;:::o;4678:142::-;4728:9;4761:53;4779:34;4788:24;4806:5;4788:24;:::i;:::-;4779:34;:::i;:::-;4761:53;:::i;:::-;4748:66;;4678:142;;;:::o;4826:126::-;4876:9;4909:37;4940:5;4909:37;:::i;:::-;4896:50;;4826:126;;;:::o;4958:153::-;5035:9;5068:37;5099:5;5068:37;:::i;:::-;5055:50;;4958:153;;;:::o;5117:185::-;5231:64;5289:5;5231:64;:::i;:::-;5226:3;5219:77;5117:185;;:::o;5308:276::-;5428:4;5466:2;5455:9;5451:18;5443:26;;5479:98;5574:1;5563:9;5559:17;5550:6;5479:98;:::i;:::-;5308:276;;;;:::o;5590:619::-;5667:6;5675;5683;5732:2;5720:9;5711:7;5707:23;5703:32;5700:119;;;5738:79;;:::i;:::-;5700:119;5858:1;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5829:117;5985:2;6011:53;6056:7;6047:6;6036:9;6032:22;6011:53;:::i;:::-;6001:63;;5956:118;6113:2;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6084:118;5590:619;;;;;:::o;6215:329::-;6274:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:119;;;6329:79;;:::i;:::-;6291:119;6449:1;6474:53;6519:7;6510:6;6499:9;6495:22;6474:53;:::i;:::-;6464:63;;6420:117;6215:329;;;;:::o;6550:86::-;6585:7;6625:4;6618:5;6614:16;6603:27;;6550:86;;;:::o;6642:112::-;6725:22;6741:5;6725:22;:::i;:::-;6720:3;6713:35;6642:112;;:::o;6760:214::-;6849:4;6887:2;6876:9;6872:18;6864:26;;6900:67;6964:1;6953:9;6949:17;6940:6;6900:67;:::i;:::-;6760:214;;;;:::o;6980:329::-;7039:6;7088:2;7076:9;7067:7;7063:23;7059:32;7056:119;;;7094:79;;:::i;:::-;7056:119;7214:1;7239:53;7284:7;7275:6;7264:9;7260:22;7239:53;:::i;:::-;7229:63;;7185:117;6980:329;;;;:::o;7315:116::-;7385:21;7400:5;7385:21;:::i;:::-;7378:5;7375:32;7365:60;;7421:1;7418;7411:12;7365:60;7315:116;:::o;7437:133::-;7480:5;7518:6;7505:20;7496:29;;7534:30;7558:5;7534:30;:::i;:::-;7437:133;;;;:::o;7576:468::-;7641:6;7649;7698:2;7686:9;7677:7;7673:23;7669:32;7666:119;;;7704:79;;:::i;:::-;7666:119;7824:1;7849:53;7894:7;7885:6;7874:9;7870:22;7849:53;:::i;:::-;7839:63;;7795:117;7951:2;7977:50;8019:7;8010:6;7999:9;7995:22;7977:50;:::i;:::-;7967:60;;7922:115;7576:468;;;;;:::o;8050:118::-;8137:24;8155:5;8137:24;:::i;:::-;8132:3;8125:37;8050:118;;:::o;8174:222::-;8267:4;8305:2;8294:9;8290:18;8282:26;;8318:71;8386:1;8375:9;8371:17;8362:6;8318:71;:::i;:::-;8174:222;;;;:::o;8402:323::-;8458:6;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:50;8700:7;8691:6;8680:9;8676:22;8658:50;:::i;:::-;8648:60;;8604:114;8402:323;;;;:::o;8731:474::-;8799:6;8807;8856:2;8844:9;8835:7;8831:23;8827:32;8824:119;;;8862:79;;:::i;:::-;8824:119;8982:1;9007:53;9052:7;9043:6;9032:9;9028:22;9007:53;:::i;:::-;8997:63;;8953:117;9109:2;9135:53;9180:7;9171:6;9160:9;9156:22;9135:53;:::i;:::-;9125:63;;9080:118;8731:474;;;;;:::o;9211:180::-;9259:77;9256:1;9249:88;9356:4;9353:1;9346:15;9380:4;9377:1;9370:15;9397:320;9441:6;9478:1;9472:4;9468:12;9458:22;;9525:1;9519:4;9515:12;9546:18;9536:81;;9602:4;9594:6;9590:17;9580:27;;9536:81;9664:2;9656:6;9653:14;9633:18;9630:38;9627:84;;9683:18;;:::i;:::-;9627:84;9448:269;9397:320;;;:::o;9723:182::-;9863:34;9859:1;9851:6;9847:14;9840:58;9723:182;:::o;9911:366::-;10053:3;10074:67;10138:2;10133:3;10074:67;:::i;:::-;10067:74;;10150:93;10239:3;10150:93;:::i;:::-;10268:2;10263:3;10259:12;10252:19;;9911:366;;;:::o;10283:419::-;10449:4;10487:2;10476:9;10472:18;10464:26;;10536:9;10530:4;10526:20;10522:1;10511:9;10507:17;10500:47;10564:131;10690:4;10564:131;:::i;:::-;10556:139;;10283:419;;;:::o;10708:229::-;10848:34;10844:1;10836:6;10832:14;10825:58;10917:12;10912:2;10904:6;10900:15;10893:37;10708:229;:::o;10943:366::-;11085:3;11106:67;11170:2;11165:3;11106:67;:::i;:::-;11099:74;;11182:93;11271:3;11182:93;:::i;:::-;11300:2;11295:3;11291:12;11284:19;;10943:366;;;:::o;11315:419::-;11481:4;11519:2;11508:9;11504:18;11496:26;;11568:9;11562:4;11558:20;11554:1;11543:9;11539:17;11532:47;11596:131;11722:4;11596:131;:::i;:::-;11588:139;;11315:419;;;:::o;11740:177::-;11880:29;11876:1;11868:6;11864:14;11857:53;11740:177;:::o;11923:366::-;12065:3;12086:67;12150:2;12145:3;12086:67;:::i;:::-;12079:74;;12162:93;12251:3;12162:93;:::i;:::-;12280:2;12275:3;12271:12;12264:19;;11923:366;;;:::o;12295:419::-;12461:4;12499:2;12488:9;12484:18;12476:26;;12548:9;12542:4;12538:20;12534:1;12523:9;12519:17;12512:47;12576:131;12702:4;12576:131;:::i;:::-;12568:139;;12295:419;;;:::o;12720:180::-;12768:77;12765:1;12758:88;12865:4;12862:1;12855:15;12889:4;12886:1;12879:15;12906:180;12954:77;12951:1;12944:88;13051:4;13048:1;13041:15;13075:4;13072:1;13065:15;13092:191;13132:4;13152:20;13170:1;13152:20;:::i;:::-;13147:25;;13186:20;13204:1;13186:20;:::i;:::-;13181:25;;13225:1;13222;13219:8;13216:34;;;13230:18;;:::i;:::-;13216:34;13275:1;13272;13268:9;13260:17;;13092:191;;;;:::o;13289:180::-;13337:77;13334:1;13327:88;13434:4;13431:1;13424:15;13458:4;13455:1;13448:15;13475:233;13514:3;13537:24;13555:5;13537:24;:::i;:::-;13528:33;;13583:66;13576:5;13573:77;13570:103;;13653:18;;:::i;:::-;13570:103;13700:1;13693:5;13689:13;13682:20;;13475:233;;;:::o;13714:231::-;13854:34;13850:1;13842:6;13838:14;13831:58;13923:14;13918:2;13910:6;13906:15;13899:39;13714:231;:::o;13951:366::-;14093:3;14114:67;14178:2;14173:3;14114:67;:::i;:::-;14107:74;;14190:93;14279:3;14190:93;:::i;:::-;14308:2;14303:3;14299:12;14292:19;;13951:366;;;:::o;14323:419::-;14489:4;14527:2;14516:9;14512:18;14504:26;;14576:9;14570:4;14566:20;14562:1;14551:9;14547:17;14540:47;14604:131;14730:4;14604:131;:::i;:::-;14596:139;;14323:419;;;:::o;14748:181::-;14888:33;14884:1;14876:6;14872:14;14865:57;14748:181;:::o;14935:366::-;15077:3;15098:67;15162:2;15157:3;15098:67;:::i;:::-;15091:74;;15174:93;15263:3;15174:93;:::i;:::-;15292:2;15287:3;15283:12;15276:19;;14935:366;;;:::o;15307:419::-;15473:4;15511:2;15500:9;15496:18;15488:26;;15560:9;15554:4;15550:20;15546:1;15535:9;15531:17;15524:47;15588:131;15714:4;15588:131;:::i;:::-;15580:139;;15307:419;;;:::o;15732:177::-;15872:29;15868:1;15860:6;15856:14;15849:53;15732:177;:::o;15915:366::-;16057:3;16078:67;16142:2;16137:3;16078:67;:::i;:::-;16071:74;;16154:93;16243:3;16154:93;:::i;:::-;16272:2;16267:3;16263:12;16256:19;;15915:366;;;:::o;16287:419::-;16453:4;16491:2;16480:9;16476:18;16468:26;;16540:9;16534:4;16530:20;16526:1;16515:9;16511:17;16504:47;16568:131;16694:4;16568:131;:::i;:::-;16560:139;;16287:419;;;:::o;16712:225::-;16852:34;16848:1;16840:6;16836:14;16829:58;16921:8;16916:2;16908:6;16904:15;16897:33;16712:225;:::o;16943:366::-;17085:3;17106:67;17170:2;17165:3;17106:67;:::i;:::-;17099:74;;17182:93;17271:3;17182:93;:::i;:::-;17300:2;17295:3;17291:12;17284:19;;16943:366;;;:::o;17315:419::-;17481:4;17519:2;17508:9;17504:18;17496:26;;17568:9;17562:4;17558:20;17554:1;17543:9;17539:17;17532:47;17596:131;17722:4;17596:131;:::i;:::-;17588:139;;17315:419;;;:::o;17740:223::-;17880:34;17876:1;17868:6;17864:14;17857:58;17949:6;17944:2;17936:6;17932:15;17925:31;17740:223;:::o;17969:366::-;18111:3;18132:67;18196:2;18191:3;18132:67;:::i;:::-;18125:74;;18208:93;18297:3;18208:93;:::i;:::-;18326:2;18321:3;18317:12;18310:19;;17969:366;;;:::o;18341:419::-;18507:4;18545:2;18534:9;18530:18;18522:26;;18594:9;18588:4;18584:20;18580:1;18569:9;18565:17;18558:47;18622:131;18748:4;18622:131;:::i;:::-;18614:139;;18341:419;;;:::o;18766:221::-;18906:34;18902:1;18894:6;18890:14;18883:58;18975:4;18970:2;18962:6;18958:15;18951:29;18766:221;:::o;18993:366::-;19135:3;19156:67;19220:2;19215:3;19156:67;:::i;:::-;19149:74;;19232:93;19321:3;19232:93;:::i;:::-;19350:2;19345:3;19341:12;19334:19;;18993:366;;;:::o;19365:419::-;19531:4;19569:2;19558:9;19554:18;19546:26;;19618:9;19612:4;19608:20;19604:1;19593:9;19589:17;19582:47;19646:131;19772:4;19646:131;:::i;:::-;19638:139;;19365:419;;;:::o;19790:224::-;19930:34;19926:1;19918:6;19914:14;19907:58;19999:7;19994:2;19986:6;19982:15;19975:32;19790:224;:::o;20020:366::-;20162:3;20183:67;20247:2;20242:3;20183:67;:::i;:::-;20176:74;;20259:93;20348:3;20259:93;:::i;:::-;20377:2;20372:3;20368:12;20361:19;;20020:366;;;:::o;20392:419::-;20558:4;20596:2;20585:9;20581:18;20573:26;;20645:9;20639:4;20635:20;20631:1;20620:9;20616:17;20609:47;20673:131;20799:4;20673:131;:::i;:::-;20665:139;;20392:419;;;:::o;20817:222::-;20957:34;20953:1;20945:6;20941:14;20934:58;21026:5;21021:2;21013:6;21009:15;21002:30;20817:222;:::o;21045:366::-;21187:3;21208:67;21272:2;21267:3;21208:67;:::i;:::-;21201:74;;21284:93;21373:3;21284:93;:::i;:::-;21402:2;21397:3;21393:12;21386:19;;21045:366;;;:::o;21417:419::-;21583:4;21621:2;21610:9;21606:18;21598:26;;21670:9;21664:4;21660:20;21656:1;21645:9;21641:17;21634:47;21698:131;21824:4;21698:131;:::i;:::-;21690:139;;21417:419;;;:::o;21842:228::-;21982:34;21978:1;21970:6;21966:14;21959:58;22051:11;22046:2;22038:6;22034:15;22027:36;21842:228;:::o;22076:366::-;22218:3;22239:67;22303:2;22298:3;22239:67;:::i;:::-;22232:74;;22315:93;22404:3;22315:93;:::i;:::-;22433:2;22428:3;22424:12;22417:19;;22076:366;;;:::o;22448:419::-;22614:4;22652:2;22641:9;22637:18;22629:26;;22701:9;22695:4;22691:20;22687:1;22676:9;22672:17;22665:47;22729:131;22855:4;22729:131;:::i;:::-;22721:139;;22448:419;;;:::o;22873:227::-;23013:34;23009:1;23001:6;22997:14;22990:58;23082:10;23077:2;23069:6;23065:15;23058:35;22873:227;:::o;23106:366::-;23248:3;23269:67;23333:2;23328:3;23269:67;:::i;:::-;23262:74;;23345:93;23434:3;23345:93;:::i;:::-;23463:2;23458:3;23454:12;23447:19;;23106:366;;;:::o;23478:419::-;23644:4;23682:2;23671:9;23667:18;23659:26;;23731:9;23725:4;23721:20;23717:1;23706:9;23702:17;23695:47;23759:131;23885:4;23759:131;:::i;:::-;23751:139;;23478:419;;;:::o;23903:180::-;23951:77;23948:1;23941:88;24048:4;24045:1;24038:15;24072:4;24069:1;24062:15;24089:185;24129:1;24146:20;24164:1;24146:20;:::i;:::-;24141:25;;24180:20;24198:1;24180:20;:::i;:::-;24175:25;;24219:1;24209:35;;24224:18;;:::i;:::-;24209:35;24266:1;24263;24259:9;24254:14;;24089:185;;;;:::o;24280:305::-;24320:3;24339:20;24357:1;24339:20;:::i;:::-;24334:25;;24373:20;24391:1;24373:20;:::i;:::-;24368:25;;24527:1;24459:66;24455:74;24452:1;24449:81;24446:107;;;24533:18;;:::i;:::-;24446:107;24577:1;24574;24570:9;24563:16;;24280:305;;;;:::o;24591:442::-;24740:4;24778:2;24767:9;24763:18;24755:26;;24791:71;24859:1;24848:9;24844:17;24835:6;24791:71;:::i;:::-;24872:72;24940:2;24929:9;24925:18;24916:6;24872:72;:::i;:::-;24954;25022:2;25011:9;25007:18;24998:6;24954:72;:::i;:::-;24591:442;;;;;;:::o;25039:180::-;25087:77;25084:1;25077:88;25184:4;25181:1;25174:15;25208:4;25205:1;25198:15;25225:143;25282:5;25313:6;25307:13;25298:22;;25329:33;25356:5;25329:33;:::i;:::-;25225:143;;;;:::o;25374:351::-;25444:6;25493:2;25481:9;25472:7;25468:23;25464:32;25461:119;;;25499:79;;:::i;:::-;25461:119;25619:1;25644:64;25700:7;25691:6;25680:9;25676:22;25644:64;:::i;:::-;25634:74;;25590:128;25374:351;;;;:::o;25731:85::-;25776:7;25805:5;25794:16;;25731:85;;;:::o;25822:158::-;25880:9;25913:61;25931:42;25940:32;25966:5;25940:32;:::i;:::-;25931:42;:::i;:::-;25913:61;:::i;:::-;25900:74;;25822:158;;;:::o;25986:147::-;26081:45;26120:5;26081:45;:::i;:::-;26076:3;26069:58;25986:147;;:::o;26139:114::-;26206:6;26240:5;26234:12;26224:22;;26139:114;;;:::o;26259:184::-;26358:11;26392:6;26387:3;26380:19;26432:4;26427:3;26423:14;26408:29;;26259:184;;;;:::o;26449:132::-;26516:4;26539:3;26531:11;;26569:4;26564:3;26560:14;26552:22;;26449:132;;;:::o;26587:108::-;26664:24;26682:5;26664:24;:::i;:::-;26659:3;26652:37;26587:108;;:::o;26701:179::-;26770:10;26791:46;26833:3;26825:6;26791:46;:::i;:::-;26869:4;26864:3;26860:14;26846:28;;26701:179;;;;:::o;26886:113::-;26956:4;26988;26983:3;26979:14;26971:22;;26886:113;;;:::o;27035:732::-;27154:3;27183:54;27231:5;27183:54;:::i;:::-;27253:86;27332:6;27327:3;27253:86;:::i;:::-;27246:93;;27363:56;27413:5;27363:56;:::i;:::-;27442:7;27473:1;27458:284;27483:6;27480:1;27477:13;27458:284;;;27559:6;27553:13;27586:63;27645:3;27630:13;27586:63;:::i;:::-;27579:70;;27672:60;27725:6;27672:60;:::i;:::-;27662:70;;27518:224;27505:1;27502;27498:9;27493:14;;27458:284;;;27462:14;27758:3;27751:10;;27159:608;;;27035:732;;;;:::o;27773:831::-;28036:4;28074:3;28063:9;28059:19;28051:27;;28088:71;28156:1;28145:9;28141:17;28132:6;28088:71;:::i;:::-;28169:80;28245:2;28234:9;28230:18;28221:6;28169:80;:::i;:::-;28296:9;28290:4;28286:20;28281:2;28270:9;28266:18;28259:48;28324:108;28427:4;28418:6;28324:108;:::i;:::-;28316:116;;28442:72;28510:2;28499:9;28495:18;28486:6;28442:72;:::i;:::-;28524:73;28592:3;28581:9;28577:19;28568:6;28524:73;:::i;:::-;27773:831;;;;;;;;:::o;28610:807::-;28859:4;28897:3;28886:9;28882:19;28874:27;;28911:71;28979:1;28968:9;28964:17;28955:6;28911:71;:::i;:::-;28992:72;29060:2;29049:9;29045:18;29036:6;28992:72;:::i;:::-;29074:80;29150:2;29139:9;29135:18;29126:6;29074:80;:::i;:::-;29164;29240:2;29229:9;29225:18;29216:6;29164:80;:::i;:::-;29254:73;29322:3;29311:9;29307:19;29298:6;29254:73;:::i;:::-;29337;29405:3;29394:9;29390:19;29381:6;29337:73;:::i;:::-;28610:807;;;;;;;;;:::o;29423:143::-;29480:5;29511:6;29505:13;29496:22;;29527:33;29554:5;29527:33;:::i;:::-;29423:143;;;;:::o;29572:663::-;29660:6;29668;29676;29725:2;29713:9;29704:7;29700:23;29696:32;29693:119;;;29731:79;;:::i;:::-;29693:119;29851:1;29876:64;29932:7;29923:6;29912:9;29908:22;29876:64;:::i;:::-;29866:74;;29822:128;29989:2;30015:64;30071:7;30062:6;30051:9;30047:22;30015:64;:::i;:::-;30005:74;;29960:129;30128:2;30154:64;30210:7;30201:6;30190:9;30186:22;30154:64;:::i;:::-;30144:74;;30099:129;29572:663;;;;;:::o;30241:348::-;30281:7;30304:20;30322:1;30304:20;:::i;:::-;30299:25;;30338:20;30356:1;30338:20;:::i;:::-;30333:25;;30526:1;30458:66;30454:74;30451:1;30448:81;30443:1;30436:9;30429:17;30425:105;30422:131;;;30533:18;;:::i;:::-;30422:131;30581:1;30578;30574:9;30563:20;;30241:348;;;;:::o
Swarm Source
ipfs://109989d7191fcb966c1f6084b3c593614e7cce098b2a7c39c3f9b67cd420bf2d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.