ERC-20
Overview
Max Total Supply
100,000,000 WAM
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,607,962.263932807 WAMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WeAreMany
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-01 */ /** *Submitted for verification at cronoscan.com on 2022-03-27 */ // SPDX-License-Identifier: MIT /** * @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); } // Dependency file: @openzeppelin/contracts/utils/Context.sol // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // 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. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; 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"); (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"); (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"); (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"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity =0.8.13; contract WeAreMany is 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; mapping(address => bool) private _isBlackedlisted; address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23; address[] private _excluded; address payable public crommunityAddress; address payable public developmentAddress; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _crommunityFee; uint256 private _previouscrommunityFee = _crommunityFee; uint256 public _developmentFee; uint256 private _previousDevelopmentFee = _developmentFee; uint256 public _totalTaxes; uint256 private _previousTotalTaxes = _totalTaxes; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 public numTokensSellToAddToLiquidity; uint256 private _launchTime; uint256 private _launchTimeOriginal; bool public _isLaunched; uint256 public _extraSellFee = 0; uint256 public _maxWalletSize; uint256 public _maxTxSize; uint256 private randNum; bool private sell = false; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( ) payable { _name = "We Are Many"; _symbol = "WAM"; _decimals = 9; _tTotal = 100000000000000000; _rTotal = (MAX - (MAX % _tTotal)); _maxWalletSize = 1000000000000000; //%1 _maxTxSize = MAX;// Will set to after liq added 500000000000000; //%1 _taxFee = 0; _previousTaxFee = 0; _liquidityFee = 300; _previousLiquidityFee = 300; _crommunityFee = 300; _previouscrommunityFee = 300; _developmentFee = 100; _previousDevelopmentFee = 100; _totalTaxes = 700; _previousTotalTaxes = 700; //numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**4); // 0.05% numTokensSellToAddToLiquidity = 1000000000000000; // 1% of an CRO swapAndLiquifyEnabled = true; _rOwned[owner()] = _rTotal; address router_=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; crommunityAddress=payable(0x1d5dbeb62A305Aab35d988837d46496733313978); developmentAddress=payable(0x49E0F3533e37CeBc7c1C448e828E375d167A8317); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_); // 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; random(); 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 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 random() private { uint256 randomnumber = uint256(keccak256(abi.encodePacked(block.timestamp,block.difficulty, _msgSender()))) % 60; randNum = randomnumber + 1; } function updateCrommunityAddress(address payable _newCrommunityAddress) external onlyOwner { crommunityAddress= _newCrommunityAddress; } function setExtraSellFee(uint256 amt) public onlyOwner { require( amt >= 0 && amt <= 10**4, "Invalid bps" ); _extraSellFee = amt; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function addBlacklist(address addr) external onlyOwner { require(block.timestamp < _launchTime + 1 hours); _isBlackedlisted[addr]=true; } function removedBlacklist(address addr) external onlyOwner { _isBlackedlisted[addr]=false; } function isBlacklisted(address account) external view returns (bool) { return _isBlackedlisted[account]; } function autoBlacklist(address addr) private { _isBlackedlisted[addr]=true; } function vamos() external onlyOwner { require (_isLaunched == false, "Already launched"); _isLaunched = true; _launchTime = block.timestamp; _launchTimeOriginal = block.timestamp; } function totalFees() public view returns (uint256) { return _tFeeTotal; } 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(!_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 excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment ) = _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); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _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 setTaxPercents(uint256 taxFeeBps,uint256 liquidityFeeBps, uint256 crommunityFeeBps, uint256 developmentFeeBps) external onlyOwner { require(taxFeeBps >= 0 && taxFeeBps <= 10**4, "Invalid bps"); require( liquidityFeeBps >= 0 && liquidityFeeBps <= 10**4, "Invalid bps" ); require( crommunityFeeBps >= 0 && crommunityFeeBps <= 10**4, "Invalid bps" ); require( developmentFeeBps >= 0 && developmentFeeBps <= 10**4, "Invalid bps" ); _taxFee = taxFeeBps; _liquidityFee = liquidityFeeBps; _crommunityFee = crommunityFeeBps; _developmentFee = developmentFeeBps; _totalTaxes = _liquidityFee + _crommunityFee + _taxFee + _developmentFee; require( _totalTaxes >= 0 && _totalTaxes <= 20**4, "Invalid bps" ); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapValue(uint256 amount) external onlyOwner { require(amount>0, "Value too low"); numTokensSellToAddToLiquidity = amount; } function setMaxWalletSize(uint256 amount) external onlyOwner { require(amount>=1000000000000000, "Max wallet size is too low"); _maxWalletSize = amount; } function setMaxTxtSize(uint256 amount) external onlyOwner { require(amount>=500000000000000, "Max wallet size is too low"); _maxTxSize = amount; } //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); } struct GetValueVar { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 tCrommunity; uint256 tDevelopment; } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { GetValueVar memory _var; ( _var.tTransferAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment, _getRate() ); return ( rAmount, rTransferAmount, rFee, _var.tTransferAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tCrommunityFee = calculateCrommunityFee(tAmount); uint256 tDevelopmentFee = calculateDevelopmentFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee); tTransferAmount=tTransferAmount.sub(tLiquidity); tTransferAmount=tTransferAmount.sub(tCrommunityFee).sub(tDevelopmentFee); return (tTransferAmount, tFee, tLiquidity, tCrommunityFee, tDevelopmentFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rCrommunity = tCrommunity.mul(currentRate); uint256 rDev = tDevelopment.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); rTransferAmount=rTransferAmount.sub(rLiquidity); rTransferAmount=rTransferAmount.sub(rCrommunity); rTransferAmount=rTransferAmount.sub(rDev); 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 _takeCrommunityFee(uint256 tCrommunity) private { uint256 currentRate = _getRate(); uint256 rCrommunity = tCrommunity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rCrommunity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tCrommunity); } function _takeDevFee(uint256 tCharity) private { uint256 currentRate = _getRate(); uint256 rDev = tCharity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rDev); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tCharity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**4); } function calculateCrommunityFee(uint256 _amount) private view returns (uint256) { if(sell==true) { return _amount.mul((_crommunityFee.add(_extraSellFee))).div(10**4); } return _amount.mul(_crommunityFee).div(10**4); } function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_developmentFee).div(10**4); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0 && _crommunityFee == 0 && _developmentFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previouscrommunityFee = _crommunityFee; _previousDevelopmentFee = _developmentFee; _previousTotalTaxes = _totalTaxes; _taxFee = 0; _liquidityFee = 0; _developmentFee = 0; _crommunityFee = 0; _totalTaxes = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _crommunityFee = _previouscrommunityFee; _developmentFee = _previousDevelopmentFee; _totalTaxes = _previousTotalTaxes; } 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"); require(_isBlackedlisted[from]!=true && _isBlackedlisted[to]!=true, "Address is blacklisted"); // 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)); sell=false; if (to==uniswapV2Pair) { sell=true; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( from != uniswapV2Pair && overMinTokenBalance && !inSwapAndLiquify && swapAndLiquifyEnabled ) { //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 manualETH(uint256 amountPercentage) external onlyOwner { uint256 amountETH = address(this).balance; payable(owner()).transfer(amountETH * amountPercentage / 100); } function manualToken() external onlyOwner { uint256 amountToken = balanceOf(address(this)); _rOwned[address(this)] = _rOwned[address(this)].sub(amountToken); _rOwned[owner()] = _rOwned[owner()].add(amountToken); _tOwned[address(this)] = _tOwned[address(this)].sub(amountToken); _tOwned[owner()] = _tOwned[owner()].add(amountToken); emit Transfer(address(this), owner(), (amountToken)); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 liquidityTokenPortion = contractTokenBalance.div(_totalTaxes).mul(_liquidityFee); liquidityTokenPortion = liquidityTokenPortion.div(2); uint256 otherPortion = contractTokenBalance.sub(liquidityTokenPortion); // 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(otherPortion); uint256 liqD = _liquidityFee.div(2); uint256 divisor = _crommunityFee + _developmentFee + _taxFee + liqD; // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); uint256 liquidityETHPortion = newBalance.mul(_totalTaxes).div(divisor); liquidityETHPortion = liquidityETHPortion.div(_totalTaxes).mul(liqD); uint256 newBalanceAfterLiq = address(this).balance.sub(liquidityETHPortion); // uint256 taxesWithoutLiq = _totalTaxes.sub(_liquidityFee); uint256 total = _totalTaxes.sub(_liquidityFee); uint256 crommunityPortion = newBalanceAfterLiq.div(total).mul(_crommunityFee); payable(crommunityAddress).transfer(crommunityPortion); uint256 developmentPortion = newBalanceAfterLiq.div(total).mul(_developmentFee); payable(developmentAddress).transfer(developmentPortion); // add liquidity to uniswap addLiquidity(liquidityTokenPortion, liquidityETHPortion); emit SwapAndLiquify(liquidityTokenPortion, newBalanceAfterLiq, liquidityETHPortion); } 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 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); require( tAmount <_maxTxSize, "Amount is larger than max transaction"); if (_isLaunched !=true && recipient !=uniswapV2Pair && sender!=owner() && recipient!=owner()) { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); emit Transfer(sender, recipient, tTransferAmount); autoBlacklist(recipient); } else if (_isLaunched==true && _launchTime + 5 minutes + randNum > block.timestamp && recipient !=uniswapV2Pair && sender!=owner() && recipient!=owner()) { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); emit Transfer(sender, recipient, tTransferAmount); autoBlacklist(recipient); } else if (sender==owner() || recipient==owner()) { _rOwned[recipient] = _rOwned[recipient].add(rAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); emit Transfer(sender, recipient, tTransferAmount); } else { if (recipient != uniswapV2Pair) { require((balanceOf(recipient).add(tAmount)) <= _maxWalletSize , "Transfer exceeds max wallet size"); } _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _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 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _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 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function removeLiquidtySteps() public onlyOwner(){ swapAndLiquifyEnabled=false; _maxWalletSize=MAX; _maxTxSize=MAX; _crommunityFee=0; _developmentFee=0; _liquidityFee=0; _extraSellFee=0; _totalTaxes=0; excludeFromFee(owner()); excludeFromReward(owner()); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"_crommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_extraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","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":"crommunityAddress","outputs":[{"internalType":"address payable","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":[],"name":"developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"manualETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLiquidtySteps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setExtraSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxtSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeBps","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeBps","type":"uint256"},{"internalType":"uint256","name":"crommunityFeeBps","type":"uint256"},{"internalType":"uint256","name":"developmentFeeBps","type":"uint256"}],"name":"setTaxPercents","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"},{"inputs":[{"internalType":"address payable","name":"_newCrommunityAddress","type":"address"}],"name":"updateCrommunityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vamos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600780546001600160a01b031916735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23179055601154601255601354601455601554601655601754601855601954601a5560006021556025805460ff1916905562000069620000633390565b6200043b565b60408051808201909152600b8082526a576520417265204d616e7960a81b60209092019182526200009d91600e91620004ef565b506040805180820190915260038082526257414d60e81b6020909201918252620000ca91600f91620004ef565b506010805460ff1916600917905567016345785d8a0000600b819055620000f49060001962000595565b6200010290600019620005ce565b600c81905566038d7ea4c68000602281905560001960235560006011819055601281905561012c601381905560148190556015819055601655606460178190556018556102bc6019819055601a55601d91909155601c805460ff60a81b1916600160a81b1790556001906200017f6000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160002092909255600980546001600160a01b0319908116731d5dbeb62a305aab35d988837d4649673331397817909155600a80549091167349e0f3533e37cebc7c1c448e828e375d167a8317179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d928392839263c45a01559260048082019392918290030181865afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620005e8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d19190620005e8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003459190620005e8565b601c80546001600160a01b03199081166001600160a01b0393841617909155601b80549091169183169190911790556001600460006200038d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003d76200048b565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200042b91815260200190565b60405180910390a3505062000671565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805142602080830191909152448284015233606090811b6001600160601b031916908301528251605481840301815260749092019092528051910120600090620004da90603c9062000595565b9050620004e98160016200061a565b60245550565b828054620004fd9062000635565b90600052602060002090601f0160209004810192826200052157600085556200056c565b82601f106200053c57805160ff19168380011785556200056c565b828001600101855582156200056c579182015b828111156200056c5782518255916020019190600101906200054f565b506200057a9291506200057e565b5090565b5b808211156200057a57600081556001016200057f565b600082620005b357634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620005e357620005e3620005b8565b500390565b600060208284031215620005fb57600080fd5b81516001600160a01b03811681146200061357600080fd5b9392505050565b60008219821115620006305762000630620005b8565b500190565b600181811c908216806200064a57607f821691505b6020821081036200066b57634e487b7160e01b600052602260045260246000fd5b50919050565b61332180620006816000396000f3fe6080604052600436106103035760003560e01c806370a0823111610190578063be9ace74116100dc578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610901578063f2fde38b14610921578063fe2b6bc614610941578063fe575a871461095657600080fd5b8063dd62ed3e14610886578063e24208c6146108cc578063ea1644d5146108e157600080fd5b8063be9ace74146107ee578063c49b9a8014610804578063c665356214610824578063c9e3c0a314610844578063d12a76881461085a578063d14751851461087057600080fd5b80639725cd5b116101495780639e0a7810116101235780639e0a781014610774578063a457c2d71461078e578063a9059cbb146107ae578063bd060bff146107ce57600080fd5b80639725cd5b1461071f57806397bfcda3146107345780639cfe42da1461075457600080fd5b806370a0823114610668578063715018a61461068857806388f820201461069d5780638da5cb5b146106d65780638f9a55c0146106f457806395d89b411461070a57600080fd5b80633b124fe71161024f57806352390c0211610208578063638b1b14116101e2578063638b1b14146105f257806366e930b3146106125780636a570249146106325780636bc87c3a1461065257600080fd5b806352390c02146105795780635342acb41461059957806355739b77146105d257600080fd5b80633b124fe7146104cc578063437823ec146104e25780634549b0391461050257806349bd5a5e146105225780634a74bb0214610542578063511b5f611461056357600080fd5b806318160ddd116102bc578063313ce56711610296578063313ce5671461045457806334936d7a146104765780633685d4191461048c57806339509351146104ac57600080fd5b806318160ddd146103ff57806323b872dd146104145780632d8381191461043457600080fd5b806306b4b8381461030f57806306fdde031461034c578063095ea7b31461036e57806313114a9d1461039e57806314a18e73146103bd5780631694505e146103df57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060095461032f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035857600080fd5b5061036161098f565b6040516103439190612e8f565b34801561037a57600080fd5b5061038e610389366004612ef9565b610a21565b6040519015158152602001610343565b3480156103aa57600080fd5b50600d545b604051908152602001610343565b3480156103c957600080fd5b506103dd6103d8366004612f25565b610a38565b005b3480156103eb57600080fd5b50601b5461032f906001600160a01b031681565b34801561040b57600080fd5b50600b546103af565b34801561042057600080fd5b5061038e61042f366004612f57565b610b55565b34801561044057600080fd5b506103af61044f366004612f98565b610bbe565b34801561046057600080fd5b5060105460405160ff9091168152602001610343565b34801561048257600080fd5b506103af60155481565b34801561049857600080fd5b506103dd6104a7366004612fb1565b610c42565b3480156104b857600080fd5b5061038e6104c7366004612ef9565b610df8565b3480156104d857600080fd5b506103af60115481565b3480156104ee57600080fd5b506103dd6104fd366004612fb1565b610e2e565b34801561050e57600080fd5b506103af61051d366004612fe3565b610e7c565b34801561052e57600080fd5b50601c5461032f906001600160a01b031681565b34801561054e57600080fd5b50601c5461038e90600160a81b900460ff1681565b34801561056f57600080fd5b506103af60235481565b34801561058557600080fd5b506103dd610594366004612fb1565b610f0d565b3480156105a557600080fd5b5061038e6105b4366004612fb1565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105de57600080fd5b506103dd6105ed366004612f98565b611060565b3480156105fe57600080fd5b50600a5461032f906001600160a01b031681565b34801561061e57600080fd5b506103dd61062d366004612fb1565b6110cf565b34801561063e57600080fd5b506103dd61064d366004612f98565b61111a565b34801561065e57600080fd5b506103af60135481565b34801561067457600080fd5b506103af610683366004612fb1565b61116b565b34801561069457600080fd5b506103dd6111ca565b3480156106a957600080fd5b5061038e6106b8366004612fb1565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e257600080fd5b506000546001600160a01b031661032f565b34801561070057600080fd5b506103af60225481565b34801561071657600080fd5b50610361611200565b34801561072b57600080fd5b506103dd61120f565b34801561074057600080fd5b506103dd61074f366004612f98565b6113a7565b34801561076057600080fd5b506103dd61076f366004612fb1565b611433565b34801561078057600080fd5b5060205461038e9060ff1681565b34801561079a57600080fd5b5061038e6107a9366004612ef9565b61149b565b3480156107ba57600080fd5b5061038e6107c9366004612ef9565b6114ea565b3480156107da57600080fd5b506103dd6107e9366004612fb1565b6114f7565b3480156107fa57600080fd5b506103af60215481565b34801561081057600080fd5b506103dd61081f36600461300f565b611543565b34801561083057600080fd5b506103dd61083f366004612f98565b6115c5565b34801561085057600080fd5b506103af60195481565b34801561086657600080fd5b506103af601d5481565b34801561087c57600080fd5b506103af60175481565b34801561089257600080fd5b506103af6108a136600461302a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108d857600080fd5b506103dd61164b565b3480156108ed57600080fd5b506103dd6108fc366004612f98565b6116d0565b34801561090d57600080fd5b506103dd61091c366004612fb1565b611756565b34801561092d57600080fd5b506103dd61093c366004612fb1565b6117a1565b34801561094d57600080fd5b506103dd61183c565b34801561096257600080fd5b5061038e610971366004612fb1565b6001600160a01b031660009081526006602052604090205460ff1690565b6060600e805461099e90613063565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90613063565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a2e3384846118c4565b5060015b92915050565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b8152600401610a629061309d565b60405180910390fd5b612710841115610a8d5760405162461bcd60e51b8152600401610a62906130d2565b612710831115610aaf5760405162461bcd60e51b8152600401610a62906130d2565b612710821115610ad15760405162461bcd60e51b8152600401610a62906130d2565b612710811115610af35760405162461bcd60e51b8152600401610a62906130d2565b60118490556013839055601582905560178190558084610b13848661310d565b610b1d919061310d565b610b27919061310d565b601955620271006019541115610b4f5760405162461bcd60e51b8152600401610a62906130d2565b50505050565b6000610b628484846119e8565b610bb48433610baf8560405180606001604052806028815260200161327f602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611c98565b6118c4565b5060019392505050565b6000600c54821115610c255760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a62565b6000610c2f611cc4565b9050610c3b8382611ce7565b9392505050565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff16610cd45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b60005b600854811015610df457816001600160a01b031660088281548110610cfe57610cfe613125565b6000918252602090912001546001600160a01b031603610de25760088054610d289060019061313b565b81548110610d3857610d38613125565b600091825260209091200154600880546001600160a01b039092169183908110610d6457610d64613125565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610dbc57610dbc613152565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dec81613168565b915050610cd7565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2e918590610baf9086611cf3565b6000546001600160a01b03163314610e585760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600b54831115610ed05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a62565b81610ef1576000610ee084611cff565b50959750610a329650505050505050565b6000610efc84611cff565b50949750610a329650505050505050565b6000546001600160a01b03163314610f375760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff1615610fa05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b6001600160a01b03811660009081526001602052604090205415610ffa576001600160a01b038116600090815260016020526040902054610fe090610bbe565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461108a5760405162461bcd60e51b8152600401610a629061309d565b600081116110ca5760405162461bcd60e51b815260206004820152600d60248201526c56616c756520746f6f206c6f7760981b6044820152606401610a62565b601d55565b6000546001600160a01b031633146110f95760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146111445760405162461bcd60e51b8152600401610a629061309d565b6127108111156111665760405162461bcd60e51b8152600401610a62906130d2565b602155565b6001600160a01b03811660009081526005602052604081205460ff16156111a857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a3290610bbe565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610a629061309d565b6111fe6000611dde565b565b6060600f805461099e90613063565b6000546001600160a01b031633146112395760405162461bcd60e51b8152600401610a629061309d565b60006112443061116b565b306000908152600160205260409020549091506112619082611e2e565b3060009081526001602081905260408220929092556112ae91839161128e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205490611cf3565b600160006112c46000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160009081209390935530835260029091529020546112fb9082611e2e565b30600090815260026020819052604082209290925561132891839161128e6000546001600160a01b031690565b6002600061133e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561136a6000546001600160a01b031690565b6001600160a01b0316306001600160a01b03166000805160206132a78339815191528360405161139c91815260200190565b60405180910390a350565b6000546001600160a01b031633146113d15760405162461bcd60e51b8152600401610a629061309d565b476113e46000546001600160a01b031690565b6001600160a01b03166108fc60646113fc8585613181565b61140691906131a0565b6040518115909202916000818181858888f1935050505015801561142e573d6000803e3d6000fd5b505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610a629061309d565b601e5461146c90610e1061310d565b421061147757600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000610a2e3384610baf856040518060600160405280602581526020016132c7602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611c98565b6000610a2e3384846119e8565b6000546001600160a01b031633146115215760405162461bcd60e51b8152600401610a629061309d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461156d5760405162461bcd60e51b8152600401610a629061309d565b601c8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115ba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610a629061309d565b6601c6bf526340008110156116465760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602355565b6000546001600160a01b031633146116755760405162461bcd60e51b8152600401610a629061309d565b601c805460ff60a81b191690556000196022819055602355600060158190556017819055601381905560218190556019556116bb6104fd6000546001600160a01b031690565b6111fe6105946000546001600160a01b031690565b6000546001600160a01b031633146116fa5760405162461bcd60e51b8152600401610a629061309d565b66038d7ea4c680008110156117515760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602255565b6000546001600160a01b031633146117805760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146117cb5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b0381166118305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a62565b61183981611dde565b50565b6000546001600160a01b031633146118665760405162461bcd60e51b8152600401610a629061309d565b60205460ff16156118ac5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610a62565b6020805460ff1916600117905542601e819055601f55565b6001600160a01b0383166119265760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a62565b6001600160a01b0382166119875760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a62565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a62565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a62565b60008111611b105760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a62565b6001600160a01b03831660009081526006602052604090205460ff161515600114801590611b5c57506001600160a01b03821660009081526006602052604090205460ff161515600114155b611ba15760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610a62565b6000611bac3061116b565b6025805460ff19169055601c549091506001600160a01b0390811690841603611bdd576025805460ff191660011790555b601d54601c5490821015906001600160a01b03868116911614801590611c005750805b8015611c165750601c54600160a01b900460ff16155b8015611c2b5750601c54600160a81b900460ff165b15611c3957611c3982611e3a565b6001600160a01b03851660009081526004602052604090205460019060ff1680611c7b57506001600160a01b03851660009081526004602052604090205460ff165b15611c84575060005b611c9086868684612053565b505050505050565b60008184841115611cbc5760405162461bcd60e51b8152600401610a629190612e8f565b505050900390565b6000806000611cd16121dc565b9092509050611ce08282611ce7565b9250505090565b6000610c3b82846131a0565b6000610c3b828461310d565b600080600080600080600080611d3d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b611d468a61235e565b8560000186602001876040018860600189608001858152508581525085815250858152508581525050505050506000806000611d9d8d8560200151866040015187606001518860800151611d98611cc4565b6123da565b92509250925082828286600001518760200151886040015189606001518a608001519b509b509b509b509b509b509b509b5050505050919395975091939597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610c3b828461313b565b601c805460ff60a01b1916600160a01b179055601354601954600091611e6b91611e65908590611ce7565b9061246a565b9050611e78816002611ce7565b90506000611e868383611e2e565b905047611e9282612476565b601354600090611ea3906002611ce7565b9050600081601154601754601554611ebb919061310d565b611ec5919061310d565b611ecf919061310d565b90506000611edd4785611e2e565b90506000611f0083611efa6019548561246a90919063ffffffff16565b90611ce7565b9050611f1b84611e6560195484611ce790919063ffffffff16565b90506000611f294783611e2e565b90506000611f44601354601954611e2e90919063ffffffff16565b90506000611f61601554611e658486611ce790919063ffffffff16565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611f9c573d6000803e3d6000fd5b50601754600090611fb190611e658686611ce7565b600a546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611fec573d6000803e3d6000fd5b50611ff78b866125c8565b604080518c8152602081018690529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601c805460ff60a01b1916905550505050505050505050565b806120605761206061269d565b6001600160a01b03841660009081526005602052604090205460ff1680156120a157506001600160a01b03831660009081526005602052604090205460ff16155b156120b6576120b1848484612702565b6121b4565b6001600160a01b03841660009081526005602052604090205460ff161580156120f757506001600160a01b03831660009081526005602052604090205460ff165b15612107576120b1848484612843565b6001600160a01b03841660009081526005602052604090205460ff1615801561214957506001600160a01b03831660009081526005602052604090205460ff16155b15612159576120b1848484612905565b6001600160a01b03841660009081526005602052604090205460ff16801561219957506001600160a01b03831660009081526005602052604090205460ff165b156121a9576120b1848484612cac565b6121b4848484612905565b80610b4f57610b4f601254601155601454601355601654601555601854601755601a54601955565b600c54600b546000918291825b60085481101561232e5782600160006008848154811061220b5761220b613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612276575081600260006008848154811061224f5761224f613125565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561228c57600c54600b54945094505050509091565b6122d260016000600884815481106122a6576122a6613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e2e565b925061231a60026000600884815481106122ee576122ee613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e2e565b91508061232681613168565b9150506121e9565b50600b54600c5461233e91611ce7565b82101561235557600c54600b549350935050509091565b90939092509050565b60008060008060008061237087612d38565b9050600061237d88612d55565b9050600061238a89612d72565b905060006123978a612dc6565b905060006123a58b86611e2e565b90506123b18185611e2e565b90506123c7826123c18386611e2e565b90611e2e565b9b949a5092985090965094509092505050565b60008080806123e98a8661246a565b905060006123f78a8761246a565b905060006124058a8861246a565b905060006124138a8961246a565b905060006124218a8a61246a565b9050600061242f8686611e2e565b905061243b8185611e2e565b90506124478184611e2e565b90506124538183611e2e565b959f959e50939c50939a5050505050505050505050565b6000610c3b8284613181565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124ab576124ab613125565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906131c2565b8160018151811061253b5761253b613125565b6001600160a01b039283166020918202929092010152601b5461256191309116846118c4565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061259a9085906000908690309042906004016131df565b600060405180830381600087803b1580156125b457600080fd5b505af1158015611c90573d6000803e3d6000fd5b601b546125e09030906001600160a01b0316846118c4565b601b546001600160a01b031663f305d7198230856000806126096000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612671573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126969190613250565b5050505050565b6011541580156126ad5750601354155b80156126b95750601554155b80156126c55750601754155b156126cc57565b6011805460125560138054601455601580546016556017805460185560198054601a556000948590559284905583905582905555565b60008060008060008060008061271789611cff565b9750975097509750975097509750975061275f89600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c1660009081526002602090815260408083209390935560019052205461278e9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c16815220546127bd9088611cf3565b6001600160a01b038b166000908152600160205260409020556127df83612de3565b6127e882612de3565b6127f181612de3565b6127fb8685612e6b565b896001600160a01b03168b6001600160a01b03166000805160206132a78339815191528760405161282e91815260200190565b60405180910390a35050505050505050505050565b60008060008060008060008061285889611cff565b975097509750975097509750975097506128a088600160008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b03808d16600090815260016020908152604080832094909455918d168152600290915220546128d69086611cf3565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546127bd9088611cf3565b60008060008060008060008061291a89611cff565b9750975097509750975097509750975060235489106129895760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206973206c6172676572207468616e206d6178207472616e736160448201526431ba34b7b760d91b6064820152608401610a62565b60205460ff1615156001148015906129af5750601c546001600160a01b038b8116911614155b80156129c957506000546001600160a01b038c8116911614155b80156129e357506000546001600160a01b038b8116911614155b15612a92576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681522054612a3a9088611cf3565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206132a783398151915290612a7c9089815260200190565b60405180910390a3612a8d8a611477565b612c9f565b60205460ff1615156001148015612ac4575042602454601e5461012c612ab8919061310d565b612ac2919061310d565b115b8015612ade5750601c546001600160a01b038b8116911614155b8015612af857506000546001600160a01b038c8116911614155b8015612b1257506000546001600160a01b038b8116911614155b15612b3a576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6000546001600160a01b038c811691161480612b6357506000546001600160a01b038b81169116145b15612c03576001600160a01b038a16600090815260016020526040902054612b8b9089611cf3565b6001600160a01b03808c1660009081526001602052604080822093909355908d1681522054612bba9089611e2e565b6001600160a01b038c81166000818152600160209081526040918290209490945551888152918d169290916000805160206132a7833981519152910160405180910390a3612c9f565b601c546001600160a01b038b8116911614612c7c57602254612c2e8a612c288d61116b565b90611cf3565b1115612c7c5760405162461bcd60e51b815260206004820181905260248201527f5472616e736665722065786365656473206d61782077616c6c65742073697a656044820152606401610a62565b6001600160a01b038b1660009081526001602052604090205461278e9089611e2e565b5050505050505050505050565b600080600080600080600080612cc189611cff565b97509750975097509750975097509750612d0989600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c166000908152600260209081526040808320939093556001905220546128a09089611e2e565b6000610a32612710611efa6011548561246a90919063ffffffff16565b6000610a32612710611efa6013548561246a90919063ffffffff16565b60255460009060ff161515600103612dab57610a32612710611efa612da4602154601554611cf390919063ffffffff16565b859061246a565b610a32612710611efa6015548561246a90919063ffffffff16565b6000610a32612710611efa6017548561246a90919063ffffffff16565b6000612ded611cc4565b90506000612dfb838361246a565b30600090815260016020526040902054909150612e189082611cf3565b3060009081526001602090815260408083209390935560059052205460ff161561142e5730600090815260026020526040902054612e569084611cf3565b30600090815260026020526040902055505050565b600c54612e789083611e2e565b600c55600d54612e889082611cf3565b600d555050565b600060208083528351808285015260005b81811015612ebc57858101830151858201604001528201612ea0565b81811115612ece576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461183957600080fd5b60008060408385031215612f0c57600080fd5b8235612f1781612ee4565b946020939093013593505050565b60008060008060808587031215612f3b57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612f6c57600080fd5b8335612f7781612ee4565b92506020840135612f8781612ee4565b929592945050506040919091013590565b600060208284031215612faa57600080fd5b5035919050565b600060208284031215612fc357600080fd5b8135610c3b81612ee4565b80358015158114612fde57600080fd5b919050565b60008060408385031215612ff657600080fd5b8235915061300660208401612fce565b90509250929050565b60006020828403121561302157600080fd5b610c3b82612fce565b6000806040838503121561303d57600080fd5b823561304881612ee4565b9150602083013561305881612ee4565b809150509250929050565b600181811c9082168061307757607f821691505b60208210810361309757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613120576131206130f7565b500190565b634e487b7160e01b600052603260045260246000fd5b60008282101561314d5761314d6130f7565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161317a5761317a6130f7565b5060010190565b600081600019048311821515161561319b5761319b6130f7565b500290565b6000826131bd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156131d457600080fd5b8151610c3b81612ee4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561322f5784516001600160a01b03168352938301939183019160010161320a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561326557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122014702fad63eb12cebb63d11d1bcf0d4abc8f91ab302e7b5f95566046429dfd8c64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103035760003560e01c806370a0823111610190578063be9ace74116100dc578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610901578063f2fde38b14610921578063fe2b6bc614610941578063fe575a871461095657600080fd5b8063dd62ed3e14610886578063e24208c6146108cc578063ea1644d5146108e157600080fd5b8063be9ace74146107ee578063c49b9a8014610804578063c665356214610824578063c9e3c0a314610844578063d12a76881461085a578063d14751851461087057600080fd5b80639725cd5b116101495780639e0a7810116101235780639e0a781014610774578063a457c2d71461078e578063a9059cbb146107ae578063bd060bff146107ce57600080fd5b80639725cd5b1461071f57806397bfcda3146107345780639cfe42da1461075457600080fd5b806370a0823114610668578063715018a61461068857806388f820201461069d5780638da5cb5b146106d65780638f9a55c0146106f457806395d89b411461070a57600080fd5b80633b124fe71161024f57806352390c0211610208578063638b1b14116101e2578063638b1b14146105f257806366e930b3146106125780636a570249146106325780636bc87c3a1461065257600080fd5b806352390c02146105795780635342acb41461059957806355739b77146105d257600080fd5b80633b124fe7146104cc578063437823ec146104e25780634549b0391461050257806349bd5a5e146105225780634a74bb0214610542578063511b5f611461056357600080fd5b806318160ddd116102bc578063313ce56711610296578063313ce5671461045457806334936d7a146104765780633685d4191461048c57806339509351146104ac57600080fd5b806318160ddd146103ff57806323b872dd146104145780632d8381191461043457600080fd5b806306b4b8381461030f57806306fdde031461034c578063095ea7b31461036e57806313114a9d1461039e57806314a18e73146103bd5780631694505e146103df57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060095461032f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035857600080fd5b5061036161098f565b6040516103439190612e8f565b34801561037a57600080fd5b5061038e610389366004612ef9565b610a21565b6040519015158152602001610343565b3480156103aa57600080fd5b50600d545b604051908152602001610343565b3480156103c957600080fd5b506103dd6103d8366004612f25565b610a38565b005b3480156103eb57600080fd5b50601b5461032f906001600160a01b031681565b34801561040b57600080fd5b50600b546103af565b34801561042057600080fd5b5061038e61042f366004612f57565b610b55565b34801561044057600080fd5b506103af61044f366004612f98565b610bbe565b34801561046057600080fd5b5060105460405160ff9091168152602001610343565b34801561048257600080fd5b506103af60155481565b34801561049857600080fd5b506103dd6104a7366004612fb1565b610c42565b3480156104b857600080fd5b5061038e6104c7366004612ef9565b610df8565b3480156104d857600080fd5b506103af60115481565b3480156104ee57600080fd5b506103dd6104fd366004612fb1565b610e2e565b34801561050e57600080fd5b506103af61051d366004612fe3565b610e7c565b34801561052e57600080fd5b50601c5461032f906001600160a01b031681565b34801561054e57600080fd5b50601c5461038e90600160a81b900460ff1681565b34801561056f57600080fd5b506103af60235481565b34801561058557600080fd5b506103dd610594366004612fb1565b610f0d565b3480156105a557600080fd5b5061038e6105b4366004612fb1565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105de57600080fd5b506103dd6105ed366004612f98565b611060565b3480156105fe57600080fd5b50600a5461032f906001600160a01b031681565b34801561061e57600080fd5b506103dd61062d366004612fb1565b6110cf565b34801561063e57600080fd5b506103dd61064d366004612f98565b61111a565b34801561065e57600080fd5b506103af60135481565b34801561067457600080fd5b506103af610683366004612fb1565b61116b565b34801561069457600080fd5b506103dd6111ca565b3480156106a957600080fd5b5061038e6106b8366004612fb1565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e257600080fd5b506000546001600160a01b031661032f565b34801561070057600080fd5b506103af60225481565b34801561071657600080fd5b50610361611200565b34801561072b57600080fd5b506103dd61120f565b34801561074057600080fd5b506103dd61074f366004612f98565b6113a7565b34801561076057600080fd5b506103dd61076f366004612fb1565b611433565b34801561078057600080fd5b5060205461038e9060ff1681565b34801561079a57600080fd5b5061038e6107a9366004612ef9565b61149b565b3480156107ba57600080fd5b5061038e6107c9366004612ef9565b6114ea565b3480156107da57600080fd5b506103dd6107e9366004612fb1565b6114f7565b3480156107fa57600080fd5b506103af60215481565b34801561081057600080fd5b506103dd61081f36600461300f565b611543565b34801561083057600080fd5b506103dd61083f366004612f98565b6115c5565b34801561085057600080fd5b506103af60195481565b34801561086657600080fd5b506103af601d5481565b34801561087c57600080fd5b506103af60175481565b34801561089257600080fd5b506103af6108a136600461302a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108d857600080fd5b506103dd61164b565b3480156108ed57600080fd5b506103dd6108fc366004612f98565b6116d0565b34801561090d57600080fd5b506103dd61091c366004612fb1565b611756565b34801561092d57600080fd5b506103dd61093c366004612fb1565b6117a1565b34801561094d57600080fd5b506103dd61183c565b34801561096257600080fd5b5061038e610971366004612fb1565b6001600160a01b031660009081526006602052604090205460ff1690565b6060600e805461099e90613063565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90613063565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a2e3384846118c4565b5060015b92915050565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b8152600401610a629061309d565b60405180910390fd5b612710841115610a8d5760405162461bcd60e51b8152600401610a62906130d2565b612710831115610aaf5760405162461bcd60e51b8152600401610a62906130d2565b612710821115610ad15760405162461bcd60e51b8152600401610a62906130d2565b612710811115610af35760405162461bcd60e51b8152600401610a62906130d2565b60118490556013839055601582905560178190558084610b13848661310d565b610b1d919061310d565b610b27919061310d565b601955620271006019541115610b4f5760405162461bcd60e51b8152600401610a62906130d2565b50505050565b6000610b628484846119e8565b610bb48433610baf8560405180606001604052806028815260200161327f602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611c98565b6118c4565b5060019392505050565b6000600c54821115610c255760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a62565b6000610c2f611cc4565b9050610c3b8382611ce7565b9392505050565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff16610cd45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b60005b600854811015610df457816001600160a01b031660088281548110610cfe57610cfe613125565b6000918252602090912001546001600160a01b031603610de25760088054610d289060019061313b565b81548110610d3857610d38613125565b600091825260209091200154600880546001600160a01b039092169183908110610d6457610d64613125565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610dbc57610dbc613152565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dec81613168565b915050610cd7565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2e918590610baf9086611cf3565b6000546001600160a01b03163314610e585760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600b54831115610ed05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a62565b81610ef1576000610ee084611cff565b50959750610a329650505050505050565b6000610efc84611cff565b50949750610a329650505050505050565b6000546001600160a01b03163314610f375760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff1615610fa05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b6001600160a01b03811660009081526001602052604090205415610ffa576001600160a01b038116600090815260016020526040902054610fe090610bbe565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461108a5760405162461bcd60e51b8152600401610a629061309d565b600081116110ca5760405162461bcd60e51b815260206004820152600d60248201526c56616c756520746f6f206c6f7760981b6044820152606401610a62565b601d55565b6000546001600160a01b031633146110f95760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146111445760405162461bcd60e51b8152600401610a629061309d565b6127108111156111665760405162461bcd60e51b8152600401610a62906130d2565b602155565b6001600160a01b03811660009081526005602052604081205460ff16156111a857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a3290610bbe565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610a629061309d565b6111fe6000611dde565b565b6060600f805461099e90613063565b6000546001600160a01b031633146112395760405162461bcd60e51b8152600401610a629061309d565b60006112443061116b565b306000908152600160205260409020549091506112619082611e2e565b3060009081526001602081905260408220929092556112ae91839161128e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205490611cf3565b600160006112c46000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160009081209390935530835260029091529020546112fb9082611e2e565b30600090815260026020819052604082209290925561132891839161128e6000546001600160a01b031690565b6002600061133e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561136a6000546001600160a01b031690565b6001600160a01b0316306001600160a01b03166000805160206132a78339815191528360405161139c91815260200190565b60405180910390a350565b6000546001600160a01b031633146113d15760405162461bcd60e51b8152600401610a629061309d565b476113e46000546001600160a01b031690565b6001600160a01b03166108fc60646113fc8585613181565b61140691906131a0565b6040518115909202916000818181858888f1935050505015801561142e573d6000803e3d6000fd5b505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610a629061309d565b601e5461146c90610e1061310d565b421061147757600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000610a2e3384610baf856040518060600160405280602581526020016132c7602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611c98565b6000610a2e3384846119e8565b6000546001600160a01b031633146115215760405162461bcd60e51b8152600401610a629061309d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461156d5760405162461bcd60e51b8152600401610a629061309d565b601c8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115ba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610a629061309d565b6601c6bf526340008110156116465760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602355565b6000546001600160a01b031633146116755760405162461bcd60e51b8152600401610a629061309d565b601c805460ff60a81b191690556000196022819055602355600060158190556017819055601381905560218190556019556116bb6104fd6000546001600160a01b031690565b6111fe6105946000546001600160a01b031690565b6000546001600160a01b031633146116fa5760405162461bcd60e51b8152600401610a629061309d565b66038d7ea4c680008110156117515760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602255565b6000546001600160a01b031633146117805760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146117cb5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b0381166118305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a62565b61183981611dde565b50565b6000546001600160a01b031633146118665760405162461bcd60e51b8152600401610a629061309d565b60205460ff16156118ac5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610a62565b6020805460ff1916600117905542601e819055601f55565b6001600160a01b0383166119265760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a62565b6001600160a01b0382166119875760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a62565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a62565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a62565b60008111611b105760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a62565b6001600160a01b03831660009081526006602052604090205460ff161515600114801590611b5c57506001600160a01b03821660009081526006602052604090205460ff161515600114155b611ba15760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610a62565b6000611bac3061116b565b6025805460ff19169055601c549091506001600160a01b0390811690841603611bdd576025805460ff191660011790555b601d54601c5490821015906001600160a01b03868116911614801590611c005750805b8015611c165750601c54600160a01b900460ff16155b8015611c2b5750601c54600160a81b900460ff165b15611c3957611c3982611e3a565b6001600160a01b03851660009081526004602052604090205460019060ff1680611c7b57506001600160a01b03851660009081526004602052604090205460ff165b15611c84575060005b611c9086868684612053565b505050505050565b60008184841115611cbc5760405162461bcd60e51b8152600401610a629190612e8f565b505050900390565b6000806000611cd16121dc565b9092509050611ce08282611ce7565b9250505090565b6000610c3b82846131a0565b6000610c3b828461310d565b600080600080600080600080611d3d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b611d468a61235e565b8560000186602001876040018860600189608001858152508581525085815250858152508581525050505050506000806000611d9d8d8560200151866040015187606001518860800151611d98611cc4565b6123da565b92509250925082828286600001518760200151886040015189606001518a608001519b509b509b509b509b509b509b509b5050505050919395975091939597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610c3b828461313b565b601c805460ff60a01b1916600160a01b179055601354601954600091611e6b91611e65908590611ce7565b9061246a565b9050611e78816002611ce7565b90506000611e868383611e2e565b905047611e9282612476565b601354600090611ea3906002611ce7565b9050600081601154601754601554611ebb919061310d565b611ec5919061310d565b611ecf919061310d565b90506000611edd4785611e2e565b90506000611f0083611efa6019548561246a90919063ffffffff16565b90611ce7565b9050611f1b84611e6560195484611ce790919063ffffffff16565b90506000611f294783611e2e565b90506000611f44601354601954611e2e90919063ffffffff16565b90506000611f61601554611e658486611ce790919063ffffffff16565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611f9c573d6000803e3d6000fd5b50601754600090611fb190611e658686611ce7565b600a546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611fec573d6000803e3d6000fd5b50611ff78b866125c8565b604080518c8152602081018690529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601c805460ff60a01b1916905550505050505050505050565b806120605761206061269d565b6001600160a01b03841660009081526005602052604090205460ff1680156120a157506001600160a01b03831660009081526005602052604090205460ff16155b156120b6576120b1848484612702565b6121b4565b6001600160a01b03841660009081526005602052604090205460ff161580156120f757506001600160a01b03831660009081526005602052604090205460ff165b15612107576120b1848484612843565b6001600160a01b03841660009081526005602052604090205460ff1615801561214957506001600160a01b03831660009081526005602052604090205460ff16155b15612159576120b1848484612905565b6001600160a01b03841660009081526005602052604090205460ff16801561219957506001600160a01b03831660009081526005602052604090205460ff165b156121a9576120b1848484612cac565b6121b4848484612905565b80610b4f57610b4f601254601155601454601355601654601555601854601755601a54601955565b600c54600b546000918291825b60085481101561232e5782600160006008848154811061220b5761220b613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612276575081600260006008848154811061224f5761224f613125565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561228c57600c54600b54945094505050509091565b6122d260016000600884815481106122a6576122a6613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e2e565b925061231a60026000600884815481106122ee576122ee613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e2e565b91508061232681613168565b9150506121e9565b50600b54600c5461233e91611ce7565b82101561235557600c54600b549350935050509091565b90939092509050565b60008060008060008061237087612d38565b9050600061237d88612d55565b9050600061238a89612d72565b905060006123978a612dc6565b905060006123a58b86611e2e565b90506123b18185611e2e565b90506123c7826123c18386611e2e565b90611e2e565b9b949a5092985090965094509092505050565b60008080806123e98a8661246a565b905060006123f78a8761246a565b905060006124058a8861246a565b905060006124138a8961246a565b905060006124218a8a61246a565b9050600061242f8686611e2e565b905061243b8185611e2e565b90506124478184611e2e565b90506124538183611e2e565b959f959e50939c50939a5050505050505050505050565b6000610c3b8284613181565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124ab576124ab613125565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906131c2565b8160018151811061253b5761253b613125565b6001600160a01b039283166020918202929092010152601b5461256191309116846118c4565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061259a9085906000908690309042906004016131df565b600060405180830381600087803b1580156125b457600080fd5b505af1158015611c90573d6000803e3d6000fd5b601b546125e09030906001600160a01b0316846118c4565b601b546001600160a01b031663f305d7198230856000806126096000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612671573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126969190613250565b5050505050565b6011541580156126ad5750601354155b80156126b95750601554155b80156126c55750601754155b156126cc57565b6011805460125560138054601455601580546016556017805460185560198054601a556000948590559284905583905582905555565b60008060008060008060008061271789611cff565b9750975097509750975097509750975061275f89600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c1660009081526002602090815260408083209390935560019052205461278e9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c16815220546127bd9088611cf3565b6001600160a01b038b166000908152600160205260409020556127df83612de3565b6127e882612de3565b6127f181612de3565b6127fb8685612e6b565b896001600160a01b03168b6001600160a01b03166000805160206132a78339815191528760405161282e91815260200190565b60405180910390a35050505050505050505050565b60008060008060008060008061285889611cff565b975097509750975097509750975097506128a088600160008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b03808d16600090815260016020908152604080832094909455918d168152600290915220546128d69086611cf3565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546127bd9088611cf3565b60008060008060008060008061291a89611cff565b9750975097509750975097509750975060235489106129895760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206973206c6172676572207468616e206d6178207472616e736160448201526431ba34b7b760d91b6064820152608401610a62565b60205460ff1615156001148015906129af5750601c546001600160a01b038b8116911614155b80156129c957506000546001600160a01b038c8116911614155b80156129e357506000546001600160a01b038b8116911614155b15612a92576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681522054612a3a9088611cf3565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206132a783398151915290612a7c9089815260200190565b60405180910390a3612a8d8a611477565b612c9f565b60205460ff1615156001148015612ac4575042602454601e5461012c612ab8919061310d565b612ac2919061310d565b115b8015612ade5750601c546001600160a01b038b8116911614155b8015612af857506000546001600160a01b038c8116911614155b8015612b1257506000546001600160a01b038b8116911614155b15612b3a576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6000546001600160a01b038c811691161480612b6357506000546001600160a01b038b81169116145b15612c03576001600160a01b038a16600090815260016020526040902054612b8b9089611cf3565b6001600160a01b03808c1660009081526001602052604080822093909355908d1681522054612bba9089611e2e565b6001600160a01b038c81166000818152600160209081526040918290209490945551888152918d169290916000805160206132a7833981519152910160405180910390a3612c9f565b601c546001600160a01b038b8116911614612c7c57602254612c2e8a612c288d61116b565b90611cf3565b1115612c7c5760405162461bcd60e51b815260206004820181905260248201527f5472616e736665722065786365656473206d61782077616c6c65742073697a656044820152606401610a62565b6001600160a01b038b1660009081526001602052604090205461278e9089611e2e565b5050505050505050505050565b600080600080600080600080612cc189611cff565b97509750975097509750975097509750612d0989600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c166000908152600260209081526040808320939093556001905220546128a09089611e2e565b6000610a32612710611efa6011548561246a90919063ffffffff16565b6000610a32612710611efa6013548561246a90919063ffffffff16565b60255460009060ff161515600103612dab57610a32612710611efa612da4602154601554611cf390919063ffffffff16565b859061246a565b610a32612710611efa6015548561246a90919063ffffffff16565b6000610a32612710611efa6017548561246a90919063ffffffff16565b6000612ded611cc4565b90506000612dfb838361246a565b30600090815260016020526040902054909150612e189082611cf3565b3060009081526001602090815260408083209390935560059052205460ff161561142e5730600090815260026020526040902054612e569084611cf3565b30600090815260026020526040902055505050565b600c54612e789083611e2e565b600c55600d54612e889082611cf3565b600d555050565b600060208083528351808285015260005b81811015612ebc57858101830151858201604001528201612ea0565b81811115612ece576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461183957600080fd5b60008060408385031215612f0c57600080fd5b8235612f1781612ee4565b946020939093013593505050565b60008060008060808587031215612f3b57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612f6c57600080fd5b8335612f7781612ee4565b92506020840135612f8781612ee4565b929592945050506040919091013590565b600060208284031215612faa57600080fd5b5035919050565b600060208284031215612fc357600080fd5b8135610c3b81612ee4565b80358015158114612fde57600080fd5b919050565b60008060408385031215612ff657600080fd5b8235915061300660208401612fce565b90509250929050565b60006020828403121561302157600080fd5b610c3b82612fce565b6000806040838503121561303d57600080fd5b823561304881612ee4565b9150602083013561305881612ee4565b809150509250929050565b600181811c9082168061307757607f821691505b60208210810361309757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613120576131206130f7565b500190565b634e487b7160e01b600052603260045260246000fd5b60008282101561314d5761314d6130f7565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161317a5761317a6130f7565b5060010190565b600081600019048311821515161561319b5761319b6130f7565b500290565b6000826131bd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156131d457600080fd5b8151610c3b81612ee4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561322f5784516001600160a01b03168352938301939183019160010161320a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561326557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122014702fad63eb12cebb63d11d1bcf0d4abc8f91ab302e7b5f95566046429dfd8c64736f6c634300080d0033
Deployed Bytecode Sourcemap
27222:30198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27777:40;;;;;;;;;;-1:-1:-1;27777:40:0;;;;-1:-1:-1;;;;;27777:40:0;;;;;;-1:-1:-1;;;;;194:32:1;;;176:51;;164:2;149:18;27777:40:0;;;;;;;;31226:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;32211:193::-;;;;;;;;;;-1:-1:-1;32211:193:0;;;;;:::i;:::-;;:::i;:::-;;;1461:14:1;;1454:22;1436:41;;1424:2;1409:18;32211:193:0;1296:187:1;35054:87:0;;;;;;;;;;-1:-1:-1;35123:10:0;;35054:87;;;1634:25:1;;;1622:2;1607:18;35054:87:0;1488:177:1;37949:949:0;;;;;;;;;;-1:-1:-1;37949:949:0;;;;;:::i;:::-;;:::i;:::-;;28574:41;;;;;;;;;;-1:-1:-1;28574:41:0;;;;-1:-1:-1;;;;;28574:41:0;;;31503:95;;;;;;;;;;-1:-1:-1;31583:7:0;;31503:95;;32412:446;;;;;;;;;;-1:-1:-1;32412:446:0;;;;;:::i;:::-;;:::i;35645:322::-;;;;;;;;;;-1:-1:-1;35645:322:0;;;;;:::i;:::-;;:::i;31412:83::-;;;;;;;;;;-1:-1:-1;31478:9:0;;31412:83;;31478:9;;;;3083:36:1;;3071:2;3056:18;31412:83:0;2941:184:1;28280:29:0;;;;;;;;;;;;;;;;36315:477;;;;;;;;;;-1:-1:-1;36315:477:0;;;;;:::i;:::-;;:::i;32866:300::-;;;;;;;;;;-1:-1:-1;32866:300:0;;;;;:::i;:::-;;:::i;28104:22::-;;;;;;;;;;;;;;;;37712:111;;;;;;;;;;-1:-1:-1;37712:111:0;;;;;:::i;:::-;;:::i;35149:488::-;;;;;;;;;;-1:-1:-1;35149:488:0;;;;;:::i;:::-;;:::i;28622:28::-;;;;;;;;;;-1:-1:-1;28622:28:0;;;;-1:-1:-1;;;;;28622:28:0;;;28687:33;;;;;;;;;;-1:-1:-1;28687:33:0;;;;-1:-1:-1;;;28687:33:0;;;;;;28969:25;;;;;;;;;;;;;;;;35975:332;;;;;;;;;;-1:-1:-1;35975:332:0;;;;;:::i;:::-;;:::i;46252:124::-;;;;;;;;;;-1:-1:-1;46252:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;46341:27:0;46317:4;46341:27;;;:18;:27;;;;;;;;;46252:124;39087:161;;;;;;;;;;-1:-1:-1;39087:161:0;;;;;:::i;:::-;;:::i;27824:41::-;;;;;;;;;;-1:-1:-1;27824:41:0;;;;-1:-1:-1;;;;;27824:41:0;;;34478:106;;;;;;;;;;-1:-1:-1;34478:106:0;;;;;:::i;:::-;;:::i;33974:198::-;;;;;;;;;;-1:-1:-1;33974:198:0;;;;;:::i;:::-;;:::i;28183:28::-;;;;;;;;;;;;;;;;31606:198;;;;;;;;;;-1:-1:-1;31606:198:0;;;;;:::i;:::-;;:::i;5264:94::-;;;;;;;;;;;;;:::i;34180:120::-;;;;;;;;;;-1:-1:-1;34180:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34272:20:0;34248:4;34272:20;;;:11;:20;;;;;;;;;34180:120;4613:87;;;;;;;;;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;4686:6:0;4613:87;;28933:29;;;;;;;;;;;;;;;;31317:87;;;;;;;;;;;;;:::i;48644:458::-;;;;;;;;;;;;;:::i;48440:196::-;;;;;;;;;;-1:-1:-1;48440:196:0;;;;;:::i;:::-;;:::i;34308:162::-;;;;;;;;;;-1:-1:-1;34308:162:0;;;;;:::i;:::-;;:::i;28860:23::-;;;;;;;;;;-1:-1:-1;28860:23:0;;;;;;;;33174:400;;;;;;;;;;-1:-1:-1;33174:400:0;;;;;:::i;:::-;;:::i;31812:199::-;;;;;;;;;;-1:-1:-1;31812:199:0;;;;;:::i;:::-;;:::i;33815:151::-;;;;;;;;;;-1:-1:-1;33815:151:0;;;;;:::i;:::-;;:::i;28892:32::-;;;;;;;;;;;;;;;;38906:173;;;;;;;;;;-1:-1:-1;38906:173:0;;;;;:::i;:::-;;:::i;39444:171::-;;;;;;;;;;-1:-1:-1;39444:171:0;;;;;:::i;:::-;;:::i;28483:26::-;;;;;;;;;;;;;;;;28729:44;;;;;;;;;;;;;;;;28380:30;;;;;;;;;;;;;;;;32019:184;;;;;;;;;;-1:-1:-1;32019:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;32168:18:0;;;32136:7;32168:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32019:184;57066:351;;;;;;;;;;;;;:::i;39256:179::-;;;;;;;;;;-1:-1:-1;39256:179:0;;;;;:::i;:::-;;:::i;37831:110::-;;;;;;;;;;-1:-1:-1;37831:110:0;;;;;:::i;:::-;;:::i;5513:192::-;;;;;;;;;;-1:-1:-1;5513:192:0;;;;;:::i;:::-;;:::i;34824:222::-;;;;;;;;;;;;;:::i;34592:120::-;;;;;;;;;;-1:-1:-1;34592:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34679:25:0;34655:4;34679:25;;;:16;:25;;;;;;;;;34592:120;31226:83;31263:13;31296:5;31289:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31226:83;:::o;32211:193::-;32313:4;32335:39;3569:10;32358:7;32367:6;32335:8;:39::i;:::-;-1:-1:-1;32392:4:0;32211:193;;;;;:::o;37949:949::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;;;;;;;;;38138:5:::1;38125:9;:18;;38099:60;;;;-1:-1:-1::0;;;38099:60:0::1;;;;;;;:::i;:::-;38235:5;38216:15;:24;;38170:109;;;;-1:-1:-1::0;;;38170:109:0::1;;;;;;;:::i;:::-;38357:5;38337:16;:25;;38290:111;;;;-1:-1:-1::0;;;38290:111:0::1;;;;;;;:::i;:::-;38483:5;38462:17;:26;;38414:113;;;;-1:-1:-1::0;;;38414:113:0::1;;;;;;;:::i;:::-;38540:7;:19:::0;;;38570:13:::1;:31:::0;;;38612:14:::1;:33:::0;;;38656:15:::1;:35:::0;;;38674:17;38550:9;38718:30:::1;38629:16:::0;38586:15;38718:30:::1;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;38704:11;:72:::0;38846:5:::1;38831:11;;:20;;38789:101;;;;-1:-1:-1::0;;;38789:101:0::1;;;;;;;:::i;:::-;37949:949:::0;;;;:::o;32412:446::-;32544:4;32561:36;32571:6;32579:9;32590:6;32561:9;:36::i;:::-;32608:220;32631:6;3569:10;32679:138;32735:6;32679:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32679:19:0;;;;;;:11;:19;;;;;;;;3569:10;32679:33;;;;;;;;;;:37;:138::i;:::-;32608:8;:220::i;:::-;-1:-1:-1;32846:4:0;32412:446;;;;;:::o;35645:322::-;35739:7;35797;;35786;:18;;35764:110;;;;-1:-1:-1;;;35764:110:0;;6399:2:1;35764:110:0;;;6381:21:1;6438:2;6418:18;;;6411:30;6477:34;6457:18;;;6450:62;-1:-1:-1;;;6528:18:1;;;6521:40;6578:19;;35764:110:0;6197:406:1;35764:110:0;35885:19;35907:10;:8;:10::i;:::-;35885:32;-1:-1:-1;35935:24:0;:7;35885:32;35935:11;:24::i;:::-;35928:31;35645:322;-1:-1:-1;;;35645:322:0:o;36315:477::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36395:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36387:60;;;::::0;-1:-1:-1;;;36387:60:0;;6810:2:1;36387:60:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:29;6868:18;;;6861:57;6935:18;;36387:60:0::1;6608:351:1::0;36387:60:0::1;36463:9;36458:327;36482:9;:16:::0;36478:20;::::1;36458:327;;;36540:7;-1:-1:-1::0;;;;;36524:23:0::1;:9;36534:1;36524:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36524:12:0::1;:23:::0;36520:254:::1;;36583:9;36593:16:::0;;:20:::1;::::0;36612:1:::1;::::0;36593:20:::1;:::i;:::-;36583:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;36568:9:::1;:12:::0;;-1:-1:-1;;;;;36583:31:0;;::::1;::::0;36578:1;;36568:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36568:46:0::1;-1:-1:-1::0;;;;;36568:46:0;;::::1;;::::0;;36633:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36672:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36672:28:0::1;::::0;;36719:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36719:15:0;;;;;-1:-1:-1;;;;;;36719:15:0::1;::::0;;;;;36458:327:::1;36315:477:::0;:::o;36520:254::-:1;36500:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36458:327;;;;36315:477:::0;:::o;32866:300::-;3569:10;32981:4;33075:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33075:34:0;;;;;;;;;;32981:4;;33003:133;;33053:7;;33075:50;;33114:10;33075:38;:50::i;37712:111::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37781:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;37781:34:0::1;37811:4;37781:34;::::0;;37712:111::o;35149:488::-;35267:7;35311;;35300;:18;;35292:62;;;;-1:-1:-1;;;35292:62:0;;7700:2:1;35292:62:0;;;7682:21:1;7739:2;7719:18;;;7712:30;7778:33;7758:18;;;7751:61;7829:18;;35292:62:0;7498:355:1;35292:62:0;35370:17;35365:265;;35405:15;35439:19;35450:7;35439:10;:19::i;:::-;-1:-1:-1;35404:54:0;;-1:-1:-1;35473:14:0;;-1:-1:-1;;;;;;;35473:14:0;35365:265;35523:23;35562:19;35573:7;35562:10;:19::i;:::-;-1:-1:-1;35520:61:0;;-1:-1:-1;35596:22:0;;-1:-1:-1;;;;;;;35596:22:0;35975:332;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36056:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36055:21;36047:61;;;::::0;-1:-1:-1;;;36047:61:0;;6810:2:1;36047:61:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:29;6868:18;;;6861:57;6935:18;;36047:61:0::1;6608:351:1::0;36047:61:0::1;-1:-1:-1::0;;;;;36123:16:0;::::1;36142:1;36123:16:::0;;;:7:::1;:16;::::0;;;;;:20;36119:109:::1;;-1:-1:-1::0;;;;;36199:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36179:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36160:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36119:109:::1;-1:-1:-1::0;;;;;36238:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36238:27:0::1;36261:4;36238:27:::0;;::::1;::::0;;;36276:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36276:23:0::1;::::0;;::::1;::::0;;35975:332::o;39087:161::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;39170:1:::1;39163:6;:8;39155:34;;;::::0;-1:-1:-1;;;39155:34:0;;8060:2:1;39155:34:0::1;::::0;::::1;8042:21:1::0;8099:2;8079:18;;;8072:30;-1:-1:-1;;;8118:18:1;;;8111:43;8171:18;;39155:34:0::1;7858:337:1::0;39155:34:0::1;39200:29;:38:::0;39087:161::o;34478:106::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34548:22:0::1;34571:5;34548:22:::0;;;:16:::1;:22;::::0;;;;:28;;-1:-1:-1;;34548:28:0::1;::::0;;34478:106::o;33974:198::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;34087:5:::1;34080:3;:12;;34046:85;;;;-1:-1:-1::0;;;34046:85:0::1;;;;;;;:::i;:::-;34143:13;:19:::0;33974:198::o;31606:::-;-1:-1:-1;;;;;31696:20:0;;31672:7;31696:20;;;:11;:20;;;;;;;;31692:49;;;-1:-1:-1;;;;;;31725:16:0;;;;;:7;:16;;;;;;;31606:198::o;31692:49::-;-1:-1:-1;;;;;31779:16:0;;;;;;:7;:16;;;;;;31759:37;;:19;:37::i;5264:94::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;5329:21:::1;5347:1;5329:9;:21::i;:::-;5264:94::o:0;31317:87::-;31356:13;31389:7;31382:14;;;;;:::i;48644:458::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;48707:19:::1;48729:24;48747:4;48729:9;:24::i;:::-;48805:4;48789:22;::::0;;;:7:::1;:22;::::0;;;;;48707:46;;-1:-1:-1;48789:39:0::1;::::0;48707:46;48789:26:::1;:39::i;:::-;48780:4;48764:22;::::0;;;:7:::1;:22;::::0;;;;;;:64;;;;48858:33:::1;::::0;48879:11;;48866:7:::1;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;48866:7:::1;-1:-1:-1::0;;;;;48858:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;48858:16:0;;;:20:::1;:33::i;:::-;48839:7;:16;48847:7;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;48847:7:::1;-1:-1:-1::0;;;;;48839:16:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;48839:16:0;;;:52;;;;48943:4:::1;48927:22:::0;;:7:::1;:22:::0;;;;;;:39:::1;::::0;48954:11;48927:26:::1;:39::i;:::-;48918:4;48902:22;::::0;;;:7:::1;:22;::::0;;;;;;:64;;;;48996:33:::1;::::0;49017:11;;49004:7:::1;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;48996:33:::1;48977:7;:16;48985:7;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;48985:7:::1;-1:-1:-1::0;;;;;48977:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;48977:16:0;:52;49069:7:::1;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;49069:7:::1;-1:-1:-1::0;;;;;49045:47:0::1;49062:4;-1:-1:-1::0;;;;;49045:47:0::1;-1:-1:-1::0;;;;;;;;;;;49079:11:0::1;49045:47;;;;1634:25:1::0;;1622:2;1607:18;;1488:177;49045:47:0::1;;;;;;;;48686:416;48644:458::o:0;48440:196::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;48535:21:::1;48575:7;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;48575:7:::1;-1:-1:-1::0;;;;;48567:25:0::1;:61;48624:3;48593:28;48605:16:::0;48593:9;:28:::1;:::i;:::-;:34;;;;:::i;:::-;48567:61;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;48504:132;48440:196:::0;:::o;34308:162::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;34400:11:::1;::::0;:21:::1;::::0;34414:7:::1;34400:21;:::i;:::-;34382:15;:39;34374:48;;;::::0;::::1;;-1:-1:-1::0;;;;;34433:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:27;;-1:-1:-1;;34433:27:0::1;34456:4;34433:27;::::0;;34308:162::o;33174:400::-;33294:4;33316:228;3569:10;33366:7;33388:145;33445:15;33388:145;;;;;;;;;;;;;;;;;3569:10;33388:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33388:34:0;;;;;;;;;;;;:38;:145::i;31812:199::-;31917:4;31939:42;3569:10;31963:9;31974:6;31939:9;:42::i;33815:151::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;33918:17:::1;:40:::0;;-1:-1:-1;;;;;;33918:40:0::1;-1:-1:-1::0;;;;;33918:40:0;;;::::1;::::0;;;::::1;::::0;;33815:151::o;38906:173::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;38985:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;38985:32:0::1;-1:-1:-1::0;;;;38985:32:0;;::::1;;::::0;;39033:38:::1;::::0;::::1;::::0;::::1;::::0;39009:8;1461:14:1;1454:22;1436:41;;1424:2;1409:18;;1296:187;39033:38:0::1;;;;;;;;38906:173:::0;:::o;39444:171::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;39529:15:::1;39521:6;:23;;39513:62;;;::::0;-1:-1:-1;;;39513:62:0;;8797:2:1;39513:62:0::1;::::0;::::1;8779:21:1::0;8836:2;8816:18;;;8809:30;8875:28;8855:18;;;8848:56;8921:18;;39513:62:0::1;8595:350:1::0;39513:62:0::1;39586:10;:19:::0;39444:171::o;57066:351::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;57126:21:::1;:27:::0;;-1:-1:-1;;;;57126:27:0::1;::::0;;-1:-1:-1;;57164:14:0::1;:18:::0;;;57193:10:::1;:14:::0;57148:5:::1;57126:21;57218:16:::0;;;57245:15:::1;:17:::0;;;57273:13:::1;:15:::0;;;57299:13:::1;:15:::0;;;57325:11:::1;:13:::0;57349:23:::1;57364:7;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;57349:23:::1;57383:26;57401:7;4659::::0;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;39256:179;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;39344:16:::1;39336:6;:24;;39328:63;;;::::0;-1:-1:-1;;;39328:63:0;;8797:2:1;39328:63:0::1;::::0;::::1;8779:21:1::0;8836:2;8816:18;;;8809:30;8875:28;8855:18;;;8848:56;8921:18;;39328:63:0::1;8595:350:1::0;39328:63:0::1;39402:14;:23:::0;39256:179::o;37831:110::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37898:27:0::1;37928:5;37898:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;37898:35:0::1;::::0;;37831:110::o;5513:192::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5602:22:0;::::1;5594:73;;;::::0;-1:-1:-1;;;5594:73:0;;9152:2:1;5594:73:0::1;::::0;::::1;9134:21:1::0;9191:2;9171:18;;;9164:30;9230:34;9210:18;;;9203:62;-1:-1:-1;;;9281:18:1;;;9274:36;9327:19;;5594:73:0::1;8950:402:1::0;5594:73:0::1;5678:19;5688:8;5678:9;:19::i;:::-;5513:192:::0;:::o;34824:222::-;4659:7;4686:6;-1:-1:-1;;;;;4686:6:0;3569:10;4833:23;4825:68;;;;-1:-1:-1;;;4825:68:0;;;;;;;:::i;:::-;34880:11:::1;::::0;::::1;;:20;34871:50;;;::::0;-1:-1:-1;;;34871:50:0;;9559:2:1;34871:50:0::1;::::0;::::1;9541:21:1::0;9598:2;9578:18;;;9571:30;-1:-1:-1;;;9617:18:1;;;9610:46;9673:18;;34871:50:0::1;9357:340:1::0;34871:50:0::1;34932:11;:18:::0;;-1:-1:-1;;34932:18:0::1;34946:4;34932:18;::::0;;34975:15:::1;34961:11;:29:::0;;;35001:19:::1;:37:::0;34824:222::o;46384:371::-;-1:-1:-1;;;;;46511:19:0;;46503:68;;;;-1:-1:-1;;;46503:68:0;;9904:2:1;46503:68:0;;;9886:21:1;9943:2;9923:18;;;9916:30;9982:34;9962:18;;;9955:62;-1:-1:-1;;;10033:18:1;;;10026:34;10077:19;;46503:68:0;9702:400:1;46503:68:0;-1:-1:-1;;;;;46590:21:0;;46582:68;;;;-1:-1:-1;;;46582:68:0;;10309:2:1;46582:68:0;;;10291:21:1;10348:2;10328:18;;;10321:30;10387:34;10367:18;;;10360:62;-1:-1:-1;;;10438:18:1;;;10431:32;10480:19;;46582:68:0;10107:398:1;46582:68:0;-1:-1:-1;;;;;46663:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;46715:32;;1634:25:1;;;46715:32:0;;1607:18:1;46715:32:0;;;;;;;46384:371;;;:::o;46763:1669::-;-1:-1:-1;;;;;46885:18:0;;46877:68;;;;-1:-1:-1;;;46877:68:0;;10712:2:1;46877:68:0;;;10694:21:1;10751:2;10731:18;;;10724:30;10790:34;10770:18;;;10763:62;-1:-1:-1;;;10841:18:1;;;10834:35;10886:19;;46877:68:0;10510:401:1;46877:68:0;-1:-1:-1;;;;;46964:16:0;;46956:64;;;;-1:-1:-1;;;46956:64:0;;11118:2:1;46956:64:0;;;11100:21:1;11157:2;11137:18;;;11130:30;11196:34;11176:18;;;11169:62;-1:-1:-1;;;11247:18:1;;;11240:33;11290:19;;46956:64:0;10916:399:1;46956:64:0;47048:1;47039:6;:10;47031:64;;;;-1:-1:-1;;;47031:64:0;;11522:2:1;47031:64:0;;;11504:21:1;11561:2;11541:18;;;11534:30;11600:34;11580:18;;;11573:62;-1:-1:-1;;;11651:18:1;;;11644:39;11700:19;;47031:64:0;11320:405:1;47031:64:0;-1:-1:-1;;;;;47114:22:0;;;;;;:16;:22;;;;;;;;:28;;:22;:28;;;;:58;;-1:-1:-1;;;;;;47146:20:0;;;;;;:16;:20;;;;;;;;:26;;:20;:26;;47114:58;47106:93;;;;-1:-1:-1;;;47106:93:0;;11932:2:1;47106:93:0;;;11914:21:1;11971:2;11951:18;;;11944:30;-1:-1:-1;;;11990:18:1;;;11983:52;12052:18;;47106:93:0;11730:346:1;47106:93:0;47494:28;47525:24;47543:4;47525:9;:24::i;:::-;47560:4;:10;;-1:-1:-1;;47560:10:0;;;47591:13;;47494:55;;-1:-1:-1;;;;;;47591:13:0;;;47587:17;;;;47583:68;;47630:4;:9;;-1:-1:-1;;47630:9:0;47635:4;47630:9;;;47583:68;47727:29;;47793:13;;47690:66;;;;;-1:-1:-1;;;;;47785:21:0;;;47793:13;;47785:21;;;;:57;;;47823:19;47785:57;:91;;;;-1:-1:-1;47860:16:0;;-1:-1:-1;;;47860:16:0;;;;47859:17;47785:91;:129;;;;-1:-1:-1;47893:21:0;;-1:-1:-1;;;47893:21:0;;;;47785:129;47767:251;;;47970:36;47985:20;47970:14;:36::i;:::-;-1:-1:-1;;;;;48211:24:0;;48091:12;48211:24;;;:18;:24;;;;;;48106:4;;48211:24;;;:50;;-1:-1:-1;;;;;;48239:22:0;;;;;;:18;:22;;;;;;;;48211:50;48207:98;;;-1:-1:-1;48288:5:0;48207:98;48383:41;48398:4;48404:2;48408:6;48416:7;48383:14;:41::i;:::-;46866:1566;;;46763:1669;;;:::o;10873:240::-;10993:7;11054:12;11046:6;;;;11038:29;;;;-1:-1:-1;;;11038:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11089:5:0;;;10873:240::o;42750:164::-;42792:7;42813:15;42830;42849:19;:17;:19::i;:::-;42812:56;;-1:-1:-1;42812:56:0;-1:-1:-1;42886:20:0;42812:56;;42886:11;:20::i;:::-;42879:27;;;;42750:164;:::o;9731:98::-;9789:7;9816:5;9820:1;9816;:5;:::i;8594:98::-;8652:7;8679:5;8683:1;8679;:5;:::i;40058:1032::-;40158:7;40180;40202;40224;40246;40268;40290;40312;40349:23;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40349:23:0;40554:20;40566:7;40554:11;:20::i;:::-;40403:4;:20;;40438:4;:9;;40462:4;:15;;40492:4;:16;;40523:4;:17;;40388:186;;;;;;;;;;;;;;;;;;;;;;;;;40586:15;40603:23;40628:12;40644:186;40670:7;40692:4;:9;;;40716:4;:15;;;40746:4;:16;;;40777:4;:17;;;40809:10;:8;:10::i;:::-;40644:11;:186::i;:::-;40585:245;;;;;;40863:7;40885:15;40915:4;40934;:20;;;40969:4;:9;;;40993:4;:15;;;41023:4;:16;;;41054:4;:17;;;40841:241;;;;;;;;;;;;;;;;;;;;40058:1032;;;;;;;;;:::o;5713:173::-;5769:16;5788:6;;-1:-1:-1;;;;;5805:17:0;;;-1:-1:-1;;;;;;5805:17:0;;;;;;5838:40;;5788:6;;;;;;;5838:40;;5769:16;5838:40;5758:128;5713:173;:::o;8975:98::-;9033:7;9060:5;9064:1;9060;:5;:::i;49110:1922::-;29361:16;:23;;-1:-1:-1;;;;29361:23:0;-1:-1:-1;;;29361:23:0;;;49320:13:::1;::::0;49303:11:::1;::::0;29361:23;;49278:56:::1;::::0;:37:::1;::::0;:20;;:24:::1;:37::i;:::-;:41:::0;::::1;:56::i;:::-;49246:88:::0;-1:-1:-1;49369:28:0::1;49246:88:::0;49395:1:::1;49369:25;:28::i;:::-;49345:52:::0;-1:-1:-1;49410:20:0::1;49433:47;:20:::0;49345:52;49433:24:::1;:47::i;:::-;49410:70:::0;-1:-1:-1;49783:21:0::1;49849:30;49410:70:::0;49849:16:::1;:30::i;:::-;49908:13;::::0;49893:12:::1;::::0;49908:20:::1;::::0;49926:1:::1;49908:17;:20::i;:::-;49893:35;;49939:15;50003:4;49993:7;;49974:15;;49957:14;;:32;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;;;:::i;:::-;49939:68:::0;-1:-1:-1;50068:18:0::1;50089:41;:21;50115:14:::0;50089:25:::1;:41::i;:::-;50068:62;;50143:27;50173:40;50205:7;50173:27;50188:11;;50173:10;:14;;:27;;;;:::i;:::-;:31:::0;::::1;:40::i;:::-;50143:70;;50246:46;50287:4;50246:36;50270:11;;50246:19;:23;;:36;;;;:::i;:46::-;50224:68:::0;-1:-1:-1;50305:26:0::1;50334:46;:21;50224:68:::0;50334:25:::1;:46::i;:::-;50305:75;;50464:13;50480:30;50496:13;;50480:11;;:15;;:30;;;;:::i;:::-;50464:46;;50523:25;50551:49;50585:14;;50551:29;50574:5;50551:18;:22;;:29;;;;:::i;:49::-;50619:17;::::0;50611:54:::1;::::0;50523:77;;-1:-1:-1;;;;;;50619:17:0::1;::::0;50611:54;::::1;;;::::0;50523:77;;50619:17:::1;50611:54:::0;50619:17;50611:54;50523:77;50619:17;50611:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;50741:15:0::1;::::0;50678:26:::1;::::0;50707:50:::1;::::0;:29:::1;:18:::0;50730:5;50707:22:::1;:29::i;:50::-;50776:18;::::0;50768:56:::1;::::0;50678:79;;-1:-1:-1;;;;;;50776:18:0::1;::::0;50768:56;::::1;;;::::0;50678:79;;50776:18:::1;50768:56:::0;50776:18;50768:56;50678:79;50776:18;50768:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;50874;50887:21;50910:19;50874:12;:56::i;:::-;50946:78;::::0;;12283:25:1;;;12339:2;12324:18;;12317:34;;;12367:18;;;12360:34;;;50946:78:0::1;::::0;12271:2:1;12256:18;50946:78:0::1;;;;;;;-1:-1:-1::0;;29407:16:0;:24;;-1:-1:-1;;;;29407:24:0;;;-1:-1:-1;;;;;;;;;;49110:1922:0:o;52235:836::-;52391:7;52386:28;;52400:14;:12;:14::i;:::-;-1:-1:-1;;;;;52429:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;52453:22:0;;;;;;:11;:22;;;;;;;;52452:23;52429:46;52425:597;;;52492:48;52514:6;52522:9;52533:6;52492:21;:48::i;:::-;52425:597;;;-1:-1:-1;;;;;52563:19:0;;;;;;:11;:19;;;;;;;;52562:20;:46;;;;-1:-1:-1;;;;;;52586:22:0;;;;;;:11;:22;;;;;;;;52562:46;52558:464;;;52625:46;52645:6;52653:9;52664:6;52625:19;:46::i;52558:464::-;-1:-1:-1;;;;;52694:19:0;;;;;;:11;:19;;;;;;;;52693:20;:47;;;;-1:-1:-1;;;;;;52718:22:0;;;;;;:11;:22;;;;;;;;52717:23;52693:47;52689:333;;;52757:44;52775:6;52783:9;52794:6;52757:17;:44::i;52689:333::-;-1:-1:-1;;;;;52823:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;52846:22:0;;;;;;:11;:22;;;;;;;;52823:45;52819:203;;;52885:48;52907:6;52915:9;52926:6;52885:21;:48::i;52819:203::-;52966:44;52984:6;52992:9;53003:6;52966:17;:44::i;:::-;53039:7;53034:29;;53048:15;46027;;46017:7;:25;46069:21;;46053:13;:37;46118:22;;46101:14;:39;46169:23;;46151:15;:41;46217:19;;46203:11;:33;45973:271;42922:605;43020:7;;43056;;42973;;;;;43074:338;43098:9;:16;43094:20;;43074:338;;;43182:7;43158;:21;43166:9;43176:1;43166:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43166:12:0;43158:21;;;;;;;;;;;;;:31;;:83;;;43234:7;43210;:21;43218:9;43228:1;43218:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43218:12:0;43210:21;;;;;;;;;;;;;:31;43158:83;43136:146;;;43265:7;;43274;;43257:25;;;;;;;42922:605;;:::o;43136:146::-;43307:34;43319:7;:21;43327:9;43337:1;43327:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43327:12:0;43319:21;;;;;;;;;;;;;43307:7;;:11;:34::i;:::-;43297:44;;43366:34;43378:7;:21;43386:9;43396:1;43386:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43386:12:0;43378:21;;;;;;;;;;;;;43366:7;;:11;:34::i;:::-;43356:44;-1:-1:-1;43116:3:0;;;;:::i;:::-;;;;43074:338;;;-1:-1:-1;43448:7:0;;43436;;:20;;:11;:20::i;:::-;43426:7;:30;43422:61;;;43466:7;;43475;;43458:25;;;;;;42922:605;;:::o;43422:61::-;43502:7;;43511;;-1:-1:-1;42922:605:0;-1:-1:-1;42922:605:0:o;41098:752::-;41199:7;41221;41243;41265;41287;41322:12;41337:24;41353:7;41337:15;:24::i;:::-;41322:39;;41372:18;41393:30;41415:7;41393:21;:30::i;:::-;41372:51;;41434:22;41459:31;41482:7;41459:22;:31::i;:::-;41434:56;;41501:23;41527:32;41551:7;41527:23;:32::i;:::-;41501:58;-1:-1:-1;41570:23:0;41596:17;:7;41608:4;41596:11;:17::i;:::-;41570:43;-1:-1:-1;41640:31:0;41570:43;41660:10;41640:19;:31::i;:::-;41624:47;-1:-1:-1;41698:56:0;41738:15;41698:35;41624:47;41718:14;41698:19;:35::i;:::-;:39;;:56::i;:::-;41682:72;41792:4;;-1:-1:-1;41798:10:0;;-1:-1:-1;41810:14:0;;-1:-1:-1;41798:10:0;-1:-1:-1;41098:752:0;;-1:-1:-1;;;41098:752:0:o;41858:884::-;42118:7;;;;42215:24;:7;42227:11;42215;:24::i;:::-;42197:42;-1:-1:-1;42250:12:0;42265:21;:4;42274:11;42265:8;:21::i;:::-;42250:36;-1:-1:-1;42297:18:0;42318:27;:10;42333:11;42318:14;:27::i;:::-;42297:48;-1:-1:-1;42356:19:0;42378:28;:11;42394;42378:15;:28::i;:::-;42356:50;-1:-1:-1;42417:12:0;42432:29;:12;42449:11;42432:16;:29::i;:::-;42417:44;-1:-1:-1;42472:23:0;42498:17;:7;42510:4;42498:11;:17::i;:::-;42472:43;-1:-1:-1;42542:31:0;42472:43;42562:10;42542:19;:31::i;:::-;42526:47;-1:-1:-1;42600:32:0;42526:47;42620:11;42600:19;:32::i;:::-;42584:48;-1:-1:-1;42659:25:0;42584:48;42679:4;42659:19;:25::i;:::-;42703:7;;;;-1:-1:-1;42729:4:0;;-1:-1:-1;41858:884:0;;-1:-1:-1;;;;;;;;;;;41858:884:0:o;9332:98::-;9390:7;9417:5;9421:1;9417;:5;:::i;51040:589::-;51190:16;;;51204:1;51190:16;;;;;;;;51166:21;;51190:16;;;;;;;;;;-1:-1:-1;51190:16:0;51166:40;;51235:4;51217;51222:1;51217:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51217:23:0;;;:7;;;;;;;;;;:23;;;;51261:15;;:22;;;-1:-1:-1;;;51261:22:0;;;;:15;;;;;:20;;:22;;;;;51217:7;;51261:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51251:4;51256:1;51251:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51251:32:0;;;:7;;;;;;;;;:32;51328:15;;51296:62;;51313:4;;51328:15;51346:11;51296:8;:62::i;:::-;51397:15;;:224;;-1:-1:-1;;;51397:224:0;;-1:-1:-1;;;;;51397:15:0;;;;:66;;:224;;51478:11;;51397:15;;51548:4;;51575;;51595:15;;51397:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51641:513;51821:15;;51789:62;;51806:4;;-1:-1:-1;;;;;51821:15:0;51839:11;51789:8;:62::i;:::-;51894:15;;-1:-1:-1;;;;;51894:15:0;:31;51933:9;51966:4;51986:11;51894:15;;52098:7;4659;4686:6;-1:-1:-1;;;;;4686:6:0;;4613:87;52098:7;51894:252;;;;;;-1:-1:-1;;;;;;51894:252:0;;;-1:-1:-1;;;;;14137:15:1;;;51894:252:0;;;14119:34:1;14169:18;;;14162:34;;;;14212:18;;;14205:34;;;;14255:18;;;14248:34;14319:15;;;14298:19;;;14291:44;52120:15:0;14351:19:1;;;14344:35;14053:19;;51894:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;51641:513;;:::o;45450:515::-;45497:7;;:12;:34;;;;-1:-1:-1;45513:13:0;;:18;45497:34;:57;;;;-1:-1:-1;45535:14:0;;:19;45497:57;:81;;;;-1:-1:-1;45558:15:0;;:20;45497:81;45493:94;;;45450:515::o;45493:94::-;45617:7;;;45599:15;:25;45659:13;;;45635:21;:37;45708:14;;;45683:22;:39;45759:15;;;45733:23;:41;45807:11;;;45785:19;:33;-1:-1:-1;45831:11:0;;;;45853:17;;;;45881:19;;;45911:18;;;45940:15;45450:515::o;56225:833::-;56376:15;56406:23;56444:12;56471:23;56509:12;56536:18;56569:19;56603:20;56637:19;56648:7;56637:10;:19::i;:::-;56361:295;;;;;;;;;;;;;;;;56685:28;56705:7;56685;:15;56693:6;-1:-1:-1;;;;;56685:15:0;-1:-1:-1;;;;;56685:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;56667:15:0;;;;;;:7;:15;;;;;;;;:46;;;;56742:7;:15;;;;:28;;56762:7;56742:19;:28::i;:::-;-1:-1:-1;;;;;56724:15:0;;;;;;;:7;:15;;;;;;:46;;;;56802:18;;;;;;;:39;;56825:15;56802:22;:39::i;:::-;-1:-1:-1;;;;;56781:18:0;;;;;;:7;:18;;;;;:60;56852:26;56867:10;56852:14;:26::i;:::-;56889:31;56908:11;56889:18;:31::i;:::-;56931:25;56943:12;56931:11;:25::i;:::-;56967:23;56979:4;56985;56967:11;:23::i;:::-;57023:9;-1:-1:-1;;;;;57006:44:0;57015:6;-1:-1:-1;;;;;57006:44:0;-1:-1:-1;;;;;;;;;;;57034:15:0;57006:44;;;;1634:25:1;;1622:2;1607:18;;1488:177;57006:44:0;;;;;;;;56350:708;;;;;;;;56225:833;;;:::o;55372:845::-;55521:15;55551:23;55589:12;55616:23;55654:12;55681:18;55714:19;55748:20;55782:19;55793:7;55782:10;:19::i;:::-;55506:295;;;;;;;;;;;;;;;;55830:28;55850:7;55830;:15;55838:6;-1:-1:-1;;;;;55830:15:0;-1:-1:-1;;;;;55830:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;55812:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;55890:18;;;;;:7;:18;;;;;:39;;55913:15;55890:22;:39::i;:::-;-1:-1:-1;;;;;55869:18:0;;;;;;:7;:18;;;;;;;;:60;;;;55961:7;:18;;;;:39;;55984:15;55961:22;:39::i;53079:2285::-;53226:15;53256:23;53294:12;53321:23;53359:12;53386:18;53419:19;53453:20;53487:19;53498:7;53487:10;:19::i;:::-;53211:295;;;;;;;;;;;;;;;;53541:10;;53532:7;:19;53523:70;;;;-1:-1:-1;;;53523:70:0;;14903:2:1;53523:70:0;;;14885:21:1;14942:2;14922:18;;;14915:30;14981:34;14961:18;;;14954:62;-1:-1:-1;;;15032:18:1;;;15025:35;15077:19;;53523:70:0;14701:401:1;53523:70:0;53608:11;;;;:18;;:11;:18;;;;:47;;-1:-1:-1;53642:13:0;;-1:-1:-1;;;;;53630:25:0;;;53642:13;;53630:25;;53608:47;:66;;;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;53659:15:0;;;4686:6;;53659:15;;53608:66;:88;;;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;53678:18:0;;;4686:6;;53678:18;;53608:88;53604:1721;;;-1:-1:-1;;;;;53741:15:0;;;;;;:7;:15;;;;;;:28;;53761:7;53741:19;:28::i;:::-;-1:-1:-1;;;;;53723:15:0;;;;;;;:7;:15;;;;;;:46;;;;53805:18;;;;;;;:39;;53828:15;53805:22;:39::i;:::-;-1:-1:-1;;;;;53784:18:0;;;;;;;:7;:18;;;;;;;:60;;;;53864:44;;;;;;-1:-1:-1;;;;;;;;;;;53864:44:0;;;53892:15;1634:25:1;;1622:2;1607:18;;1488:177;53864:44:0;;;;;;;;53943:24;53957:9;53943:13;:24::i;:::-;53604:1721;;;54000:11;;;;:17;;:11;:17;:72;;;;;54057:15;54047:7;;54021:11;;54035:9;54021:23;;;;:::i;:::-;:33;;;;:::i;:::-;:51;54000:72;:101;;;;-1:-1:-1;54088:13:0;;-1:-1:-1;;;;;54076:25:0;;;54088:13;;54076:25;;54000:101;:120;;;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;54105:15:0;;;4686:6;;54105:15;;54000:120;:142;;;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;54124:18:0;;;4686:6;;54124:18;;54000:142;53996:1329;;;-1:-1:-1;;;;;54187:15:0;;;;;;:7;:15;;;;;;:28;;54207:7;54187:19;:28::i;53996:1329::-;4659:7;4686:6;-1:-1:-1;;;;;54443:15:0;;;4686:6;;54443:15;;:37;;-1:-1:-1;4659:7:0;4686:6;-1:-1:-1;;;;;54462:18:0;;;4686:6;;54462:18;54443:37;54439:886;;;-1:-1:-1;;;;;54528:18:0;;;;;;:7;:18;;;;;;:31;;54551:7;54528:22;:31::i;:::-;-1:-1:-1;;;;;54507:18:0;;;;;;;:7;:18;;;;;;:52;;;;54592:15;;;;;;;:28;;54612:7;54592:19;:28::i;:::-;-1:-1:-1;;;;;54574:15:0;;;;;;;:7;:15;;;;;;;;;:46;;;;54645:44;1634:25:1;;;54645:44:0;;;;54574:15;;-1:-1:-1;;;;;;;;;;;54645:44:0;1607:18:1;54645:44:0;;;;;;;54439:886;;;54783:13;;-1:-1:-1;;;;;54770:26:0;;;54783:13;;54770:26;54766:179;;54877:14;;54839:33;54864:7;54839:20;54849:9;54839;:20::i;:::-;:24;;:33::i;:::-;54838:53;;54830:99;;;;-1:-1:-1;;;54830:99:0;;15309:2:1;54830:99:0;;;15291:21:1;;;15328:18;;;15321:30;15387:34;15367:18;;;15360:62;15439:18;;54830:99:0;15107:356:1;54830:99:0;-1:-1:-1;;;;;54979:15:0;;;;;;:7;:15;;;;;;:28;;54999:7;54979:19;:28::i;54439:886::-;53200:2164;;;;;;;;53079:2285;;;:::o;36800:904::-;36951:15;36981:23;37019:12;37046:23;37084:12;37111:18;37144:19;37178:20;37212:19;37223:7;37212:10;:19::i;:::-;36936:295;;;;;;;;;;;;;;;;37260:28;37280:7;37260;:15;37268:6;-1:-1:-1;;;;;37260:15:0;-1:-1:-1;;;;;37260:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37242:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37317:7;:15;;;;:28;;37337:7;37317:19;:28::i;44624:130::-;44688:7;44715:31;44740:5;44715:20;44727:7;;44715;:11;;:20;;;;:::i;44762:174::-;44859:7;44891:37;44922:5;44891:26;44903:13;;44891:7;:11;;:26;;;;:::i;44944:309::-;45070:4;;45042:7;;45070:4;;:10;;:4;:10;45067:120;;45116:59;45169:5;45116:48;45129:33;45148:13;;45129:14;;:18;;:33;;;;:::i;:::-;45116:7;;:11;:48::i;45067:120::-;45207:38;45239:5;45207:27;45219:14;;45207:7;:11;;:27;;;;:::i;45262:178::-;45361:7;45393:39;45426:5;45393:28;45405:15;;45393:7;:11;;:28;;;;:::i;43535:355::-;43598:19;43620:10;:8;:10::i;:::-;43598:32;-1:-1:-1;43641:18:0;43662:27;:10;43598:32;43662:14;:27::i;:::-;43741:4;43725:22;;;;:7;:22;;;;;;43641:48;;-1:-1:-1;43725:38:0;;43641:48;43725:26;:38::i;:::-;43716:4;43700:22;;;;:7;:22;;;;;;;;:63;;;;43778:11;:26;;;;;;43774:108;;;43860:4;43844:22;;;;:7;:22;;;;;;:38;;43871:10;43844:26;:38::i;:::-;43835:4;43819:22;;;;:7;:22;;;;;:63;43587:303;;43535:355;:::o;39716:147::-;39794:7;;:17;;39806:4;39794:11;:17::i;:::-;39784:7;:27;39835:10;;:20;;39850:4;39835:14;:20::i;:::-;39822:10;:33;-1:-1:-1;;39716:147:0:o;238:597:1:-;350:4;379:2;408;397:9;390:21;440:6;434:13;483:6;478:2;467:9;463:18;456:34;508:1;518:140;532:6;529:1;526:13;518:140;;;627:14;;;623:23;;617:30;593:17;;;612:2;589:26;582:66;547:10;;518:140;;;676:6;673:1;670:13;667:91;;;746:1;741:2;732:6;721:9;717:22;713:31;706:42;667:91;-1:-1:-1;819:2:1;798:15;-1:-1:-1;;794:29:1;779:45;;;;826:2;775:54;;238:597;-1:-1:-1;;;238:597:1:o;840:131::-;-1:-1:-1;;;;;915:31:1;;905:42;;895:70;;961:1;958;951:12;976:315;1044:6;1052;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1160:9;1147:23;1179:31;1204:5;1179:31;:::i;:::-;1229:5;1281:2;1266:18;;;;1253:32;;-1:-1:-1;;;976:315:1:o;1670:385::-;1756:6;1764;1772;1780;1833:3;1821:9;1812:7;1808:23;1804:33;1801:53;;;1850:1;1847;1840:12;1801:53;-1:-1:-1;;1873:23:1;;;1943:2;1928:18;;1915:32;;-1:-1:-1;1994:2:1;1979:18;;1966:32;;2045:2;2030:18;2017:32;;-1:-1:-1;1670:385:1;-1:-1:-1;1670:385:1:o;2295:456::-;2372:6;2380;2388;2441:2;2429:9;2420:7;2416:23;2412:32;2409:52;;;2457:1;2454;2447:12;2409:52;2496:9;2483:23;2515:31;2540:5;2515:31;:::i;:::-;2565:5;-1:-1:-1;2622:2:1;2607:18;;2594:32;2635:33;2594:32;2635:33;:::i;:::-;2295:456;;2687:7;;-1:-1:-1;;;2741:2:1;2726:18;;;;2713:32;;2295:456::o;2756:180::-;2815:6;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;-1:-1:-1;2907:23:1;;2756:180;-1:-1:-1;2756:180:1:o;3130:247::-;3189:6;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;3382:160::-;3447:20;;3503:13;;3496:21;3486:32;;3476:60;;3532:1;3529;3522:12;3476:60;3382:160;;;:::o;3547:248::-;3612:6;3620;3673:2;3661:9;3652:7;3648:23;3644:32;3641:52;;;3689:1;3686;3679:12;3641:52;3725:9;3712:23;3702:33;;3754:35;3785:2;3774:9;3770:18;3754:35;:::i;:::-;3744:45;;3547:248;;;;;:::o;4268:180::-;4324:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:52;;;4393:1;4390;4383:12;4345:52;4416:26;4432:9;4416:26;:::i;4453:388::-;4521:6;4529;4582:2;4570:9;4561:7;4557:23;4553:32;4550:52;;;4598:1;4595;4588:12;4550:52;4637:9;4624:23;4656:31;4681:5;4656:31;:::i;:::-;4706:5;-1:-1:-1;4763:2:1;4748:18;;4735:32;4776:33;4735:32;4776:33;:::i;:::-;4828:7;4818:17;;;4453:388;;;;;:::o;4846:380::-;4925:1;4921:12;;;;4968;;;4989:61;;5043:4;5035:6;5031:17;5021:27;;4989:61;5096:2;5088:6;5085:14;5065:18;5062:38;5059:161;;5142:10;5137:3;5133:20;5130:1;5123:31;5177:4;5174:1;5167:15;5205:4;5202:1;5195:15;5059:161;;4846:380;;;:::o;5231:356::-;5433:2;5415:21;;;5452:18;;;5445:30;5511:34;5506:2;5491:18;;5484:62;5578:2;5563:18;;5231:356::o;5592:335::-;5794:2;5776:21;;;5833:2;5813:18;;;5806:30;-1:-1:-1;;;5867:2:1;5852:18;;5845:41;5918:2;5903:18;;5592:335::o;5932:127::-;5993:10;5988:3;5984:20;5981:1;5974:31;6024:4;6021:1;6014:15;6048:4;6045:1;6038:15;6064:128;6104:3;6135:1;6131:6;6128:1;6125:13;6122:39;;;6141:18;;:::i;:::-;-1:-1:-1;6177:9:1;;6064:128::o;6964:127::-;7025:10;7020:3;7016:20;7013:1;7006:31;7056:4;7053:1;7046:15;7080:4;7077:1;7070:15;7096:125;7136:4;7164:1;7161;7158:8;7155:34;;;7169:18;;:::i;:::-;-1:-1:-1;7206:9:1;;7096:125::o;7226:127::-;7287:10;7282:3;7278:20;7275:1;7268:31;7318:4;7315:1;7308:15;7342:4;7339:1;7332:15;7358:135;7397:3;7418:17;;;7415:43;;7438:18;;:::i;:::-;-1:-1:-1;7485:1:1;7474:13;;7358:135::o;8200:168::-;8240:7;8306:1;8302;8298:6;8294:14;8291:1;8288:21;8283:1;8276:9;8269:17;8265:45;8262:71;;;8313:18;;:::i;:::-;-1:-1:-1;8353:9:1;;8200:168::o;8373:217::-;8413:1;8439;8429:132;;8483:10;8478:3;8474:20;8471:1;8464:31;8518:4;8515:1;8508:15;8546:4;8543:1;8536:15;8429:132;-1:-1:-1;8575:9:1;;8373:217::o;12537:251::-;12607:6;12660:2;12648:9;12639:7;12635:23;12631:32;12628:52;;;12676:1;12673;12666:12;12628:52;12708:9;12702:16;12727:31;12752:5;12727:31;:::i;12793:980::-;13055:4;13103:3;13092:9;13088:19;13134:6;13123:9;13116:25;13160:2;13198:6;13193:2;13182:9;13178:18;13171:34;13241:3;13236:2;13225:9;13221:18;13214:31;13265:6;13300;13294:13;13331:6;13323;13316:22;13369:3;13358:9;13354:19;13347:26;;13408:2;13400:6;13396:15;13382:29;;13429:1;13439:195;13453:6;13450:1;13447:13;13439:195;;;13518:13;;-1:-1:-1;;;;;13514:39:1;13502:52;;13609:15;;;;13574:12;;;;13550:1;13468:9;13439:195;;;-1:-1:-1;;;;;;;13690:32:1;;;;13685:2;13670:18;;13663:60;-1:-1:-1;;;13754:3:1;13739:19;13732:35;13651:3;12793:980;-1:-1:-1;;;12793:980:1:o;14390:306::-;14478:6;14486;14494;14547:2;14535:9;14526:7;14522:23;14518:32;14515:52;;;14563:1;14560;14553:12;14515:52;14592:9;14586:16;14576:26;;14642:2;14631:9;14627:18;14621:25;14611:35;;14686:2;14675:9;14671:18;14665:25;14655:35;;14390:306;;;;;:::o
Swarm Source
ipfs://14702fad63eb12cebb63d11d1bcf0d4abc8f91ab302e7b5f95566046429dfd8c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.