ERC-20
Overview
Max Total Supply
1,000,000,000,000 GSHIBA
Holders
545
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
120,035,490.7 GSHIBAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GamblerShiba
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-20 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; // /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // /** * @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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // /** * @dev 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); } // /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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) { 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) { 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) { // 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) { 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) { 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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); 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) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @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. 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) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); 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) { require(b > 0, "SafeMath: modulo by zero"); 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) { 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. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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) { 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) { require(b > 0, errorMessage); return a % b; } } // interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // 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) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping(bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; if (lastIndex != toDeleteIndex) { bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex } // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { return set._values[index]; } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function _values(Set storage set) private view returns (bytes32[] memory) { return set._values; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { return _values(set._inner); } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(AddressSet storage set) internal view returns (address[] memory) { bytes32[] memory store = _values(set._inner); address[] memory result; assembly { result := store } return result; } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(UintSet storage set) internal view returns (uint256[] memory) { bytes32[] memory store = _values(set._inner); uint256[] memory result; assembly { result := store } return result; } } // abstract contract GShibaRNG is Ownable { /** * Tiers * 0 - Platinum * 1 - Gold * 2 - Silver * 3 - Bronze */ using SafeMath for uint256; using EnumerableSet for EnumerableSet.AddressSet; address payable public platinumWinner; address payable public goldWinner; address payable public silverWinner; address payable public bronzeWinner; EnumerableSet.AddressSet platinumSet; EnumerableSet.AddressSet goldSet; EnumerableSet.AddressSet silverSet; EnumerableSet.AddressSet bronzeSet; EnumerableSet.AddressSet[] gamblingWallets; uint256 public platinumMinWeight = 2 * 10 ** 5; uint256 public goldMinWeight = 10 ** 5; uint256 public silverMinWeight = 5 * 10 ** 4; mapping(address => uint256) public gamblingWeights; mapping(address => uint256) public ethAmounts; mapping(address => bool) public excludedFromGambling; mapping(address => bool) public isEthAmountNegative; IUniswapV2Router02 public uniswapV2Router; uint256 public feeMin = 0.1 * 10 ** 18; uint256 public feeMax = 0.3 * 10 ** 18; uint256 internal lastTotalFee; uint256 public ethWeight = 10 ** 10; mapping(address => bool) isGoverner; address[] governers; event newWinnersSelected(uint256 timestamp, address platinumWinner, address goldWinner, address silverWinner, address bronzeWinner, uint256 platinumEthAmount, uint256 goldEthAmount, uint256 silverEthAmount, uint256 bronzeEthAmount, uint256 platinumGShibaAmount, uint256 goldGShibaAmount, uint256 silverGShibaAmount, uint256 bronzeGShibaAmount, uint256 lastTotalFee); modifier onlyGoverner() { require(isGoverner[_msgSender()], "Not governer"); _; } constructor(address payable _initialWinner) public { platinumWinner = _initialWinner; goldWinner = _initialWinner; silverWinner = _initialWinner; bronzeWinner = _initialWinner; platinumSet.add(_initialWinner); goldSet.add(_initialWinner); silverSet.add(_initialWinner); bronzeSet.add(_initialWinner); gamblingWallets.push(platinumSet); gamblingWallets.push(goldSet); gamblingWallets.push(silverSet); gamblingWallets.push(bronzeSet); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network isGoverner[owner()] = true; governers.push(owner()); } function checkTierFromWeight(uint256 weight) public view returns(uint256) { if (weight > platinumMinWeight) { return 0; } if (weight > goldMinWeight) { return 1; } if (weight > silverMinWeight) { return 2; } return 3; } function calcWeight(uint256 ethAmount, uint256 gShibaAmount) public view returns(uint256) { return ethAmount.div(10 ** 13) + gShibaAmount.div(10 ** 13).div(ethWeight); } function addNewWallet(address _account, uint256 tier) internal { gamblingWallets[tier].add(_account); } function removeWallet(address _account, uint256 tier) internal { gamblingWallets[tier].remove(_account); } function addWalletToGamblingList(address _account, uint256 _amount) internal { if (!excludedFromGambling[_account]) { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uint256 ethAmount = uniswapV2Router.getAmountsIn(_amount, path)[0]; uint256 oldWeight = gamblingWeights[_account]; if (isEthAmountNegative[_account]) { if (ethAmount > ethAmounts[_account]) { ethAmounts[_account] = ethAmount - ethAmounts[_account]; isEthAmountNegative[_account] = false; gamblingWeights[_account] = calcWeight(ethAmounts[_account], IERC20(address(this)).balanceOf(_account) + _amount); } else { ethAmounts[_account] = ethAmounts[_account] - ethAmount; gamblingWeights[_account] = 0; } } else { ethAmounts[_account] += ethAmount; gamblingWeights[_account] = calcWeight(ethAmounts[_account], IERC20(address(this)).balanceOf(_account) + _amount); } if (!isEthAmountNegative[_account]) { uint256 oldTier = checkTierFromWeight(oldWeight); uint256 newTier = checkTierFromWeight(gamblingWeights[_account]); if (oldTier != newTier) { removeWallet(_account, oldTier); } addNewWallet(_account, newTier); } } } function removeWalletFromGamblingList(address _account, uint256 _amount) internal { if (!excludedFromGambling[_account]) { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uint256 ethAmount = uniswapV2Router.getAmountsIn(_amount, path)[0]; uint256 oldWeight = gamblingWeights[_account]; if (isEthAmountNegative[_account]) { ethAmounts[_account] += ethAmount; gamblingWeights[_account] = 0; } else if (ethAmounts[_account] >= ethAmount) { ethAmounts[_account] -= ethAmount; gamblingWeights[_account] = calcWeight(ethAmounts[_account], IERC20(address(this)).balanceOf(_account)); } else { ethAmounts[_account] = ethAmount - ethAmounts[_account]; isEthAmountNegative[_account] = true; gamblingWeights[_account] = 0; } uint256 oldTier = checkTierFromWeight(oldWeight); removeWallet(_account, oldTier); } } function rand(uint256 max) private view returns(uint256) { if (max == 1) { return 0; } uint256 seed = uint256(keccak256(abi.encodePacked( block.timestamp + block.difficulty + ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)) + block.gaslimit + ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)) + block.number ))); return (seed - ((seed / (max - 1)) * (max - 1))) + 1; } function checkAndChangeGamblingWinner() internal { uint256 randFee = rand(feeMax - feeMin) + feeMin; if (lastTotalFee >= randFee) { uint256 platinumWinnerIndex = rand(gamblingWallets[0].length()); uint256 goldWinnerIndex = rand(gamblingWallets[1].length()); uint256 silverWinnerIndex = rand(gamblingWallets[2].length()); uint256 bronzeWinnerIndex = rand(gamblingWallets[3].length()); platinumWinner = payable(gamblingWallets[0].at(platinumWinnerIndex)); goldWinner = payable(gamblingWallets[1].at(goldWinnerIndex)); silverWinner = payable(gamblingWallets[2].at(silverWinnerIndex)); bronzeWinner = payable(gamblingWallets[3].at(bronzeWinnerIndex)); emit newWinnersSelected( block.timestamp, platinumWinner, goldWinner, silverWinner, bronzeWinner, ethAmounts[platinumWinner], ethAmounts[goldWinner], ethAmounts[silverWinner], ethAmounts[bronzeWinner], IERC20(address(this)).balanceOf(platinumWinner), IERC20(address(this)).balanceOf(goldWinner), IERC20(address(this)).balanceOf(silverWinner), IERC20(address(this)).balanceOf(bronzeWinner), lastTotalFee ); } } /** * Mutations */ function setEthWeight(uint256 _ethWeight) external onlyGoverner { ethWeight = _ethWeight; } function setTierWeights(uint256 _platinumMin, uint256 _goldMin, uint256 _silverMin) external onlyGoverner { require(_platinumMin > _goldMin && _goldMin > _silverMin, "Weights should be descending order"); platinumMinWeight = _platinumMin; goldMinWeight = _goldMin; silverMinWeight = _silverMin; } function setFeeMinMax(uint256 _feeMin, uint256 _feeMax) external onlyGoverner { require(_feeMin < _feeMax, "feeMin should be smaller than feeMax"); feeMin = _feeMin; feeMax = _feeMax; } function addGoverner(address _governer) public onlyGoverner { if (!isGoverner[_governer]) { isGoverner[_governer] = true; governers.push(_governer); } } function removeGoverner(address _governer) external onlyGoverner { if (isGoverner[_governer]) { isGoverner[_governer] = false; for (uint i = 0; i < governers.length; i ++) { if (governers[i] == _governer) { governers[i] = governers[governers.length - 1]; governers.pop(); break; } } } } function migrate(address _user, uint256 _gShibaAmount) external onlyGoverner returns(bool) { uint256 ethAmount = _gShibaAmount.div(10 ** 10); uint256 weight = calcWeight(ethAmount, _gShibaAmount); uint256 tier = checkTierFromWeight(weight); gamblingWallets[tier].add(_user); ethAmounts[_user] = ethAmount; gamblingWeights[_user] = weight; return true; } } /* Gambler Shiba https://t.me/gshiba_official More info: * Instead of giving equal weights to all users, we give weights based on their purchase token amount and contributed ETH amount * If you sell or transfer tokens to other wallets, you lose your ticket, but as soon as you buy again you regain your ticket * There's no min eligible amount. Even if you buy 1 token, you have the very little chance to get rewarded. */ // // Contract implementation contract GamblerShiba is IERC20, Ownable, GShibaRNG { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) public timestamp; uint256 private eligibleRNG = block.timestamp; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isBlackListedBot; uint256 private _tTotal = 1000000000000 * 10 ** 18; //1,000,000,000,000 uint256 public _coolDown = 30 seconds; string private _name = 'Gambler Shiba'; string private _symbol = 'GSHIBA'; uint8 private _decimals = 18; uint256 public _devFee = 12; uint256 private _previousdevFee = _devFee; address payable private _feeWalletAddress; address public uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; bool public feeEnabled = true; bool public tradingEnabled = false; bool public cooldownEnabled = true; uint256 public _maxTxAmount = _tTotal / 400; uint256 private _numOfTokensToExchangeFordev = 5000000000000000; address public migrator; event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable feeWalletAddress) GShibaRNG(feeWalletAddress) public { _feeWalletAddress = feeWalletAddress; _tOwned[_msgSender()] = _tTotal; // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; // Excluded gshiba, pair, owner from gambling list excludedFromGambling[address(this)] = true; excludedFromGambling[uniswapV2Pair] = true; excludedFromGambling[owner()] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[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 isBlackListed(address account) public view returns (bool) { return _isBlackListedBot[account]; } function setExcludeFromFee(address account, bool excluded) external onlyGoverner { _isExcludedFromFee[account] = excluded; } function addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.'); require(!_isBlackListedBot[account], "Account is already blacklisted"); _isBlackListedBot[account] = true; } function addBotsToBlackList(address[] memory bots) external onlyOwner() { for (uint i = 0; i < bots.length; i++) { _isBlackListedBot[bots[i]] = true; } } function removeBotFromBlackList(address account) external onlyOwner() { require(_isBlackListedBot[account], "Account is not blacklisted"); _isBlackListedBot[account] = false; } function removeAllFee() private { if(_devFee == 0) return; _previousdevFee = _devFee; _devFee = 0; } function restoreAllFee() private { _devFee = _previousdevFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setMaxTxAmount(uint256 maxTx) external onlyOwner() { _maxTxAmount = maxTx; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[recipient], "Go away"); require(!_isBlackListedBot[sender], "Go away"); if(sender != owner() && recipient != owner() && sender != migrator && recipient != migrator) { require(amount <= _maxTxAmount, "Transfer amount exceeds the max amount."); // You can't trade this yet until trading enabled, be patient if (sender == uniswapV2Pair || recipient == uniswapV2Pair) { require(tradingEnabled, "Trading is not enabled"); } } // Cooldown if(cooldownEnabled) { if (sender == uniswapV2Pair ) { // They just bought so add cooldown timestamp[recipient] = block.timestamp.add(_coolDown); } // exclude owner and uniswap if(sender != owner() && sender != uniswapV2Pair) { require(block.timestamp >= timestamp[sender], "Cooldown"); } } if (sender == uniswapV2Pair) { if (recipient != owner() && feeEnabled) { addWalletToGamblingList(recipient, amount); } } // rest of the standard shit below uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeFordev; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the dev wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHTodev(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } // transfer amount, it will take tax and dev fee _tokenTransfer(sender, recipient, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { // 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 sendETHTodev(uint256 amount) private { if (block.timestamp >= eligibleRNG) { checkAndChangeGamblingWinner(); } uint256 winnerReward = amount.div(30); lastTotalFee += winnerReward; platinumWinner.transfer(winnerReward.mul(4)); goldWinner.transfer(winnerReward.mul(3)); silverWinner.transfer(winnerReward.mul(2)); bronzeWinner.transfer(winnerReward.mul(1)); _feeWalletAddress.transfer(amount.mul(2).div(3)); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyGoverner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyGoverner { uint256 contractETHBalance = address(this).balance; sendETHTodev(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; emit SwapEnabledUpdated(enabled); } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 tdev = tAmount.mul(_devFee).div(100); uint256 transferAmount = tAmount.sub(tdev); _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(transferAmount); // Stop wallets from trying to stay in gambling by transferring to other wallets removeWalletFromGamblingList(sender, tAmount); _takedev(tdev); emit Transfer(sender, recipient, transferAmount); } function _takedev(uint256 tdev) private { _tOwned[address(this)] = _tOwned[address(this)].add(tdev); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function allowDex(bool _tradingEnabled) external onlyOwner() { tradingEnabled = _tradingEnabled; eligibleRNG = block.timestamp + 25 minutes; } function toggleCoolDown(bool _cooldownEnabled) external onlyOwner() { cooldownEnabled = _cooldownEnabled; } function toggleFeeEnabled(bool _feeEnabled) external onlyOwner() { // this is a failsafe if something breaks with mappings we can turn off so no-one gets rekt and can still trade feeEnabled = _feeEnabled; } function setMigrationContract(address _migrator) external onlyGoverner { excludedFromGambling[_migrator] = true; _isExcludedFromFee[_migrator] = true; addGoverner(_migrator); migrator = _migrator; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"feeWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"platinumWinner","type":"address"},{"indexed":false,"internalType":"address","name":"goldWinner","type":"address"},{"indexed":false,"internalType":"address","name":"silverWinner","type":"address"},{"indexed":false,"internalType":"address","name":"bronzeWinner","type":"address"},{"indexed":false,"internalType":"uint256","name":"platinumEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"goldEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"silverEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bronzeEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"platinumGShibaAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"goldGShibaAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"silverGShibaAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bronzeGShibaAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastTotalFee","type":"uint256"}],"name":"newWinnersSelected","type":"event"},{"inputs":[],"name":"_coolDown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBotsToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governer","type":"address"}],"name":"addGoverner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"allowDex","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":"bronzeWinner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"gShibaAmount","type":"uint256"}],"name":"calcWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"checkTierFromWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromGambling","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"gamblingWeights","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldMinWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldWinner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isEthAmountNegative","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":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_gShibaAmount","type":"uint256"}],"name":"migrate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platinumMinWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platinumWinner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governer","type":"address"}],"name":"removeGoverner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethWeight","type":"uint256"}],"name":"setEthWeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMin","type":"uint256"},{"internalType":"uint256","name":"_feeMax","type":"uint256"}],"name":"setFeeMinMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_migrator","type":"address"}],"name":"setMigrationContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_platinumMin","type":"uint256"},{"internalType":"uint256","name":"_goldMin","type":"uint256"},{"internalType":"uint256","name":"_silverMin","type":"uint256"}],"name":"setTierWeights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"silverMinWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"silverWinner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","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":"address","name":"","type":"address"}],"name":"timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_cooldownEnabled","type":"bool"}],"name":"toggleCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_feeEnabled","type":"bool"}],"name":"toggleFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
62030d40600e55620186a0600f5561c35060105567016345785d8a0000601655670429d069189e00006017556402540be40060195542601f556c0c9f2c9cd04674edea40000000602255601e60235560c0604052600d60808190526c47616d626c657220536869626160981b60a09081526200007f91602491906200077b565b506040805180820190915260068082526547534849424160d01b6020909201918252620000af916025916200077b565b506026805460ff19166012179055600c6027819055602855602a805461ffff60b81b1960ff60b01b1961ffff60a01b19909216600160a81b1791909116600160b01b1716600160c01b1790556022546101909004602b556611c37937e08000602c553480156200011e57600080fd5b5060405162004ee138038062004ee1833981810160405260208110156200014457600080fd5b505180600062000153620006e1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b03199081166001600160a01b0384169081179092556002805482168317905560038054821683179055600480549091169091179055620001f6600582620006e5602090811b6200256017901c565b5062000212816007620006e560201b620025601790919060201c565b506200022e816009620006e560201b620025601790919060201c565b506200024a81600b620006e560201b620025601790919060201c565b50600d805460018101825560009190915260058054909160020260008051602062004ec183398151915201908290829062000289908290849062000800565b5050600d805460018101825560009190915260078054909450600290910260008051602062004ec18339815191520192508391508290620002ce908290849062000800565b5050600d805460018101825560009190915260098054909450600290910260008051602062004ec1833981519152019250839150829062000313908290849062000800565b5050600d8054600181018255600091909152600b8054909450600290910260008051602062004ec1833981519152019250839150829062000358908290849062000800565b5050601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555060019150601a905060006200039562000705565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055601b620003c962000705565b81546001810183556000928352602083200180546001600160a01b03199081166001600160a01b0393841617909155602980549091169185169190911790556022549150601c906200041a620006e1565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550601560009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048d57600080fd5b505afa158015620004a2573d6000803e3d6000fd5b505050506040513d6020811015620004b957600080fd5b5051601554604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b1580156200050c57600080fd5b505afa15801562000521573d6000803e3d6000fd5b505050506040513d60208110156200053857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200058b57600080fd5b505af1158015620005a0573d6000803e3d6000fd5b505050506040513d6020811015620005b757600080fd5b5051602a80546001600160a01b0319166001600160a01b03909216919091179055600160206000620005e862000705565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081528380528281208054861660019081179091556013948590528382208054871682179055602a549092168152918220805490941681179093556200065b62000705565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200068d620006e1565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6022546040518082815260200191505060405180910390a3506200085a565b3390565b6000620006fc836001600160a01b03841662000714565b90505b92915050565b6000546001600160a01b031690565b600062000722838362000763565b6200075a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620006ff565b506000620006ff565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620007be57805160ff1916838001178555620007ee565b82800160010185558215620007ee579182015b82811115620007ee578251825591602001919060010190620007d1565b50620007fc92915062000843565b5090565b828054828255906000526020600020908101928215620007ee5760005260206000209182015b82811115620007ee57825482559160010191906001019062000826565b5b80821115620007fc576000815560010162000844565b614657806200086a6000396000f3fe6080604052600436106103bc5760003560e01c806396362920116101f2578063d543dbeb1161010d578063f2fde38b116100a0578063f815a8421161006f578063f815a84214610dc4578063faa651cf14610dd9578063fc10805714610dee578063ffbe9f1e14610e21576103c3565b8063f2fde38b14610ca0578063f429389014610cd3578063f42f31bb14610ce8578063f698c04f14610d98576103c3565b8063e47d6060116100dc578063e47d606014610c02578063e99fb70214610c35578063ec28438a14610c4a578063ee8627a714610c74576103c3565b8063d543dbeb14610b47578063dd62ed3e14610b71578063e01af92c14610bac578063e15434ed14610bd8576103c3565b8063ab1f510611610185578063bd68b1e711610154578063bd68b1e714610aa5578063bd9c4ed614610ad8578063d067603a14610aed578063d457ae2114610b1d576103c3565b8063ab1f5106146109c8578063ad68ebf7146109fe578063af9549e014610a37578063bcdd822d14610a72576103c3565b8063a9059cbb116101c1578063a9059cbb14610950578063a985ceef14610989578063aa45026b1461099e578063aab7c4b5146109b3576103c3565b806396362920146108d8578063a3898bb7146108ed578063a457c2d714610902578063a771ebc71461093b576103c3565b806349bd5a5e116102e25780637302dacf1161027557806388b79cec1161024457806388b79cec146108485780638940fd0f1461087b5780638da5cb5b146108ae57806395d89b41146108c3576103c3565b80637302dacf146107b85780637cd07e47146107eb5780637d1db4a5146108005780637ded4d6a14610815576103c3565b80635e14f794116102b15780635e14f794146107285780636ddd17131461075b57806370a0823114610770578063715018a6146107a3576103c3565b806349bd5a5e146106b65780634ada218b146106cb57806351bc3c85146106e05780635342acb4146106f5576103c3565b806320a94f941161035a578063395093511161032957806339509351146105eb5780634303443d14610624578063441603d71461065757806345df94d614610683576103c3565b806320a94f941461055357806323b872dd146105685780632af8bfa6146105ab578063313ce567146105c0576103c3565b8063095ea7b311610396578063095ea7b31461049857806312eabeb1146104e55780631694505e1461051757806318160ddd1461052c576103c3565b806303bd1898146103c857806306fdde03146103f95780630875d81514610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610e36565b604080516001600160a01b039092168252519081900360200190f35b34801561040557600080fd5b5061040e610e45565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610448578181015183820152602001610430565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506103dd610edb565b3480156104a457600080fd5b506104d1600480360360408110156104bb57600080fd5b506001600160a01b038135169060200135610eea565b604080519115158252519081900360200190f35b3480156104f157600080fd5b506105156004803603604081101561050857600080fd5b5080359060200135610f08565b005b34801561052357600080fd5b506103dd610fcb565b34801561053857600080fd5b50610541610fda565b60408051918252519081900360200190f35b34801561055f57600080fd5b50610541610fe0565b34801561057457600080fd5b506104d16004803603606081101561058b57600080fd5b506001600160a01b03813581169160208101359091169060400135610fe6565b3480156105b757600080fd5b5061054161106d565b3480156105cc57600080fd5b506105d5611073565b6040805160ff9092168252519081900360200190f35b3480156105f757600080fd5b506104d16004803603604081101561060e57600080fd5b506001600160a01b03813516906020013561107c565b34801561063057600080fd5b506105156004803603602081101561064757600080fd5b50356001600160a01b03166110ca565b34801561066357600080fd5b506105156004803603602081101561067a57600080fd5b5035151561122c565b34801561068f57600080fd5b50610541600480360360208110156106a657600080fd5b50356001600160a01b03166112f5565b3480156106c257600080fd5b506103dd611307565b3480156106d757600080fd5b506104d1611316565b3480156106ec57600080fd5b5061051561133a565b34801561070157600080fd5b506104d16004803603602081101561071857600080fd5b50356001600160a01b03166113cd565b34801561073457600080fd5b506105156004803603602081101561074b57600080fd5b50356001600160a01b03166113ee565b34801561076757600080fd5b506104d16115a2565b34801561077c57600080fd5b506105416004803603602081101561079357600080fd5b50356001600160a01b03166115c4565b3480156107af57600080fd5b506105156115df565b3480156107c457600080fd5b50610541600480360360208110156107db57600080fd5b50356001600160a01b03166116b5565b3480156107f757600080fd5b506103dd6116c7565b34801561080c57600080fd5b506105416116d6565b34801561082157600080fd5b506105156004803603602081101561083857600080fd5b50356001600160a01b03166116dc565b34801561085457600080fd5b506105156004803603602081101561086b57600080fd5b50356001600160a01b03166117de565b34801561088757600080fd5b506104d16004803603602081101561089e57600080fd5b50356001600160a01b03166118d4565b3480156108ba57600080fd5b506103dd6118e9565b3480156108cf57600080fd5b5061040e6118f8565b3480156108e457600080fd5b50610541611959565b3480156108f957600080fd5b506103dd61195f565b34801561090e57600080fd5b506104d16004803603604081101561092557600080fd5b506001600160a01b03813516906020013561196e565b34801561094757600080fd5b506104d16119d6565b34801561095c57600080fd5b506104d16004803603604081101561097357600080fd5b506001600160a01b0381351690602001356119f9565b34801561099557600080fd5b506104d1611a0d565b3480156109aa57600080fd5b50610541611a32565b3480156109bf57600080fd5b50610541611a38565b3480156109d457600080fd5b50610515600480360360608110156109eb57600080fd5b5080359060208101359060400135611a3e565b348015610a0a57600080fd5b506104d160048036036040811015610a2157600080fd5b506001600160a01b038135169060200135611b0f565b348015610a4357600080fd5b5061051560048036036040811015610a5a57600080fd5b506001600160a01b0381351690602001351515611c19565b348015610a7e57600080fd5b506104d160048036036020811015610a9557600080fd5b50356001600160a01b0316611cbd565b348015610ab157600080fd5b5061051560048036036020811015610ac857600080fd5b50356001600160a01b0316611cd2565b348015610ae457600080fd5b506103dd611dea565b348015610af957600080fd5b5061054160048036036040811015610b1057600080fd5b5080359060200135611df9565b348015610b2957600080fd5b5061054160048036036020811015610b4057600080fd5b5035611e31565b348015610b5357600080fd5b5061051560048036036020811015610b6a57600080fd5b5035611e71565b348015610b7d57600080fd5b5061054160048036036040811015610b9457600080fd5b506001600160a01b0381358116916020013516611f05565b348015610bb857600080fd5b5061051560048036036020811015610bcf57600080fd5b50351515611f30565b348015610be457600080fd5b5061051560048036036020811015610bfb57600080fd5b5035612024565b348015610c0e57600080fd5b506104d160048036036020811015610c2557600080fd5b50356001600160a01b03166120a3565b348015610c4157600080fd5b506105416120c1565b348015610c5657600080fd5b5061051560048036036020811015610c6d57600080fd5b50356120c7565b348015610c8057600080fd5b5061051560048036036020811015610c9757600080fd5b50351515612140565b348015610cac57600080fd5b5061051560048036036020811015610cc357600080fd5b50356001600160a01b0316612202565b348015610cdf57600080fd5b5061051561232e565b348015610cf457600080fd5b5061051560048036036020811015610d0b57600080fd5b810190602081018135640100000000811115610d2657600080fd5b820183602082011115610d3857600080fd5b80359060200191846020830284011164010000000083111715610d5a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506123b2945050505050565b348015610da457600080fd5b5061051560048036036020811015610dbb57600080fd5b5035151561247e565b348015610dd057600080fd5b5061054161253e565b348015610de557600080fd5b50610541612542565b348015610dfa57600080fd5b5061054160048036036020811015610e1157600080fd5b50356001600160a01b0316612548565b348015610e2d57600080fd5b5061054161255a565b6001546001600160a01b031681565b60248054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6003546001600160a01b031681565b6000610efe610ef761257c565b8484612580565b5060015b92915050565b601a6000610f1461257c565b6001600160a01b0316815260208101919091526040016000205460ff16610f82576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b808210610fc05760405162461bcd60e51b81526004018080602001828103825260248152602001806145b26024913960400191505060405180910390fd5b601691909155601755565b6015546001600160a01b031681565b60225490565b60165481565b6000610ff384848461266c565b61106384610fff61257c565b61105e856040518060600160405280602881526020016144f4602891396001600160a01b038a166000908152601d602052604081209061103d61257c565b6001600160a01b031681526020810191909152604001600020549190612bee565b612580565b5060019392505050565b60195481565b60265460ff1690565b6000610efe61108961257c565b8461105e85601d600061109a61257c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612c85565b6110d261257c565b6001600160a01b03166110e36118e9565b6001600160a01b03161461113e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561119a5760405162461bcd60e51b81526004018080602001828103825260248152602001806145456024913960400191505060405180910390fd5b6001600160a01b03811660009081526021602052604090205460ff1615611208576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b61123461257c565b6001600160a01b03166112456118e9565b6001600160a01b0316146112a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff9092169190911790556105dc4201601f55565b60116020526000908152604090205481565b602a546001600160a01b031681565b602a5477010000000000000000000000000000000000000000000000900460ff1681565b601a600061134661257c565b6001600160a01b0316815260208101919091526040016000205460ff166113b4576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b60006113bf306115c4565b90506113ca81612cdf565b50565b6001600160a01b038116600090815260208052604090205460ff165b919050565b601a60006113fa61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611468576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152601a602052604090205460ff16156113ca576001600160a01b0381166000908152601a60205260408120805460ff191690555b601b5481101561159e57816001600160a01b0316601b82815481106114cb57fe5b6000918252602090912001546001600160a01b0316141561159657601b805460001981019081106114f857fe5b600091825260209091200154601b80546001600160a01b03909216918390811061151e57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601b80548061155757fe5b600082815260209020810160001990810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905561159e565b6001016114aa565b5050565b602a547501000000000000000000000000000000000000000000900460ff1681565b6001600160a01b03166000908152601c602052604090205490565b6115e761257c565b6001600160a01b03166115f86118e9565b6001600160a01b031614611653576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b601e6020526000908152604090205481565b602d546001600160a01b031681565b602b5481565b6116e461257c565b6001600160a01b03166116f56118e9565b6001600160a01b031614611750576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526021602052604090205460ff166117bd576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152602160205260409020805460ff19169055565b601a60006117ea61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611858576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526013602090815260408083208054600160ff19918216811790925592805292208054909116909117905561189a81611cd2565b602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60136020526000908152604090205460ff1681565b6000546001600160a01b031690565b60258054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ed15780601f10610ea657610100808354040283529160200191610ed1565b60235481565b6004546001600160a01b031681565b6000610efe61197b61257c565b8461105e856040518060600160405280602581526020016145fd60259139601d60006119a561257c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612bee565b602a54760100000000000000000000000000000000000000000000900460ff1681565b6000610efe611a0661257c565b848461266c565b602a547801000000000000000000000000000000000000000000000000900460ff1681565b60275481565b600f5481565b601a6000611a4a61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611ab8576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b8183118015611ac657508082115b611b015760405162461bcd60e51b81526004018080602001828103825260228152602001806144696022913960400191505060405180910390fd5b600e92909255600f55601055565b6000601a6000611b1d61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611b8b576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611b9c836402540be400612f26565b90506000611baa8285611df9565b90506000611bb782611e31565b9050611be686600d8381548110611bca57fe5b906000526020600020906002020161256090919063ffffffff16565b50506001600160a01b03851660009081526012602090815260408083209490945560119052919091205550600192915050565b601a6000611c2561257c565b6001600160a01b0316815260208101919091526040016000205460ff16611c93576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b60146020526000908152604090205460ff1681565b601a6000611cde61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611d4c576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152601a602052604090205460ff166113ca576001600160a01b03166000818152601a60205260408120805460ff19166001908117909155601b805491820181559091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6002546001600160a01b031681565b601954600090611e1990611e13846509184e72a000612f26565b90612f26565b611e29846509184e72a000612f26565b019392505050565b6000600e54821115611e45575060006113e9565b600f54821115611e57575060016113e9565b601054821115611e69575060026113e9565b506003919050565b611e7961257c565b6001600160a01b0316611e8a6118e9565b6001600160a01b031614611ee5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611eff6064611e1383602254612f8d90919063ffffffff16565b602b5550565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b611f3861257c565b6001600160a01b0316611f496118e9565b6001600160a01b031614611fa4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a8054821515750100000000000000000000000000000000000000000081027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a129181900360200190a150565b601a600061203061257c565b6001600160a01b0316815260208101919091526040016000205460ff1661209e576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b601955565b6001600160a01b031660009081526021602052604090205460ff1690565b600e5481565b6120cf61257c565b6001600160a01b03166120e06118e9565b6001600160a01b03161461213b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602b55565b61214861257c565b6001600160a01b03166121596118e9565b6001600160a01b0316146121b4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a80549115157801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b61220a61257c565b6001600160a01b031661221b6118e9565b6001600160a01b031614612276576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166122bb5760405162461bcd60e51b815260040180806020018281038252602681526020018061448b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b601a600061233a61257c565b6001600160a01b0316815260208101919091526040016000205460ff166123a8576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b476113ca81612fe6565b6123ba61257c565b6001600160a01b03166123cb6118e9565b6001600160a01b031614612426576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b815181101561159e5760016021600084848151811061244457fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612429565b61248661257c565b6001600160a01b03166124976118e9565b6001600160a01b0316146124f2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a8054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b4790565b60105481565b60126020526000908152604090205481565b60175481565b6000612575836001600160a01b038416613167565b9392505050565b3390565b6001600160a01b0383166125c55760405162461bcd60e51b815260040180806020018281038252602481526020018061458e6024913960400191505060405180910390fd5b6001600160a01b03821661260a5760405162461bcd60e51b81526004018080602001828103825260228152602001806144b16022913960400191505060405180910390fd5b6001600160a01b038084166000818152601d6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166126b15760405162461bcd60e51b81526004018080602001828103825260258152602001806145696025913960400191505060405180910390fd5b6001600160a01b0382166126f65760405162461bcd60e51b81526004018080602001828103825260238152602001806144466023913960400191505060405180910390fd5b600081116127355760405162461bcd60e51b815260040180806020018281038252602981526020018061451c6029913960400191505060405180910390fd5b6001600160a01b03821660009081526021602052604090205460ff16156127a3576040805162461bcd60e51b815260206004820152600760248201527f476f206177617900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831660009081526021602052604090205460ff1615612811576040805162461bcd60e51b815260206004820152600760248201527f476f206177617900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6128196118e9565b6001600160a01b0316836001600160a01b031614158015612853575061283d6118e9565b6001600160a01b0316826001600160a01b031614155b801561286d5750602d546001600160a01b03848116911614155b80156128875750602d546001600160a01b03838116911614155b1561296d57602b548111156128cd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145d66027913960400191505060405180910390fd5b602a546001600160a01b03848116911614806128f65750602a546001600160a01b038381169116145b1561296d57602a5477010000000000000000000000000000000000000000000000900460ff1661296d576040805162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f7420656e61626c656400000000000000000000604482015290519081900360640190fd5b602a547801000000000000000000000000000000000000000000000000900460ff1615612a7b57602a546001600160a01b03848116911614156129d2576023546129b8904290612c85565b6001600160a01b0383166000908152601e60205260409020555b6129da6118e9565b6001600160a01b0316836001600160a01b031614158015612a095750602a546001600160a01b03848116911614155b15612a7b576001600160a01b0383166000908152601e6020526040902054421015612a7b576040805162461bcd60e51b815260206004820152600860248201527f436f6f6c646f776e000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b602a546001600160a01b0384811691161415612ae557612a996118e9565b6001600160a01b0316826001600160a01b031614158015612ad65750602a54760100000000000000000000000000000000000000000000900460ff165b15612ae557612ae582826131b1565b6000612af0306115c4565b9050602b548110612b005750602b545b602c54602a54908210159074010000000000000000000000000000000000000000900460ff16158015612b4e5750602a547501000000000000000000000000000000000000000000900460ff165b8015612b575750805b8015612b715750602a546001600160a01b03868116911614155b15612b9157612b7f82612cdf565b478015612b8f57612b8f47612fe6565b505b6001600160a01b038516600090815260208052604090205460019060ff1680612bd157506001600160a01b038516600090815260208052604090205460ff165b15612bda575060005b612be6868686846136dc565b505050505050565b60008184841115612c7d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c42578181015183820152602001612c2a565b50505050905090810190601f168015612c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612575576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b602a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560408051600280825260608083018452926020830190803683370190505090503081600081518110612d4c57fe5b6001600160a01b03928316602091820292909201810191909152601554604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015612db957600080fd5b505afa158015612dcd573d6000803e3d6000fd5b505050506040513d6020811015612de357600080fd5b5051815182906001908110612df457fe5b6001600160a01b039283166020918202929092010152601554612e1a9130911684612580565b6015546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612eb9578181015183820152602001612ea1565b505050509050019650505050505050600060405180830381600087803b158015612ee257600080fd5b505af1158015612ef6573d6000803e3d6000fd5b5050602a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550505050565b6000808211612f7c576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612f8557fe5b049392505050565b600082612f9c57506000610f02565b82820282848281612fa957fe5b04146125755760405162461bcd60e51b81526004018080602001828103825260218152602001806144d36021913960400191505060405180910390fd5b601f544210612ff757612ff7613707565b600061300482601e612f26565b60188054820190556001549091506001600160a01b03166108fc613029836004612f8d565b6040518115909202916000818181858888f19350505050158015613051573d6000803e3d6000fd5b506002546001600160a01b03166108fc61306c836003612f8d565b6040518115909202916000818181858888f19350505050158015613094573d6000803e3d6000fd5b506003546001600160a01b03166108fc6130af836002612f8d565b6040518115909202916000818181858888f193505050501580156130d7573d6000803e3d6000fd5b506004546001600160a01b03166108fc6130f2836001612f8d565b6040518115909202916000818181858888f1935050505015801561311a573d6000803e3d6000fd5b506029546001600160a01b03166108fc61313a6003611e13866002612f8d565b6040518115909202916000818181858888f19350505050158015613162573d6000803e3d6000fd5b505050565b60006131738383613bf1565b6131a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f02565b506000610f02565b6001600160a01b03821660009081526013602052604090205460ff1661159e5760408051600280825260608083018452926020830190803683375050601554604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561324e57600080fd5b505afa158015613262573d6000803e3d6000fd5b505050506040513d602081101561327857600080fd5b50518151829060009061328757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106132b557fe5b6001600160a01b03928316602091820292909201810191909152601554604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101878152602482019283528651604483015286516000969490941694631f00ca749489948994909260649091019185820191028083838c5b8381101561334c578181015183820152602001613334565b50505050905001935050505060006040518083038186803b15801561337057600080fd5b505afa158015613384573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156133cb57600080fd5b81019080805160405193929190846401000000008211156133eb57600080fd5b90830190602082018581111561340057600080fd5b825186602082028301116401000000008211171561341d57600080fd5b82525081516020918201928201910280838360005b8381101561344a578181015183820152602001613432565b5050505090500160405250505060008151811061346357fe5b6020908102919091018101516001600160a01b038616600090815260118352604080822054601490945290205490925060ff16156135cd576001600160a01b03851660009081526012602052604090205482111561359d576001600160a01b03851660008181526012602081815260408084208054880381556014835293819020805460ff19169055918152915481517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452905161357f939192889230926370a0823192602480840193919291829003018186803b15801561354d57600080fd5b505afa158015613561573d6000803e3d6000fd5b505050506040513d602081101561357757600080fd5b505101611df9565b6001600160a01b0386166000908152601160205260409020556135c8565b6001600160a01b03851660009081526012602090815260408083208054869003905560119091528120555b613664565b6001600160a01b038516600081815260126020908152604091829020805486019081905582517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452915161364a93889230926370a08231926024808201939291829003018186803b15801561354d57600080fd5b6001600160a01b0386166000908152601160205260409020555b6001600160a01b03851660009081526014602052604090205460ff166136d557600061368f82611e31565b6001600160a01b038716600090815260116020526040812054919250906136b590611e31565b90508082146136c8576136c88783613c09565b6136d28782613c36565b50505b5050505050565b806136e9576136e9613c47565b6136f4848484613c61565b8061370157613701613d5e565b50505050565b600060165461371b60165460175403613d66565b01905080601854106113ca576000613755613750600d60008154811061373d57fe5b9060005260206000209060020201613e4c565b613d66565b9050600061376d613750600d60018154811061373d57fe5b90506000613785613750600d60028154811061373d57fe5b9050600061379d613750600d60038154811061373d57fe5b90506137cd84600d6000815481106137b157fe5b9060005260206000209060020201613e5790919063ffffffff16565b600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061380583600d6001815481106137b157fe5b600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061383d82600d6002815481106137b157fe5b600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061387581600d6003815481106137b157fe5b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161780825560015460025460035491851660008181526012602090815260408083205494891680845281842054968a168085528285205498909a16808552938290205482517f70a08231000000000000000000000000000000000000000000000000000000008152998a0186905291517fcf6a823b3436846680f79054a7512354af07f077ae2efb646a05db1fa429640e9a429a9699929890979596909492939230926370a08231926024808201939291829003018186803b15801561396a57600080fd5b505afa15801561397e573d6000803e3d6000fd5b505050506040513d602081101561399457600080fd5b5051600254604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301525130916370a08231916024808301926020929190829003018186803b1580156139f857600080fd5b505afa158015613a0c573d6000803e3d6000fd5b505050506040513d6020811015613a2257600080fd5b5051600354604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301525130916370a08231916024808301926020929190829003018186803b158015613a8657600080fd5b505afa158015613a9a573d6000803e3d6000fd5b505050506040513d6020811015613ab057600080fd5b505160048054604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921692820192909252905130916370a08231916024808301926020929190829003018186803b158015613b1857600080fd5b505afa158015613b2c573d6000803e3d6000fd5b505050506040513d6020811015613b4257600080fd5b8101908080519060200190929190505050601854604051808f81526020018e6001600160a01b031681526020018d6001600160a01b031681526020018c6001600160a01b031681526020018b6001600160a01b031681526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b60009081526001919091016020526040902054151590565b61316282600d8381548110613c1a57fe5b9060005260206000209060020201613e6390919063ffffffff16565b61316282600d8381548110611bca57fe5b602754613c5357613c5f565b60278054602855600090555b565b6000613c7d6064611e1360275485612f8d90919063ffffffff16565b90506000613c8b8383613e78565b6001600160a01b0386166000908152601c6020526040902054909150613cb19084613e78565b6001600160a01b038087166000908152601c60205260408082209390935590861681522054613ce09082612c85565b6001600160a01b0385166000908152601c6020526040902055613d038584613ed5565b613d0c82614328565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b602854602755565b60008160011415613d79575060006113e9565b600043423360405160200180826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012060001c81613dba57fe5b0445424160405160200180826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012060001c81613dfa57fe5b0444420101010101604051602001808281526020019150506040516020818303038152906040528051906020012060001c905060018303600184038281613e3d57fe5b04028103600101915050919050565b6000610f0282614355565b60006125758383614359565b6000612575836001600160a01b03841661437d565b600082821115613ecf576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526013602052604090205460ff1661159e5760408051600280825260608083018452926020830190803683375050601554604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613f7257600080fd5b505afa158015613f86573d6000803e3d6000fd5b505050506040513d6020811015613f9c57600080fd5b505181518290600090613fab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613fd957fe5b6001600160a01b03928316602091820292909201810191909152601554604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101878152602482019283528651604483015286516000969490941694631f00ca749489948994909260649091019185820191028083838c5b83811015614070578181015183820152602001614058565b50505050905001935050505060006040518083038186803b15801561409457600080fd5b505afa1580156140a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156140ef57600080fd5b810190808051604051939291908464010000000082111561410f57600080fd5b90830190602082018581111561412457600080fd5b825186602082028301116401000000008211171561414157600080fd5b82525081516020918201928201910280838360005b8381101561416e578181015183820152602001614156565b5050505090500160405250505060008151811061418757fe5b6020908102919091018101516001600160a01b038616600090815260118352604080822054601490945290205490925060ff16156141ed576001600160a01b03851660009081526012602090815260408083208054860190556011909152812055614311565b6001600160a01b03851660009081526012602052604090205482116142d5576001600160a01b03851660008181526012602090815260409182902080548690039081905582517f70a08231000000000000000000000000000000000000000000000000000000008152600481019490945291516142b79330926370a0823192602480840193829003018186803b15801561428657600080fd5b505afa15801561429a573d6000803e3d6000fd5b505050506040513d60208110156142b057600080fd5b5051611df9565b6001600160a01b038616600090815260116020526040902055614311565b6001600160a01b038516600090815260126020908152604080832080548603905560148252808320805460ff1916600117905560119091528120555b600061431c82611e31565b9050612be68682613c09565b306000908152601c60205260409020546143429082612c85565b306000908152601c602052604090205550565b5490565b600082600001828154811061436a57fe5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561443b57835460001980830191018082146143f55760008660000182815481106143b657fe5b90600052602060002001549050808760000184815481106143d357fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061440057fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f02565b6000915050610f0256fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373576569676874732073686f756c642062652064657363656e64696e67206f726465724f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736665654d696e2073686f756c6420626520736d616c6c6572207468616e206665654d61785472616e7366657220616d6f756e74206578636565647320746865206d617820616d6f756e742e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209d13208d7ac5af29d6da40b3f2b2c675758ea70e024fc5137f35907b74a2e2c364736f6c634300060c0033d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5000000000000000000000000cb89c87775a2c2ea854400fc8b1f03b35b0267fa
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c806396362920116101f2578063d543dbeb1161010d578063f2fde38b116100a0578063f815a8421161006f578063f815a84214610dc4578063faa651cf14610dd9578063fc10805714610dee578063ffbe9f1e14610e21576103c3565b8063f2fde38b14610ca0578063f429389014610cd3578063f42f31bb14610ce8578063f698c04f14610d98576103c3565b8063e47d6060116100dc578063e47d606014610c02578063e99fb70214610c35578063ec28438a14610c4a578063ee8627a714610c74576103c3565b8063d543dbeb14610b47578063dd62ed3e14610b71578063e01af92c14610bac578063e15434ed14610bd8576103c3565b8063ab1f510611610185578063bd68b1e711610154578063bd68b1e714610aa5578063bd9c4ed614610ad8578063d067603a14610aed578063d457ae2114610b1d576103c3565b8063ab1f5106146109c8578063ad68ebf7146109fe578063af9549e014610a37578063bcdd822d14610a72576103c3565b8063a9059cbb116101c1578063a9059cbb14610950578063a985ceef14610989578063aa45026b1461099e578063aab7c4b5146109b3576103c3565b806396362920146108d8578063a3898bb7146108ed578063a457c2d714610902578063a771ebc71461093b576103c3565b806349bd5a5e116102e25780637302dacf1161027557806388b79cec1161024457806388b79cec146108485780638940fd0f1461087b5780638da5cb5b146108ae57806395d89b41146108c3576103c3565b80637302dacf146107b85780637cd07e47146107eb5780637d1db4a5146108005780637ded4d6a14610815576103c3565b80635e14f794116102b15780635e14f794146107285780636ddd17131461075b57806370a0823114610770578063715018a6146107a3576103c3565b806349bd5a5e146106b65780634ada218b146106cb57806351bc3c85146106e05780635342acb4146106f5576103c3565b806320a94f941161035a578063395093511161032957806339509351146105eb5780634303443d14610624578063441603d71461065757806345df94d614610683576103c3565b806320a94f941461055357806323b872dd146105685780632af8bfa6146105ab578063313ce567146105c0576103c3565b8063095ea7b311610396578063095ea7b31461049857806312eabeb1146104e55780631694505e1461051757806318160ddd1461052c576103c3565b806303bd1898146103c857806306fdde03146103f95780630875d81514610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610e36565b604080516001600160a01b039092168252519081900360200190f35b34801561040557600080fd5b5061040e610e45565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610448578181015183820152602001610430565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506103dd610edb565b3480156104a457600080fd5b506104d1600480360360408110156104bb57600080fd5b506001600160a01b038135169060200135610eea565b604080519115158252519081900360200190f35b3480156104f157600080fd5b506105156004803603604081101561050857600080fd5b5080359060200135610f08565b005b34801561052357600080fd5b506103dd610fcb565b34801561053857600080fd5b50610541610fda565b60408051918252519081900360200190f35b34801561055f57600080fd5b50610541610fe0565b34801561057457600080fd5b506104d16004803603606081101561058b57600080fd5b506001600160a01b03813581169160208101359091169060400135610fe6565b3480156105b757600080fd5b5061054161106d565b3480156105cc57600080fd5b506105d5611073565b6040805160ff9092168252519081900360200190f35b3480156105f757600080fd5b506104d16004803603604081101561060e57600080fd5b506001600160a01b03813516906020013561107c565b34801561063057600080fd5b506105156004803603602081101561064757600080fd5b50356001600160a01b03166110ca565b34801561066357600080fd5b506105156004803603602081101561067a57600080fd5b5035151561122c565b34801561068f57600080fd5b50610541600480360360208110156106a657600080fd5b50356001600160a01b03166112f5565b3480156106c257600080fd5b506103dd611307565b3480156106d757600080fd5b506104d1611316565b3480156106ec57600080fd5b5061051561133a565b34801561070157600080fd5b506104d16004803603602081101561071857600080fd5b50356001600160a01b03166113cd565b34801561073457600080fd5b506105156004803603602081101561074b57600080fd5b50356001600160a01b03166113ee565b34801561076757600080fd5b506104d16115a2565b34801561077c57600080fd5b506105416004803603602081101561079357600080fd5b50356001600160a01b03166115c4565b3480156107af57600080fd5b506105156115df565b3480156107c457600080fd5b50610541600480360360208110156107db57600080fd5b50356001600160a01b03166116b5565b3480156107f757600080fd5b506103dd6116c7565b34801561080c57600080fd5b506105416116d6565b34801561082157600080fd5b506105156004803603602081101561083857600080fd5b50356001600160a01b03166116dc565b34801561085457600080fd5b506105156004803603602081101561086b57600080fd5b50356001600160a01b03166117de565b34801561088757600080fd5b506104d16004803603602081101561089e57600080fd5b50356001600160a01b03166118d4565b3480156108ba57600080fd5b506103dd6118e9565b3480156108cf57600080fd5b5061040e6118f8565b3480156108e457600080fd5b50610541611959565b3480156108f957600080fd5b506103dd61195f565b34801561090e57600080fd5b506104d16004803603604081101561092557600080fd5b506001600160a01b03813516906020013561196e565b34801561094757600080fd5b506104d16119d6565b34801561095c57600080fd5b506104d16004803603604081101561097357600080fd5b506001600160a01b0381351690602001356119f9565b34801561099557600080fd5b506104d1611a0d565b3480156109aa57600080fd5b50610541611a32565b3480156109bf57600080fd5b50610541611a38565b3480156109d457600080fd5b50610515600480360360608110156109eb57600080fd5b5080359060208101359060400135611a3e565b348015610a0a57600080fd5b506104d160048036036040811015610a2157600080fd5b506001600160a01b038135169060200135611b0f565b348015610a4357600080fd5b5061051560048036036040811015610a5a57600080fd5b506001600160a01b0381351690602001351515611c19565b348015610a7e57600080fd5b506104d160048036036020811015610a9557600080fd5b50356001600160a01b0316611cbd565b348015610ab157600080fd5b5061051560048036036020811015610ac857600080fd5b50356001600160a01b0316611cd2565b348015610ae457600080fd5b506103dd611dea565b348015610af957600080fd5b5061054160048036036040811015610b1057600080fd5b5080359060200135611df9565b348015610b2957600080fd5b5061054160048036036020811015610b4057600080fd5b5035611e31565b348015610b5357600080fd5b5061051560048036036020811015610b6a57600080fd5b5035611e71565b348015610b7d57600080fd5b5061054160048036036040811015610b9457600080fd5b506001600160a01b0381358116916020013516611f05565b348015610bb857600080fd5b5061051560048036036020811015610bcf57600080fd5b50351515611f30565b348015610be457600080fd5b5061051560048036036020811015610bfb57600080fd5b5035612024565b348015610c0e57600080fd5b506104d160048036036020811015610c2557600080fd5b50356001600160a01b03166120a3565b348015610c4157600080fd5b506105416120c1565b348015610c5657600080fd5b5061051560048036036020811015610c6d57600080fd5b50356120c7565b348015610c8057600080fd5b5061051560048036036020811015610c9757600080fd5b50351515612140565b348015610cac57600080fd5b5061051560048036036020811015610cc357600080fd5b50356001600160a01b0316612202565b348015610cdf57600080fd5b5061051561232e565b348015610cf457600080fd5b5061051560048036036020811015610d0b57600080fd5b810190602081018135640100000000811115610d2657600080fd5b820183602082011115610d3857600080fd5b80359060200191846020830284011164010000000083111715610d5a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506123b2945050505050565b348015610da457600080fd5b5061051560048036036020811015610dbb57600080fd5b5035151561247e565b348015610dd057600080fd5b5061054161253e565b348015610de557600080fd5b50610541612542565b348015610dfa57600080fd5b5061054160048036036020811015610e1157600080fd5b50356001600160a01b0316612548565b348015610e2d57600080fd5b5061054161255a565b6001546001600160a01b031681565b60248054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6003546001600160a01b031681565b6000610efe610ef761257c565b8484612580565b5060015b92915050565b601a6000610f1461257c565b6001600160a01b0316815260208101919091526040016000205460ff16610f82576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b808210610fc05760405162461bcd60e51b81526004018080602001828103825260248152602001806145b26024913960400191505060405180910390fd5b601691909155601755565b6015546001600160a01b031681565b60225490565b60165481565b6000610ff384848461266c565b61106384610fff61257c565b61105e856040518060600160405280602881526020016144f4602891396001600160a01b038a166000908152601d602052604081209061103d61257c565b6001600160a01b031681526020810191909152604001600020549190612bee565b612580565b5060019392505050565b60195481565b60265460ff1690565b6000610efe61108961257c565b8461105e85601d600061109a61257c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612c85565b6110d261257c565b6001600160a01b03166110e36118e9565b6001600160a01b03161461113e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561119a5760405162461bcd60e51b81526004018080602001828103825260248152602001806145456024913960400191505060405180910390fd5b6001600160a01b03811660009081526021602052604090205460ff1615611208576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b61123461257c565b6001600160a01b03166112456118e9565b6001600160a01b0316146112a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff9092169190911790556105dc4201601f55565b60116020526000908152604090205481565b602a546001600160a01b031681565b602a5477010000000000000000000000000000000000000000000000900460ff1681565b601a600061134661257c565b6001600160a01b0316815260208101919091526040016000205460ff166113b4576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b60006113bf306115c4565b90506113ca81612cdf565b50565b6001600160a01b038116600090815260208052604090205460ff165b919050565b601a60006113fa61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611468576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152601a602052604090205460ff16156113ca576001600160a01b0381166000908152601a60205260408120805460ff191690555b601b5481101561159e57816001600160a01b0316601b82815481106114cb57fe5b6000918252602090912001546001600160a01b0316141561159657601b805460001981019081106114f857fe5b600091825260209091200154601b80546001600160a01b03909216918390811061151e57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601b80548061155757fe5b600082815260209020810160001990810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905561159e565b6001016114aa565b5050565b602a547501000000000000000000000000000000000000000000900460ff1681565b6001600160a01b03166000908152601c602052604090205490565b6115e761257c565b6001600160a01b03166115f86118e9565b6001600160a01b031614611653576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b601e6020526000908152604090205481565b602d546001600160a01b031681565b602b5481565b6116e461257c565b6001600160a01b03166116f56118e9565b6001600160a01b031614611750576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526021602052604090205460ff166117bd576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152602160205260409020805460ff19169055565b601a60006117ea61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611858576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526013602090815260408083208054600160ff19918216811790925592805292208054909116909117905561189a81611cd2565b602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60136020526000908152604090205460ff1681565b6000546001600160a01b031690565b60258054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ed15780601f10610ea657610100808354040283529160200191610ed1565b60235481565b6004546001600160a01b031681565b6000610efe61197b61257c565b8461105e856040518060600160405280602581526020016145fd60259139601d60006119a561257c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612bee565b602a54760100000000000000000000000000000000000000000000900460ff1681565b6000610efe611a0661257c565b848461266c565b602a547801000000000000000000000000000000000000000000000000900460ff1681565b60275481565b600f5481565b601a6000611a4a61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611ab8576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b8183118015611ac657508082115b611b015760405162461bcd60e51b81526004018080602001828103825260228152602001806144696022913960400191505060405180910390fd5b600e92909255600f55601055565b6000601a6000611b1d61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611b8b576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611b9c836402540be400612f26565b90506000611baa8285611df9565b90506000611bb782611e31565b9050611be686600d8381548110611bca57fe5b906000526020600020906002020161256090919063ffffffff16565b50506001600160a01b03851660009081526012602090815260408083209490945560119052919091205550600192915050565b601a6000611c2561257c565b6001600160a01b0316815260208101919091526040016000205460ff16611c93576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b60146020526000908152604090205460ff1681565b601a6000611cde61257c565b6001600160a01b0316815260208101919091526040016000205460ff16611d4c576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152601a602052604090205460ff166113ca576001600160a01b03166000818152601a60205260408120805460ff19166001908117909155601b805491820181559091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6002546001600160a01b031681565b601954600090611e1990611e13846509184e72a000612f26565b90612f26565b611e29846509184e72a000612f26565b019392505050565b6000600e54821115611e45575060006113e9565b600f54821115611e57575060016113e9565b601054821115611e69575060026113e9565b506003919050565b611e7961257c565b6001600160a01b0316611e8a6118e9565b6001600160a01b031614611ee5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611eff6064611e1383602254612f8d90919063ffffffff16565b602b5550565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b611f3861257c565b6001600160a01b0316611f496118e9565b6001600160a01b031614611fa4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a8054821515750100000000000000000000000000000000000000000081027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a129181900360200190a150565b601a600061203061257c565b6001600160a01b0316815260208101919091526040016000205460ff1661209e576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b601955565b6001600160a01b031660009081526021602052604090205460ff1690565b600e5481565b6120cf61257c565b6001600160a01b03166120e06118e9565b6001600160a01b03161461213b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602b55565b61214861257c565b6001600160a01b03166121596118e9565b6001600160a01b0316146121b4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a80549115157801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b61220a61257c565b6001600160a01b031661221b6118e9565b6001600160a01b031614612276576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166122bb5760405162461bcd60e51b815260040180806020018281038252602681526020018061448b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b601a600061233a61257c565b6001600160a01b0316815260208101919091526040016000205460ff166123a8576040805162461bcd60e51b815260206004820152600c60248201527f4e6f7420676f7665726e65720000000000000000000000000000000000000000604482015290519081900360640190fd5b476113ca81612fe6565b6123ba61257c565b6001600160a01b03166123cb6118e9565b6001600160a01b031614612426576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b815181101561159e5760016021600084848151811061244457fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612429565b61248661257c565b6001600160a01b03166124976118e9565b6001600160a01b0316146124f2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b602a8054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b4790565b60105481565b60126020526000908152604090205481565b60175481565b6000612575836001600160a01b038416613167565b9392505050565b3390565b6001600160a01b0383166125c55760405162461bcd60e51b815260040180806020018281038252602481526020018061458e6024913960400191505060405180910390fd5b6001600160a01b03821661260a5760405162461bcd60e51b81526004018080602001828103825260228152602001806144b16022913960400191505060405180910390fd5b6001600160a01b038084166000818152601d6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166126b15760405162461bcd60e51b81526004018080602001828103825260258152602001806145696025913960400191505060405180910390fd5b6001600160a01b0382166126f65760405162461bcd60e51b81526004018080602001828103825260238152602001806144466023913960400191505060405180910390fd5b600081116127355760405162461bcd60e51b815260040180806020018281038252602981526020018061451c6029913960400191505060405180910390fd5b6001600160a01b03821660009081526021602052604090205460ff16156127a3576040805162461bcd60e51b815260206004820152600760248201527f476f206177617900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831660009081526021602052604090205460ff1615612811576040805162461bcd60e51b815260206004820152600760248201527f476f206177617900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6128196118e9565b6001600160a01b0316836001600160a01b031614158015612853575061283d6118e9565b6001600160a01b0316826001600160a01b031614155b801561286d5750602d546001600160a01b03848116911614155b80156128875750602d546001600160a01b03838116911614155b1561296d57602b548111156128cd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145d66027913960400191505060405180910390fd5b602a546001600160a01b03848116911614806128f65750602a546001600160a01b038381169116145b1561296d57602a5477010000000000000000000000000000000000000000000000900460ff1661296d576040805162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f7420656e61626c656400000000000000000000604482015290519081900360640190fd5b602a547801000000000000000000000000000000000000000000000000900460ff1615612a7b57602a546001600160a01b03848116911614156129d2576023546129b8904290612c85565b6001600160a01b0383166000908152601e60205260409020555b6129da6118e9565b6001600160a01b0316836001600160a01b031614158015612a095750602a546001600160a01b03848116911614155b15612a7b576001600160a01b0383166000908152601e6020526040902054421015612a7b576040805162461bcd60e51b815260206004820152600860248201527f436f6f6c646f776e000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b602a546001600160a01b0384811691161415612ae557612a996118e9565b6001600160a01b0316826001600160a01b031614158015612ad65750602a54760100000000000000000000000000000000000000000000900460ff165b15612ae557612ae582826131b1565b6000612af0306115c4565b9050602b548110612b005750602b545b602c54602a54908210159074010000000000000000000000000000000000000000900460ff16158015612b4e5750602a547501000000000000000000000000000000000000000000900460ff165b8015612b575750805b8015612b715750602a546001600160a01b03868116911614155b15612b9157612b7f82612cdf565b478015612b8f57612b8f47612fe6565b505b6001600160a01b038516600090815260208052604090205460019060ff1680612bd157506001600160a01b038516600090815260208052604090205460ff165b15612bda575060005b612be6868686846136dc565b505050505050565b60008184841115612c7d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c42578181015183820152602001612c2a565b50505050905090810190601f168015612c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612575576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b602a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560408051600280825260608083018452926020830190803683370190505090503081600081518110612d4c57fe5b6001600160a01b03928316602091820292909201810191909152601554604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015612db957600080fd5b505afa158015612dcd573d6000803e3d6000fd5b505050506040513d6020811015612de357600080fd5b5051815182906001908110612df457fe5b6001600160a01b039283166020918202929092010152601554612e1a9130911684612580565b6015546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612eb9578181015183820152602001612ea1565b505050509050019650505050505050600060405180830381600087803b158015612ee257600080fd5b505af1158015612ef6573d6000803e3d6000fd5b5050602a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550505050565b6000808211612f7c576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612f8557fe5b049392505050565b600082612f9c57506000610f02565b82820282848281612fa957fe5b04146125755760405162461bcd60e51b81526004018080602001828103825260218152602001806144d36021913960400191505060405180910390fd5b601f544210612ff757612ff7613707565b600061300482601e612f26565b60188054820190556001549091506001600160a01b03166108fc613029836004612f8d565b6040518115909202916000818181858888f19350505050158015613051573d6000803e3d6000fd5b506002546001600160a01b03166108fc61306c836003612f8d565b6040518115909202916000818181858888f19350505050158015613094573d6000803e3d6000fd5b506003546001600160a01b03166108fc6130af836002612f8d565b6040518115909202916000818181858888f193505050501580156130d7573d6000803e3d6000fd5b506004546001600160a01b03166108fc6130f2836001612f8d565b6040518115909202916000818181858888f1935050505015801561311a573d6000803e3d6000fd5b506029546001600160a01b03166108fc61313a6003611e13866002612f8d565b6040518115909202916000818181858888f19350505050158015613162573d6000803e3d6000fd5b505050565b60006131738383613bf1565b6131a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f02565b506000610f02565b6001600160a01b03821660009081526013602052604090205460ff1661159e5760408051600280825260608083018452926020830190803683375050601554604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561324e57600080fd5b505afa158015613262573d6000803e3d6000fd5b505050506040513d602081101561327857600080fd5b50518151829060009061328757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106132b557fe5b6001600160a01b03928316602091820292909201810191909152601554604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101878152602482019283528651604483015286516000969490941694631f00ca749489948994909260649091019185820191028083838c5b8381101561334c578181015183820152602001613334565b50505050905001935050505060006040518083038186803b15801561337057600080fd5b505afa158015613384573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156133cb57600080fd5b81019080805160405193929190846401000000008211156133eb57600080fd5b90830190602082018581111561340057600080fd5b825186602082028301116401000000008211171561341d57600080fd5b82525081516020918201928201910280838360005b8381101561344a578181015183820152602001613432565b5050505090500160405250505060008151811061346357fe5b6020908102919091018101516001600160a01b038616600090815260118352604080822054601490945290205490925060ff16156135cd576001600160a01b03851660009081526012602052604090205482111561359d576001600160a01b03851660008181526012602081815260408084208054880381556014835293819020805460ff19169055918152915481517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452905161357f939192889230926370a0823192602480840193919291829003018186803b15801561354d57600080fd5b505afa158015613561573d6000803e3d6000fd5b505050506040513d602081101561357757600080fd5b505101611df9565b6001600160a01b0386166000908152601160205260409020556135c8565b6001600160a01b03851660009081526012602090815260408083208054869003905560119091528120555b613664565b6001600160a01b038516600081815260126020908152604091829020805486019081905582517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452915161364a93889230926370a08231926024808201939291829003018186803b15801561354d57600080fd5b6001600160a01b0386166000908152601160205260409020555b6001600160a01b03851660009081526014602052604090205460ff166136d557600061368f82611e31565b6001600160a01b038716600090815260116020526040812054919250906136b590611e31565b90508082146136c8576136c88783613c09565b6136d28782613c36565b50505b5050505050565b806136e9576136e9613c47565b6136f4848484613c61565b8061370157613701613d5e565b50505050565b600060165461371b60165460175403613d66565b01905080601854106113ca576000613755613750600d60008154811061373d57fe5b9060005260206000209060020201613e4c565b613d66565b9050600061376d613750600d60018154811061373d57fe5b90506000613785613750600d60028154811061373d57fe5b9050600061379d613750600d60038154811061373d57fe5b90506137cd84600d6000815481106137b157fe5b9060005260206000209060020201613e5790919063ffffffff16565b600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061380583600d6001815481106137b157fe5b600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061383d82600d6002815481106137b157fe5b600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061387581600d6003815481106137b157fe5b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161780825560015460025460035491851660008181526012602090815260408083205494891680845281842054968a168085528285205498909a16808552938290205482517f70a08231000000000000000000000000000000000000000000000000000000008152998a0186905291517fcf6a823b3436846680f79054a7512354af07f077ae2efb646a05db1fa429640e9a429a9699929890979596909492939230926370a08231926024808201939291829003018186803b15801561396a57600080fd5b505afa15801561397e573d6000803e3d6000fd5b505050506040513d602081101561399457600080fd5b5051600254604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301525130916370a08231916024808301926020929190829003018186803b1580156139f857600080fd5b505afa158015613a0c573d6000803e3d6000fd5b505050506040513d6020811015613a2257600080fd5b5051600354604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301525130916370a08231916024808301926020929190829003018186803b158015613a8657600080fd5b505afa158015613a9a573d6000803e3d6000fd5b505050506040513d6020811015613ab057600080fd5b505160048054604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0390921692820192909252905130916370a08231916024808301926020929190829003018186803b158015613b1857600080fd5b505afa158015613b2c573d6000803e3d6000fd5b505050506040513d6020811015613b4257600080fd5b8101908080519060200190929190505050601854604051808f81526020018e6001600160a01b031681526020018d6001600160a01b031681526020018c6001600160a01b031681526020018b6001600160a01b031681526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b60009081526001919091016020526040902054151590565b61316282600d8381548110613c1a57fe5b9060005260206000209060020201613e6390919063ffffffff16565b61316282600d8381548110611bca57fe5b602754613c5357613c5f565b60278054602855600090555b565b6000613c7d6064611e1360275485612f8d90919063ffffffff16565b90506000613c8b8383613e78565b6001600160a01b0386166000908152601c6020526040902054909150613cb19084613e78565b6001600160a01b038087166000908152601c60205260408082209390935590861681522054613ce09082612c85565b6001600160a01b0385166000908152601c6020526040902055613d038584613ed5565b613d0c82614328565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b602854602755565b60008160011415613d79575060006113e9565b600043423360405160200180826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012060001c81613dba57fe5b0445424160405160200180826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012060001c81613dfa57fe5b0444420101010101604051602001808281526020019150506040516020818303038152906040528051906020012060001c905060018303600184038281613e3d57fe5b04028103600101915050919050565b6000610f0282614355565b60006125758383614359565b6000612575836001600160a01b03841661437d565b600082821115613ecf576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526013602052604090205460ff1661159e5760408051600280825260608083018452926020830190803683375050601554604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613f7257600080fd5b505afa158015613f86573d6000803e3d6000fd5b505050506040513d6020811015613f9c57600080fd5b505181518290600090613fab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613fd957fe5b6001600160a01b03928316602091820292909201810191909152601554604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101878152602482019283528651604483015286516000969490941694631f00ca749489948994909260649091019185820191028083838c5b83811015614070578181015183820152602001614058565b50505050905001935050505060006040518083038186803b15801561409457600080fd5b505afa1580156140a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156140ef57600080fd5b810190808051604051939291908464010000000082111561410f57600080fd5b90830190602082018581111561412457600080fd5b825186602082028301116401000000008211171561414157600080fd5b82525081516020918201928201910280838360005b8381101561416e578181015183820152602001614156565b5050505090500160405250505060008151811061418757fe5b6020908102919091018101516001600160a01b038616600090815260118352604080822054601490945290205490925060ff16156141ed576001600160a01b03851660009081526012602090815260408083208054860190556011909152812055614311565b6001600160a01b03851660009081526012602052604090205482116142d5576001600160a01b03851660008181526012602090815260409182902080548690039081905582517f70a08231000000000000000000000000000000000000000000000000000000008152600481019490945291516142b79330926370a0823192602480840193829003018186803b15801561428657600080fd5b505afa15801561429a573d6000803e3d6000fd5b505050506040513d60208110156142b057600080fd5b5051611df9565b6001600160a01b038616600090815260116020526040902055614311565b6001600160a01b038516600090815260126020908152604080832080548603905560148252808320805460ff1916600117905560119091528120555b600061431c82611e31565b9050612be68682613c09565b306000908152601c60205260409020546143429082612c85565b306000908152601c602052604090205550565b5490565b600082600001828154811061436a57fe5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561443b57835460001980830191018082146143f55760008660000182815481106143b657fe5b90600052602060002001549050808760000184815481106143d357fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061440057fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f02565b6000915050610f0256fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373576569676874732073686f756c642062652064657363656e64696e67206f726465724f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736665654d696e2073686f756c6420626520736d616c6c6572207468616e206665654d61785472616e7366657220616d6f756e74206578636565647320746865206d617820616d6f756e742e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209d13208d7ac5af29d6da40b3f2b2c675758ea70e024fc5137f35907b74a2e2c364736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cb89c87775a2c2ea854400fc8b1f03b35b0267fa
-----Decoded View---------------
Arg [0] : feeWalletAddress (address): 0xCB89c87775a2c2ea854400Fc8B1f03B35B0267Fa
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb89c87775a2c2ea854400fc8b1f03b35b0267fa
Deployed Bytecode Sourcemap
43169:12603:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32863:37;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;32863:37:0;;;;;;;;;;;;;;45393:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32947:35;;;;;;;;;;;;;:::i;46224:161::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;46224:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;41185:219;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41185:219:0;;;;;;;:::i;:::-;;33633:41;;;;;;;;;;;;;:::i;45670:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;33683:38;;;;;;;;;;;;;:::i;46393:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;46393:313:0;;;;;;;;;;;;;;;;;:::i;33811:35::-;;;;;;;;;;;;;:::i;45579:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46714:218;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;46714:218:0;;;;;;;;:::i;47494:311::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47494:311:0;-1:-1:-1;;;;;47494:311:0;;:::i;54983:165::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54983:165:0;;;;:::i;33405:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33405:50:0;-1:-1:-1;;;;;33405:50:0;;:::i;44041:28::-;;;;;;;;;;;;;:::i;44183:34::-;;;;;;;;;;;;;:::i;53181:157::-;;;;;;;;;;;;;:::i;48446:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48446:123:0;-1:-1:-1;;;;;48446:123:0;;:::i;41621:447::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41621:447:0;-1:-1:-1;;;;;41621:447:0;;:::i;44104:30::-;;;;;;;;;;;;;:::i;45773:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45773:117:0;-1:-1:-1;;;;;45773:117:0;;:::i;2647:148::-;;;;;;;;;;;;;:::i;43422:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43422:45:0;-1:-1:-1;;;;;43422:45:0;;:::i;44389:23::-;;;;;;;;;;;;;:::i;44267:43::-;;;;;;;;;;;;;:::i;48014:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48014:199:0;-1:-1:-1;;;;;48014:199:0;;:::i;55530:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;55530:239:0;-1:-1:-1;;;;;55530:239:0;;:::i;33514:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33514:52:0;-1:-1:-1;;;;;33514:52:0;;:::i;1996:87::-;;;;;;;;;;;;;:::i;45484:::-;;;;;;;;;;;;;:::i;43731:37::-;;;;;;;;;;;;;:::i;32989:35::-;;;;;;;;;;;;;:::i;46940:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;46940:269:0;;;;;;;;:::i;44141:29::-;;;;;;;;;;;;;:::i;45898:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;45898:167:0;;;;;;;;:::i;44224:34::-;;;;;;;;;;;;;:::i;43903:27::-;;;;;;;;;;;;;:::i;33307:38::-;;;;;;;;;;;;;:::i;40838:339::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40838:339:0;;;;;;;;;;;;:::i;42076:425::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;42076:425:0;;;;;;;;:::i;47348:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;47348:138:0;;;;;;;;;;:::i;33573:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33573:51:0;-1:-1:-1;;;;;33573:51:0;;:::i;41412:201::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41412:201:0;-1:-1:-1;;;;;41412:201:0;;:::i;32907:33::-;;;;;;;;;;;;;:::i;35577:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35577:183:0;;;;;;;:::i;35211:358::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35211:358:0;;:::i;48581:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48581:162:0;;:::i;46073:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;46073:143:0;;;;;;;;;;:::i;53514:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53514:141:0;;;;:::i;40725:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40725:105:0;;:::i;47221:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47221:119:0;-1:-1:-1;;;;;47221:119:0;;:::i;33254:46::-;;;;;;;;;;;;;:::i;48755:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48755:99:0;;:::i;55160:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;55160:121:0;;;;:::i;2950:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2950:244:0;-1:-1:-1;;;;;2950:244:0;;:::i;53350:156::-;;;;;;;;;;;;;:::i;47817:189::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47817:189:0;;-1:-1:-1;47817:189:0;;-1:-1:-1;;;;;47817:189:0:i;55293:229::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;55293:229:0;;;;:::i;54861:110::-;;;;;;;;;;;;;:::i;33352:44::-;;;;;;;;;;;;;:::i;33462:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33462:45:0;-1:-1:-1;;;;;33462:45:0;;:::i;33728:38::-;;;;;;;;;;;;;:::i;32863:37::-;;;-1:-1:-1;;;;;32863:37:0;;:::o;45393:83::-;45463:5;45456:12;;;;;;;;-1:-1:-1;;45456:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45430:13;;45456:12;;45463:5;;45456:12;;45463:5;45456:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45393:83;:::o;32947:35::-;;;-1:-1:-1;;;;;32947:35:0;;:::o;46224:161::-;46299:4;46316:39;46325:12;:10;:12::i;:::-;46339:7;46348:6;46316:8;:39::i;:::-;-1:-1:-1;46373:4:0;46224:161;;;;;:::o;41185:219::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;41292:7:::1;41282;:17;41274:66;;;;-1:-1:-1::0;;;41274:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41353:6;:16:::0;;;;41380:6:::1;:16:::0;41185:219::o;33633:41::-;;;-1:-1:-1;;;;;33633:41:0;;:::o;45670:95::-;45750:7;;45670:95;:::o;33683:38::-;;;;:::o;46393:313::-;46491:4;46508:36;46518:6;46526:9;46537:6;46508:9;:36::i;:::-;46555:121;46564:6;46572:12;:10;:12::i;:::-;46586:89;46624:6;46586:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46586:19:0;;;;;;:11;:19;;;;;;46606:12;:10;:12::i;:::-;-1:-1:-1;;;;;46586:33:0;;;;;;;;;;;;-1:-1:-1;46586:33:0;;;:89;:37;:89::i;:::-;46555:8;:121::i;:::-;-1:-1:-1;46694:4:0;46393:313;;;;;:::o;33811:35::-;;;;:::o;45579:83::-;45645:9;;;;45579:83;:::o;46714:218::-;46802:4;46819:83;46828:12;:10;:12::i;:::-;46842:7;46851:50;46890:10;46851:11;:25;46863:12;:10;:12::i;:::-;-1:-1:-1;;;;;46851:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;46851:25:0;;;:34;;;;;;;;;;;:38;:50::i;47494:311::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47589:42:::1;-1:-1:-1::0;;;;;47578:53:0;::::1;;;47570:102;;;;-1:-1:-1::0;;;47570:102:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;47692:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;47691:27;47683:70;;;::::0;;-1:-1:-1;;;47683:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;47764:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;47764:33:0::1;47793:4;47764:33;::::0;;47494:311::o;54983:165::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55055:14:::1;:32:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;55130:10:::1;55112:15;:28;55098:11;:42:::0;54983:165::o;33405:50::-;;;;;;;;;;;;;:::o;44041:28::-;;;-1:-1:-1;;;;;44041:28:0;;:::o;44183:34::-;;;;;;;;;:::o;53181:157::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;53236:23:::1;53262:24;53280:4;53262:9;:24::i;:::-;53236:50;;53297:33;53314:15;53297:16;:33::i;:::-;34422:1;53181:157::o:0;48446:123::-;-1:-1:-1;;;;;48534:27:0;;48510:4;48534:27;;;:18;:27;;;;;;;;48446:123;;;;:::o;41621:447::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41701:21:0;::::1;;::::0;;;:10:::1;:21;::::0;;;;;::::1;;41697:364;;;-1:-1:-1::0;;;;;41739:21:0;::::1;41763:5;41739:21:::0;;;:10:::1;:21;::::0;;;;:29;;-1:-1:-1;;41739:29:0::1;::::0;;41785:265:::1;41806:9;:16:::0;41802:20;::::1;41785:265;;;41869:9;-1:-1:-1::0;;;;;41853:25:0::1;:9;41863:1;41853:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;41853:12:0::1;:25;41849:186;;;41918:9;41928:16:::0;;-1:-1:-1;;41928:20:0;;;41918:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;41903:9:::1;:12:::0;;-1:-1:-1;;;;;41918:31:0;;::::1;::::0;41913:1;;41903:12;::::1;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;41903:46:0::1;;;;;-1:-1:-1::0;;;;;41903:46:0::1;;;;;;41972:9;:15;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;41972:15:0;;;;;;::::1;::::0;;;;;42010:5:::1;;41849:186;41824:4;;41785:265;;;;41621:447:::0;:::o;44104:30::-;;;;;;;;;:::o;45773:117::-;-1:-1:-1;;;;;45866:16:0;45839:7;45866:16;;;:7;:16;;;;;;;45773:117::o;2647:148::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:1:::1;2738:6:::0;;2717:40:::1;::::0;-1:-1:-1;;;;;2738:6:0;;::::1;::::0;2717:40:::1;::::0;2754:1;;2717:40:::1;2785:1;2768:19:::0;;;::::1;::::0;;2647:148::o;43422:45::-;;;;;;;;;;;;;:::o;44389:23::-;;;-1:-1:-1;;;;;44389:23:0;;:::o;44267:43::-;;;;:::o;48014:199::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;48103:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;48095:65;;;::::0;;-1:-1:-1;;;48095:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;48171:26:0::1;48200:5;48171:26:::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;48171:34:0::1;::::0;;48014:199::o;55530:239::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;55612:31:0;::::1;;::::0;;;:20:::1;:31;::::0;;;;;;;:38;;55646:4:::1;-1:-1:-1::0;;55612:38:0;;::::1;::::0;::::1;::::0;;;55661:29;;;;;:36;;;;::::1;::::0;;::::1;::::0;;55708:22:::1;55612:31:::0;55708:11:::1;:22::i;:::-;55741:8;:20:::0;;;::::1;-1:-1:-1::0;;;;;55741:20:0;;;::::1;::::0;;;::::1;::::0;;55530:239::o;33514:52::-;;;;;;;;;;;;;;;:::o;1996:87::-;2042:7;2069:6;-1:-1:-1;;;;;2069:6:0;1996:87;:::o;45484:::-;45556:7;45549:14;;;;;;;;-1:-1:-1;;45549:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45523:13;;45549:14;;45556:7;;45549:14;;45556:7;45549:14;;;;;;;;;;;;;;;;;;;;;;;;43731:37;;;;:::o;32989:35::-;;;-1:-1:-1;;;;;32989:35:0;;:::o;46940:269::-;47033:4;47050:129;47059:12;:10;:12::i;:::-;47073:7;47082:96;47121:15;47082:96;;;;;;;;;;;;;;;;;:11;:25;47094:12;:10;:12::i;:::-;-1:-1:-1;;;;;47082:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;47082:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;44141:29::-;;;;;;;;;:::o;45898:167::-;45976:4;45993:42;46003:12;:10;:12::i;:::-;46017:9;46028:6;45993:9;:42::i;44224:34::-;;;;;;;;;:::o;43903:27::-;;;;:::o;33307:38::-;;;;:::o;40838:339::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;40978:8:::1;40963:12;:23;:48;;;;;41001:10;40990:8;:21;40963:48;40955:95;;;;-1:-1:-1::0;;;40955:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41063:17;:32:::0;;;;41106:13:::1;:24:::0;41141:15:::1;:28:::0;40838:339::o;42076:425::-;42161:4;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42178:17:::1;42198:27;:13:::0;42216:8:::1;42198:17;:27::i;:::-;42178:47;;42236:14;42253:36;42264:9;42275:13;42253:10;:36::i;:::-;42236:53;;42300:12;42315:27;42335:6;42315:19;:27::i;:::-;42300:42;;42355:32;42381:5;42355:15;42371:4;42355:21;;;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;-1:-1:-1::0;;;;;;;42398:17:0;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;:29;;;;42438:15:::1;:22:::0;;;;;;:31;-1:-1:-1;42489:4:0::1;42076:425:::0;;;;:::o;47348:138::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47440:27:0;;;::::1;;::::0;;;:18:::1;:27:::0;;;;;:38;;-1:-1:-1;;47440:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;47348:138::o;33573:51::-;;;;;;;;;;;;;;;:::o;41412:201::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41488:21:0;::::1;;::::0;;;:10:::1;:21;::::0;;;;;::::1;;41483:123;;-1:-1:-1::0;;;;;41526:21:0::1;;::::0;;;:10:::1;:21;::::0;;;;:28;;-1:-1:-1;;41526:28:0::1;41550:4;41526:28:::0;;::::1;::::0;;;41569:9:::1;:25:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;41412:201::o;32907:33::-;;;-1:-1:-1;;;;;32907:33:0;;:::o;35577:183::-;35742:9;;35658:7;;35711:41;;:26;:12;35728:8;35711:16;:26::i;:::-;:30;;:41::i;:::-;35685:23;:9;35699:8;35685:13;:23::i;:::-;:67;;35577:183;-1:-1:-1;;;35577:183:0:o;35211:358::-;35303:7;35341:17;;35332:6;:26;35328:67;;;-1:-1:-1;35382:1:0;35375:8;;35328:67;35418:13;;35409:6;:22;35405:63;;;-1:-1:-1;35455:1:0;35448:8;;35405:63;35491:15;;35482:6;:24;35478:65;;;-1:-1:-1;35530:1:0;35523:8;;35478:65;-1:-1:-1;35560:1:0;35211:358;;;:::o;48581:162::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48675:60:::1;48719:5;48675:25;48687:12;48675:7;;:11;;:25;;;;:::i;:60::-;48660:12;:75:::0;-1:-1:-1;48581:162:0:o;46073:143::-;-1:-1:-1;;;;;46181:18:0;;;46154:7;46181:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;46073:143::o;53514:141::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53583:11:::1;:21:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;53620:27:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;53514:141:::0;:::o;40725:105::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;40800:9:::1;:22:::0;40725:105::o;47221:119::-;-1:-1:-1;;;;;47306:26:0;47282:4;47306:26;;;:17;:26;;;;;;;;;47221:119::o;33254:46::-;;;;:::o;48755:99::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48826:12:::1;:20:::0;48755:99::o;55160:121::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55239:15:::1;:34:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;55160:121::o;2950:244::-;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3039:22:0;::::1;3031:73;;;;-1:-1:-1::0;;;3031:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3141:6;::::0;;3120:38:::1;::::0;-1:-1:-1;;;;;3120:38:0;;::::1;::::0;3141:6;::::1;::::0;3120:38:::1;::::0;::::1;3169:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;3169:17:0;;;::::1;::::0;;;::::1;::::0;;2950:244::o;53350:156::-;34370:10;:24;34381:12;:10;:12::i;:::-;-1:-1:-1;;;;;34370:24:0;;;;;;;;;;;;-1:-1:-1;34370:24:0;;;;34362:49;;;;;-1:-1:-1;;;34362:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;53434:21:::1;53466:32;53434:21:::0;53466:12:::1;:32::i;47817:189::-:0;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47905:6:::1;47900:99;47921:4;:11;47917:1;:15;47900:99;;;47983:4;47954:17;:26;47972:4;47977:1;47972:7;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;47954:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;47954:26:0;:33;;-1:-1:-1;;47954:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;47934:3:0::1;47900:99;;55293:229:::0;2227:12;:10;:12::i;:::-;-1:-1:-1;;;;;2216:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2216:23:0;;2208:68;;;;;-1:-1:-1;;;2208:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55490:10:::1;:24:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;55293:229::o;54861:110::-;54942:21;54861:110;:::o;33352:44::-;;;;:::o;33462:45::-;;;;;;;;;;;;;:::o;33728:38::-;;;;:::o;27914:152::-;27984:4;28008:50;28013:3;-1:-1:-1;;;;;28033:23:0;;28008:4;:50::i;:::-;28001:57;27914:152;-1:-1:-1;;;27914:152:0:o;620:106::-;708:10;620:106;:::o;48862:337::-;-1:-1:-1;;;;;48955:19:0;;48947:68;;;;-1:-1:-1;;;48947:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49034:21:0;;49026:68;;;;-1:-1:-1;;;49026:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49107:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;49159:32;;;;;;;;;;;;;;;;;48862:337;;;:::o;49207:2676::-;-1:-1:-1;;;;;49304:20:0;;49296:70;;;;-1:-1:-1;;;49296:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49385:23:0;;49377:71;;;;-1:-1:-1;;;49377:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49476:1;49467:6;:10;49459:64;;;;-1:-1:-1;;;49459:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49543:28:0;;;;;;:17;:28;;;;;;;;49542:29;49534:49;;;;;-1:-1:-1;;;49534:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49603:25:0;;;;;;:17;:25;;;;;;;;49602:26;49594:46;;;;;-1:-1:-1;;;49594:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;49666:7;:5;:7::i;:::-;-1:-1:-1;;;;;49656:17:0;:6;-1:-1:-1;;;;;49656:17:0;;;:41;;;;;49690:7;:5;:7::i;:::-;-1:-1:-1;;;;;49677:20:0;:9;-1:-1:-1;;;;;49677:20:0;;;49656:41;:63;;;;-1:-1:-1;49711:8:0;;-1:-1:-1;;;;;49701:18:0;;;49711:8;;49701:18;;49656:63;:88;;;;-1:-1:-1;49736:8:0;;-1:-1:-1;;;;;49723:21:0;;;49736:8;;49723:21;;49656:88;49653:429;;;49779:12;;49769:6;:22;;49761:74;;;;-1:-1:-1;;;49761:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49942:13;;-1:-1:-1;;;;;49932:23:0;;;49942:13;;49932:23;;:53;;-1:-1:-1;49972:13:0;;-1:-1:-1;;;;;49959:26:0;;;49972:13;;49959:26;49932:53;49928:143;;;50014:14;;;;;;;50006:49;;;;;-1:-1:-1;;;50006:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;50118:15;;;;;;;50115:416;;;50164:13;;-1:-1:-1;;;;;50154:23:0;;;50164:13;;50154:23;50150:171;;;50295:9;;50275:30;;:15;;:19;:30::i;:::-;-1:-1:-1;;;;;50252:20:0;;;;;;:9;:20;;;;;:53;50150:171;50392:7;:5;:7::i;:::-;-1:-1:-1;;;;;50382:17:0;:6;-1:-1:-1;;;;;50382:17:0;;;:44;;;;-1:-1:-1;50413:13:0;;-1:-1:-1;;;;;50403:23:0;;;50413:13;;50403:23;;50382:44;50379:141;;;-1:-1:-1;;;;;50474:17:0;;;;;;:9;:17;;;;;;50455:15;:36;;50447:57;;;;;-1:-1:-1;;;50447:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;50557:13;;-1:-1:-1;;;;;50547:23:0;;;50557:13;;50547:23;50543:172;;;50604:7;:5;:7::i;:::-;-1:-1:-1;;;;;50591:20:0;:9;-1:-1:-1;;;;;50591:20:0;;;:34;;;;-1:-1:-1;50615:10:0;;;;;;;50591:34;50587:117;;;50646:42;50670:9;50681:6;50646:23;:42::i;:::-;50773:28;50804:24;50822:4;50804:9;:24::i;:::-;50773:55;;50869:12;;50845:20;:36;50841:104;;-1:-1:-1;50921:12:0;;50841:104;51008:28;;51052:6;;50984:52;;;;;51052:6;;;;;51051:7;:22;;;;-1:-1:-1;51062:11:0;;;;;;;51051:22;:45;;;;;51077:19;51051:45;:72;;;;-1:-1:-1;51110:13:0;;-1:-1:-1;;;;;51100:23:0;;;51110:13;;51100:23;;51051:72;51047:406;;;51225:38;51242:20;51225:16;:38::i;:::-;51309:21;51348:22;;51345:97;;51391:35;51404:21;51391:12;:35::i;:::-;51047:406;;-1:-1:-1;;;;;51653:26:0;;51534:12;51653:26;;;:18;:26;;;;;;51549:4;;51653:26;;;:59;;-1:-1:-1;;;;;;51683:29:0;;;;;;:18;:29;;;;;;;;51653:59;51650:105;;;-1:-1:-1;51738:5:0;51650:105;51825:50;51840:6;51848:9;51859:6;51867:7;51825:14;:50::i;:::-;49207:2676;;;;;;:::o;11455:166::-;11541:7;11577:12;11569:6;;;;11561:29;;;;-1:-1:-1;;;11561:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11608:5:0;;;11455:166::o;8628:179::-;8686:7;8718:5;;;8742:6;;;;8734:46;;;;;-1:-1:-1;;;8734:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;51891:601;44500:6;:13;;;;;;;;52053:16:::1;::::0;;52067:1:::1;52053:16:::0;;;52029:21:::1;52053:16:::0;;::::1;::::0;;52029:21;52053:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;52053:16:0::1;52029:40;;52098:4;52080;52085:1;52080:7;;;;;;;;-1:-1:-1::0;;;;;52080:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;52124:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;52080:7;;52124:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;52124:22:0;52114:7;;:4;;52119:1:::1;::::0;52114:7;::::1;;;;;-1:-1:-1::0;;;;;52114:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;52191:15:::1;::::0;52159:62:::1;::::0;52176:4:::1;::::0;52191:15:::1;52209:11:::0;52159:8:::1;:62::i;:::-;52260:15;::::0;:224:::1;::::0;;;;::::1;::::0;::::1;::::0;;;:15:::1;:224:::0;;;;;;52438:4:::1;52260:224:::0;;;;;;52458:15:::1;52260:224:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;52260:15:0;;::::1;::::0;:66:::1;::::0;52341:11;;52411:4;;52438;52458:15;52260:224;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;:15;:224:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;44536:6:0;:14;;;;;;-1:-1:-1;;;;51891:601:0:o;10205:153::-;10263:7;10295:1;10291;:5;10283:44;;;;;-1:-1:-1;;;10283:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10349:1;10345;:5;;;;;;;10205:153;-1:-1:-1;;;10205:153:0:o;9507:220::-;9565:7;9589:6;9585:20;;-1:-1:-1;9604:1:0;9597:8;;9585:20;9628:5;;;9632:1;9628;:5;:1;9652:5;;;;;:10;9644:56;;;;-1:-1:-1;;;9644:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52504:523;52584:11;;52565:15;:30;52561:93;;52612:30;:28;:30::i;:::-;52666:20;52689:14;:6;52700:2;52689:10;:14::i;:::-;52716:12;:28;;;;;;-1:-1:-1;52757:14:0;52666:37;;-1:-1:-1;;;;;;52757:14:0;:44;52781:19;52666:37;52798:1;52781:16;:19::i;:::-;52757:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52812:10:0;;-1:-1:-1;;;;;52812:10:0;:40;52832:19;:12;52849:1;52832:16;:19::i;:::-;52812:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52863:12:0;;-1:-1:-1;;;;;52863:12:0;:42;52885:19;:12;52902:1;52885:16;:19::i;:::-;52863:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52916:12:0;;-1:-1:-1;;;;;52916:12:0;:42;52938:19;:12;52916;52938:16;:19::i;:::-;52916:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52971:17:0;;-1:-1:-1;;;;;52971:17:0;:48;52998:20;53016:1;52998:13;:6;53009:1;52998:10;:13::i;:20::-;52971:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52504:523;;:::o;21829:414::-;21892:4;21914:21;21924:3;21929:5;21914:9;:21::i;:::-;21909:327;;-1:-1:-1;21952:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;22135:18;;22113:19;;;:12;;;:19;;;;;;:40;;;;22168:11;;21909:327;-1:-1:-1;22219:5:0;22212:12;;36021:1624;-1:-1:-1;;;;;36114:30:0;;;;;;:20;:30;;;;;;;;36109:1529;;36185:16;;;36199:1;36185:16;;;36161:21;36185:16;;;;;36161:21;36185:16;;;;;;;;-1:-1:-1;;36226:15:0;;:22;;;;;;;;36161:40;;-1:-1:-1;;;;;;36226:15:0;;;;:20;;-1:-1:-1;36226:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36226:22:0;36216:7;;:4;;36221:1;;36216:7;;;;;;;;;:32;-1:-1:-1;;;;;36216:32:0;;;-1:-1:-1;;;;;36216:32:0;;;;;36281:4;36263;36268:1;36263:7;;;;;;;;-1:-1:-1;;;;;36263:23:0;;;:7;;;;;;;;;;:23;;;;36335:15;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;36315:17;;36335:15;;;;;:28;;36364:7;;36373:4;;36335:43;;;;;;;;;;;;;;;36315:17;36335:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36335:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36379:1;36335:46;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36430:25:0;;36410:17;36430:25;;;:15;:25;;;;;;;36476:19;:29;;;;;;36335:46;;-1:-1:-1;36476:29:0;;36472:767;;;-1:-1:-1;;;;;36542:20:0;;;;;;:10;:20;;;;;;36530:32;;36526:490;;;-1:-1:-1;;;;;36622:20:0;;;;;;:10;:20;;;;;;;;;;36610:32;;36587:55;;36665:19;:29;;;;;;:37;;-1:-1:-1;;36665:37:0;;;36766:20;;;;;36788:41;;;;;;;;;;;;;;36755:85;;36766:20;;36832:7;;36803:4;;36788:31;;:41;;;;;36622:20;;36788:41;;;;;;36803:4;36788:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36788:41:0;:51;36755:10;:85::i;:::-;-1:-1:-1;;;;;36727:25:0;;;;;;:15;:25;;;;;:113;36526:490;;;-1:-1:-1;;;;;36912:20:0;;;;;;:10;:20;;;;;;;;;;:32;;;36889:55;;36967:15;:25;;;;;:29;36526:490;36472:767;;;-1:-1:-1;;;;;37056:20:0;;;;;;:10;:20;;;;;;;;;:33;;;;;;;;37171:41;;;;;;;;;;;;;;37138:85;;37215:7;;37186:4;;37171:31;;:41;;;;;37056:20;37171:41;;;;;;37186:4;37171:41;;;;;;;;;;37138:85;-1:-1:-1;;;;;37110:25:0;;;;;;:15;:25;;;;;:113;36472:767;-1:-1:-1;;;;;37260:29:0;;;;;;:19;:29;;;;;;;;37255:372;;37310:15;37328:30;37348:9;37328:19;:30::i;:::-;-1:-1:-1;;;;;37415:25:0;;37377:15;37415:25;;;:15;:25;;;;;;37310:48;;-1:-1:-1;37377:15:0;37395:46;;:19;:46::i;:::-;37377:64;;37477:7;37466;:18;37462:98;;37509:31;37522:8;37532:7;37509:12;:31::i;:::-;37580;37593:8;37603:7;37580:12;:31::i;:::-;37255:372;;;36109:1529;;;36021:1624;;:::o;53671:267::-;53783:7;53779:40;;53805:14;:12;:14::i;:::-;53832:44;53850:6;53858:9;53869:6;53832:17;:44::i;:::-;53893:7;53889:41;;53915:15;:13;:15::i;:::-;53671:267;;;;:::o;39386:1294::-;39446:15;39488:6;;39464:21;39478:6;;39469;;:15;39464:4;:21::i;:::-;:30;39446:48;;39527:7;39511:12;;:23;39507:1166;;39551:27;39581:33;39586:27;:15;39602:1;39586:18;;;;;;;;;;;;;;;;;;:25;:27::i;:::-;39581:4;:33::i;:::-;39551:63;;39629:23;39655:33;39660:27;:15;39676:1;39660:18;;;;;;;39655:33;39629:59;;39703:25;39731:33;39736:27;:15;39752:1;39736:18;;;;;;;39731:33;39703:61;;39779:25;39807:33;39812:27;:15;39828:1;39812:18;;;;;;;39807:33;39779:61;;39882:42;39904:19;39882:15;39898:1;39882:18;;;;;;;;;;;;;;;;;;:21;;:42;;;;:::i;:::-;39857:14;;:68;;;;;-1:-1:-1;;;;;39857:68:0;;;;;-1:-1:-1;;;;;39857:68:0;;;;;;39961:38;39983:15;39961;39977:1;39961:18;;;;;;;:38;39940:10;;:60;;;;;-1:-1:-1;;;;;39940:60:0;;;;;-1:-1:-1;;;;;39940:60:0;;;;;;40038:40;40060:17;40038:15;40054:1;40038:18;;;;;;;:40;40015:12;;:64;;;;;-1:-1:-1;;;;;40015:64:0;;;;;-1:-1:-1;;;;;40015:64:0;;;;;;40117:40;40139:17;40117:15;40133:1;40117:18;;;;;;;:40;40094:12;:64;;;;-1:-1:-1;;;;;40094:64:0;;;;;;;-1:-1:-1;40234:14:0;40250:10;;40262:12;;40234:14;;;-1:-1:-1;40308:26:0;;;:10;:26;;;;;;;;;40250:10;;;40336:22;;;;;;;40262:12;;;40360:24;;;;;;;40276:12;;;;40386:24;;;;;;;;40429:47;;;;;;;;;;;;;40180:481;;40217:15;;40234:14;;40250:10;;40262:12;;40276;;40336:22;;40360:24;;40386;40444:4;;40429:31;;:47;;;;;40308:26;40429:47;;;;;;40444:4;40429:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40429:47:0;40510:10;;40478:43;;;;;;-1:-1:-1;;;;;40510:10:0;;;40478:43;;;;;40493:4;;40478:31;;:43;;;;;40429:47;;40478:43;;;;;;;40493:4;40478:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40478:43:0;40555:12;;40523:45;;;;;;-1:-1:-1;;;;;40555:12:0;;;40523:45;;;;;40538:4;;40523:31;;:45;;;;;40478:43;;40523:45;;;;;;;40538:4;40523:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40523:45:0;40602:12;;;40570:45;;;;;;-1:-1:-1;;;;;40602:12:0;;;40570:45;;;;;;;;;40585:4;;40570:31;;:45;;;;;40523;;40570;;;;;;;40585:4;40570:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40634:12;;40180:481;;;;;;;;;-1:-1:-1;;;;;40180:481:0;;;;;;-1:-1:-1;;;;;40180:481:0;;;;;;-1:-1:-1;;;;;40180:481:0;;;;;;-1:-1:-1;;;;;40180:481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39507:1166;;;;39386:1294;:::o;23925:129::-;23998:4;24022:19;;;:12;;;;;:19;;;;;;:24;;;23925:129::o;35893:120::-;35967:38;35996:8;35967:15;35983:4;35967:21;;;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;35768:117::-;35842:35;35868:8;35842:15;35858:4;35842:21;;;;;;;48221:132;48267:7;;48264:24;;48281:7;;48264:24;48316:7;;;48298:15;:25;-1:-1:-1;48334:11:0;;48221:132;:::o;53946:583::-;54044:12;54059:29;54084:3;54059:20;54071:7;;54059;:11;;:20;;;;:::i;:29::-;54044:44;-1:-1:-1;54099:22:0;54124:17;:7;54044:44;54124:11;:17::i;:::-;-1:-1:-1;;;;;54172:15:0;;;;;;:7;:15;;;;;;54099:42;;-1:-1:-1;54172:28:0;;54192:7;54172:19;:28::i;:::-;-1:-1:-1;;;;;54154:15:0;;;;;;;:7;:15;;;;;;:46;;;;54232:18;;;;;;;:38;;54255:14;54232:22;:38::i;:::-;-1:-1:-1;;;;;54211:18:0;;;;;;:7;:18;;;;;:59;54381:45;54410:6;54418:7;54381:28;:45::i;:::-;54447:14;54456:4;54447:8;:14::i;:::-;54495:9;-1:-1:-1;;;;;54478:43:0;54487:6;-1:-1:-1;;;;;54478:43:0;;54506:14;54478:43;;;;;;;;;;;;;;;;;;53946:583;;;;;:::o;48361:77::-;48415:15;;48405:7;:25;48361:77::o;38819:559::-;38894:7;38923:3;38930:1;38923:8;38919:49;;;-1:-1:-1;38955:1:0;38948:8;;38919:49;38980:12;39280;39259:3;39241:10;39224:28;;;;;;-1:-1:-1;;;;;39224:28:0;;;;;;;;;;;;;;;;;;;;;;39214:39;;;;;;39206:48;;39205:58;;;;;;39174:14;39153:3;39131:14;39114:32;;;;;;-1:-1:-1;;;;;39114:32:0;;;;;;;;;;;;;;;;;;;;;;39104:43;;;;;;39096:52;;39095:62;;;;;;39062:16;39044:15;:34;:114;:144;:220;:248;39013:290;;;;;;;;;;;;;;;;;;;;;;;;;39003:301;;;;;;38995:310;;38980:325;;39362:1;39356:3;:7;39349:1;39343:3;:7;39335:4;:16;;;;;;39334:30;39326:4;:39;39369:1;39325:45;39318:52;;;38819:559;;;:::o;28739:117::-;28802:7;28829:19;28837:3;28829:7;:19::i;29210:158::-;29284:7;29335:22;29339:3;29351:5;29335:3;:22::i;28242:158::-;28315:4;28339:53;28347:3;-1:-1:-1;;;;;28367:23:0;;28339:7;:53::i;9090:158::-;9148:7;9181:1;9176;:6;;9168:49;;;;;-1:-1:-1;;;9168:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9235:5:0;;;9090:158::o;37653:1158::-;-1:-1:-1;;;;;37751:30:0;;;;;;:20;:30;;;;;;;;37746:1058;;37822:16;;;37836:1;37822:16;;;37798:21;37822:16;;;;;37798:21;37822:16;;;;;;;;-1:-1:-1;;37863:15:0;;:22;;;;;;;;37798:40;;-1:-1:-1;;;;;;37863:15:0;;;;:20;;-1:-1:-1;37863:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37863:22:0;37853:7;;:4;;37858:1;;37853:7;;;;;;;;;:32;-1:-1:-1;;;;;37853:32:0;;;-1:-1:-1;;;;;37853:32:0;;;;;37918:4;37900;37905:1;37900:7;;;;;;;;-1:-1:-1;;;;;37900:23:0;;;:7;;;;;;;;;;:23;;;;37972:15;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;37952:17;;37972:15;;;;;:28;;38001:7;;38010:4;;37972:43;;;;;;;;;;;;;;;37952:17;37972:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37972:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38016:1;37972:46;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38055:25:0;;38035:17;38055:25;;;:15;:25;;;;;;;38101:19;:29;;;;;;37972:46;;-1:-1:-1;38101:29:0;;38097:585;;;-1:-1:-1;;;;;38151:20:0;;;;;;:10;:20;;;;;;;;:33;;;;;;38203:15;:25;;;;;:29;38097:585;;;-1:-1:-1;;;;;38258:20:0;;;;;;:10;:20;;;;;;:33;-1:-1:-1;38254:428:0;;-1:-1:-1;;;;;38312:20:0;;;;;;:10;:20;;;;;;;;;:33;;;;;;;;;38425:41;;;;;;;;;;;;;;38392:75;;38440:4;;38425:31;;:41;;;;;;;;;;38440:4;38425:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38425:41:0;38392:10;:75::i;:::-;-1:-1:-1;;;;;38364:25:0;;;;;;:15;:25;;;;;:103;38254:428;;;-1:-1:-1;;;;;38543:20:0;;;;;;:10;:20;;;;;;;;;;38531:32;;38508:55;;38582:19;:29;;;;;:36;;-1:-1:-1;;38582:36:0;-1:-1:-1;38582:36:0;;;38637:15;:25;;;;;:29;38254:428;38698:15;38716:30;38736:9;38716:19;:30::i;:::-;38698:48;;38761:31;38774:8;38784:7;38761:12;:31::i;54537:116::-;54629:4;54613:22;;;;:7;:22;;;;;;:32;;54640:4;54613:26;:32::i;:::-;54604:4;54588:22;;;;:7;:22;;;;;:57;-1:-1:-1;54537:116:0:o;24140:109::-;24223:18;;24140:109::o;24603:120::-;24670:7;24697:3;:11;;24709:5;24697:18;;;;;;;;;;;;;;;;24690:25;;24603:120;;;;:::o;22419:1420::-;22485:4;22624:19;;;:12;;;:19;;;;;;22660:15;;22656:1176;;23108:18;;-1:-1:-1;;23059:14:0;;;;23108:22;23151:26;;;23147:405;;23198:17;23218:3;:11;;23230:9;23218:22;;;;;;;;;;;;;;;;23198:42;;23372:9;23343:3;:11;;23355:13;23343:26;;;;;;;;;;;;;;;;;;;:38;;;;23457:23;;;:12;;;:23;;;;;:36;;;23147:405;23633:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;23728:3;:12;;:19;23741:5;23728:19;;;;;;;;;;;23721:26;;;23771:4;23764:11;;;;;;;22656:1176;23815:5;23808:12;;;;
Swarm Source
ipfs://9d13208d7ac5af29d6da40b3f2b2c675758ea70e024fc5137f35907b74a2e2c3
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.