More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,831 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Manager | 17515206 | 443 days ago | IN | 0 ETH | 0.00059655 | ||||
Bonus | 16668828 | 562 days ago | IN | 0 ETH | 0.00155431 | ||||
Reduce | 16668826 | 562 days ago | IN | 0 ETH | 0.00065094 | ||||
Bonus | 16598900 | 572 days ago | IN | 0 ETH | 0.00195049 | ||||
Reduce | 16598898 | 572 days ago | IN | 0 ETH | 0.00079213 | ||||
Bonus | 16598770 | 572 days ago | IN | 0 ETH | 0.00164008 | ||||
Reduce | 16598767 | 572 days ago | IN | 0 ETH | 0.00072332 | ||||
Bonus | 16598758 | 572 days ago | IN | 0 ETH | 0.00152226 | ||||
Reduce | 16598755 | 572 days ago | IN | 0 ETH | 0.00060674 | ||||
Bonus | 16598686 | 572 days ago | IN | 0 ETH | 0.00168682 | ||||
Reduce | 16598683 | 572 days ago | IN | 0 ETH | 0.00084557 | ||||
Bonus | 16598678 | 572 days ago | IN | 0 ETH | 0.0008149 | ||||
Reduce | 16598668 | 572 days ago | IN | 0 ETH | 0.00085266 | ||||
Bonus | 16598620 | 572 days ago | IN | 0 ETH | 0.00184108 | ||||
Reduce | 16598617 | 572 days ago | IN | 0 ETH | 0.00075683 | ||||
Bonus | 16598504 | 572 days ago | IN | 0 ETH | 0.00173066 | ||||
Reduce | 16598501 | 572 days ago | IN | 0 ETH | 0.00068726 | ||||
Bonus | 16232658 | 623 days ago | IN | 0 ETH | 0.00271745 | ||||
Bonus | 16232650 | 623 days ago | IN | 0 ETH | 0.00196564 | ||||
Bonus | 16220221 | 625 days ago | IN | 0 ETH | 0.00072669 | ||||
Bonus | 16197775 | 628 days ago | IN | 0 ETH | 0.00218538 | ||||
Bonus | 16174685 | 631 days ago | IN | 0 ETH | 0.00104839 | ||||
Bonus | 16174684 | 631 days ago | IN | 0 ETH | 0.0010332 | ||||
Bonus | 16099305 | 641 days ago | IN | 0 ETH | 0.00120756 | ||||
Reduce | 16098271 | 642 days ago | IN | 0 ETH | 0.00042174 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
WorldCupApesICO
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-14 */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/WCAICO.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract WorldCupApesICO is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; struct Referral { string code; uint256 price; uint256 expiration; bool active; bool exists; } address public wallet; address public manager; uint256 public startUnstakeTimestamp = 1669849200; uint256 public price = 35; uint256 public priceDivider = 100; uint256 public emissionRate = 66; uint256 public emissionDivider = 10000; uint256 public usdtPow = 12; bool public purchaseLive = false; mapping(address => uint256) internal stakerToUSDT; mapping(address => uint256) internal stakerToTokens; mapping(address => uint256) internal stakerToInitialTokens; mapping(address => uint256) internal stakerToLastClaim; mapping(string => Referral) internal codeToReferral; IERC20 private USDT; IERC20 private WCAToken; modifier canUnstake() { require( block.timestamp >= startUnstakeTimestamp, "You can't already unstake tokens" ); _; } modifier purchaseEnabled() { require(purchaseLive, "Purchase not live"); _; } modifier onlyOwnerOrManager() { require(msg.sender == owner() || msg.sender == manager, "Unauthorized"); _; } constructor( address _WCAToken, address _USDT, address _wallet, address _manager ) { WCAToken = IERC20(_WCAToken); USDT = IERC20(_USDT); wallet = _wallet; manager = _manager; } function addReferrals(Referral[] calldata refs) external onlyOwnerOrManager { for (uint256 i; i < refs.length; i++) { Referral calldata ref = refs[i]; require( !codeToReferral[ref.code].exists, "Referral already exists" ); codeToReferral[ref.code].code = ref.code; codeToReferral[ref.code].price = ref.price; codeToReferral[ref.code].expiration = ref.expiration; codeToReferral[ref.code].active = ref.active; codeToReferral[ref.code].exists = true; } } function updateReferral(Referral calldata ref) external onlyOwnerOrManager { require(codeToReferral[ref.code].exists, "Referral does't exists"); codeToReferral[ref.code].price = ref.price; codeToReferral[ref.code].expiration = ref.expiration; codeToReferral[ref.code].active = ref.active; } function deleteReferral(string calldata code) external onlyOwnerOrManager { require(codeToReferral[code].exists, "Referral does't exists"); codeToReferral[code].exists = false; } function getReferral(string calldata code) external view returns (Referral memory) { require(codeToReferral[code].exists, "Referral does't exists"); return codeToReferral[code]; } function setWallet(address _wallet) external onlyOwner { wallet = _wallet; } function setManager(address _manager) external onlyOwner { manager = _manager; } function setStartUnstakeTimestamp(uint256 timestamp) external onlyOwner { startUnstakeTimestamp = timestamp; } function setPrice(uint256 _price) external onlyOwner { price = _price; } function setPriceDivider(uint256 _priceDivider) external onlyOwner { priceDivider = _priceDivider; } function setEmissionRate(uint256 _emissionRate) external onlyOwner { emissionRate = _emissionRate; } function setEmissionDivider(uint256 _emissionDivider) external onlyOwner { emissionDivider = _emissionDivider; } function setUsdtPow(uint256 _usdtPow) external onlyOwner { usdtPow = _usdtPow; } function togglePurchaseLive() external onlyOwner { purchaseLive = !purchaseLive; } function bonus(address _address, uint256 value) external onlyOwnerOrManager { stakerToTokens[_address] = stakerToTokens[_address].add(value); stakerToInitialTokens[_address] = stakerToInitialTokens[_address].add( value ); } function reduce(address _address, uint256 value) external onlyOwnerOrManager { stakerToTokens[_address] = stakerToTokens[_address].sub(value); stakerToInitialTokens[_address] = stakerToInitialTokens[_address].sub( value ); } function buy( address _address, uint256 _value, string calldata referral ) external purchaseEnabled { uint256 balance = USDT.balanceOf(msg.sender); require(balance > 0, "You have no USDT"); require( USDT.allowance(msg.sender, address(this)) >= _value, "First approve to buy" ); USDT.safeTransferFrom(msg.sender, wallet, _value); uint256 _price = price; if ( codeToReferral[referral].exists && codeToReferral[referral].expiration > block.timestamp && codeToReferral[referral].active == true ) { _price = codeToReferral[referral].price; } uint256 valueInWCA = _value.mul(10**usdtPow).mul(priceDivider).div( _price ); stakerToUSDT[_address] = stakerToUSDT[_address].add(_value); stakerToTokens[_address] = stakerToTokens[_address].add(valueInWCA); stakerToInitialTokens[_address] = stakerToInitialTokens[_address].add( valueInWCA ); } function claim(address _address) external canUnstake { require( stakerToTokens[_address] > 0 && stakerToInitialTokens[_address] > 0, "You have no tokens staked" ); uint256 fromTimestamp = startUnstakeTimestamp; if (stakerToLastClaim[_address] > startUnstakeTimestamp) { fromTimestamp = stakerToLastClaim[_address]; } uint256 rewards = block .timestamp .sub(fromTimestamp) .mul(stakerToInitialTokens[_address]) .mul(emissionRate) .div(emissionDivider) .div(86400); if (rewards > stakerToTokens[_address]) { rewards = stakerToTokens[_address]; stakerToTokens[_address] = 0; } else { stakerToTokens[_address] = stakerToTokens[_address].sub(rewards); } stakerToLastClaim[_address] = block.timestamp; WCAToken.transferFrom(owner(), _address, rewards); } function getTotalClaimable(address _address) external view returns (uint256) { return stakerToInitialTokens[_address]; } function getRemainingClaimable(address _address) external view returns (uint256) { return stakerToTokens[_address]; } function getClaimable(address _address) external view returns (uint256) { if ( stakerToTokens[_address] <= 0 || stakerToInitialTokens[_address] <= 0 || block.timestamp < startUnstakeTimestamp ) { return 0; } uint256 fromTimestamp = startUnstakeTimestamp; if (stakerToLastClaim[_address] > startUnstakeTimestamp) { fromTimestamp = stakerToLastClaim[_address]; } uint256 rewards = block .timestamp .sub(fromTimestamp) .mul(stakerToInitialTokens[_address]) .mul(emissionRate) .div(emissionDivider) .div(86400); if (rewards > stakerToTokens[_address]) { rewards = stakerToTokens[_address]; } return rewards; } function getSpentUSDT(address _address) external view returns (uint256) { return stakerToUSDT[_address]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_WCAToken","type":"address"},{"internalType":"address","name":"_USDT","type":"address"},{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"address","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"components":[{"internalType":"string","name":"code","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct WorldCupApesICO.Referral[]","name":"refs","type":"tuple[]"}],"name":"addReferrals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"bonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"string","name":"referral","type":"string"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"code","type":"string"}],"name":"deleteReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emissionDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"code","type":"string"}],"name":"getReferral","outputs":[{"components":[{"internalType":"string","name":"code","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct WorldCupApesICO.Referral","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRemainingClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSpentUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getTotalClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"reduce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_emissionDivider","type":"uint256"}],"name":"setEmissionDivider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_emissionRate","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceDivider","type":"uint256"}],"name":"setPriceDivider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"setStartUnstakeTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_usdtPow","type":"uint256"}],"name":"setUsdtPow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startUnstakeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePurchaseLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"code","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct WorldCupApesICO.Referral","name":"ref","type":"tuple"}],"name":"updateReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtPow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052636387e070600355602360045560646005556042600655612710600755600c6008556000600960006101000a81548160ff0219169083151502179055503480156200004e57600080fd5b5060405162004337380380620043378339818101604052810190620000749190620002d8565b6200009462000088620001a260201b60201c565b620001aa60201b60201c565b83601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200034a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002a08262000273565b9050919050565b620002b28162000293565b8114620002be57600080fd5b50565b600081519050620002d281620002a7565b92915050565b60008060008060808587031215620002f557620002f46200026e565b5b60006200030587828801620002c1565b94505060206200031887828801620002c1565b93505060406200032b87828801620002c1565b92505060606200033e87828801620002c1565b91505092959194509250565b613fdd806200035a6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806392913bca1161011a578063adc435ae116100ad578063d0ebdbe71161007c578063d0ebdbe714610562578063deaa59df1461057e578063eab47dce1461059a578063f2fde38b146105b6578063fe29f1de146105d2576101fb565b8063adc435ae146104c8578063af3494c9146104f8578063b22ca40d14610514578063b638505114610532576101fb565b8063a1bdb15e116100e9578063a1bdb15e14610430578063a4489ed51461044c578063a583024b14610468578063a749df4b14610498576101fb565b806392913bca146103bc57806396afc450146103d857806397a8da49146103f6578063a035b1fe14610412576101fb565b806351796c99116101925780635c1e645a116101615780635c1e645a1461035a578063715018a6146103785780638da5cb5b1461038257806391b7f5ed146103a0576101fb565b806351796c99146102f8578063521eb2731461031457806352758f3e146103325780635b0801271461033c576101fb565b8063365044a8116101ce578063365044a81461028457806336ed62eb146102a2578063481c6a75146102be5780634862ddc3146102dc576101fb565b80630f4ae692146102005780631395e6401461021c5780631e83409a14610238578063267e8ab614610254575b600080fd5b61021a60048036038101906102159190612bdc565b6105f0565b005b61023660048036038101906102319190612bdc565b6107eb565b005b610252600480360381019061024d9190612c1c565b6109e6565b005b61026e60048036038101906102699190612c1c565b610e8c565b60405161027b9190612c58565b60405180910390f35b61028c610ed5565b6040516102999190612c58565b60405180910390f35b6102bc60048036038101906102b79190612c73565b610edb565b005b6102c6610f61565b6040516102d39190612caf565b60405180910390f35b6102f660048036038101906102f19190612d2f565b610f87565b005b610312600480360381019061030d9190612da3565b6114ef565b005b61031c61166c565b6040516103299190612caf565b60405180910390f35b61033a611692565b005b61034461173a565b6040516103519190612c58565b60405180910390f35b610362611740565b60405161036f9190612c58565b60405180910390f35b610380611746565b005b61038a6117ce565b6040516103979190612caf565b60405180910390f35b6103ba60048036038101906103b59190612c73565b6117f7565b005b6103d660048036038101906103d19190612e14565b61187d565b005b6103e0611a9a565b6040516103ed9190612c58565b60405180910390f35b610410600480360381019061040b9190612c73565b611aa0565b005b61041a611b26565b6040516104279190612c58565b60405180910390f35b61044a60048036038101906104459190612c73565b611b2c565b005b61046660048036038101906104619190612eb3565b611bb2565b005b610482600480360381019061047d9190612c1c565b611eb5565b60405161048f9190612c58565b60405180910390f35b6104b260048036038101906104ad9190612da3565b61212c565b6040516104bf9190613030565b60405180910390f35b6104e260048036038101906104dd9190612c1c565b6122b3565b6040516104ef9190612c58565b60405180910390f35b610512600480360381019061050d9190612c73565b6122fc565b005b61051c612382565b6040516105299190612c58565b60405180910390f35b61054c60048036038101906105479190612c1c565b612388565b6040516105599190612c58565b60405180910390f35b61057c60048036038101906105779190612c1c565b6123d1565b005b61059860048036038101906105939190612c1c565b612491565b005b6105b460048036038101906105af9190612c73565b612551565b005b6105d060048036038101906105cb9190612c1c565b6125d7565b005b6105da6126ce565b6040516105e79190613061565b60405180910390f35b6105f86117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061067e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6106bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b4906130d9565b60405180910390fd5b61070f81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107a481600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6107f36117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108795750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906130d9565b60405180910390fd5b61090a81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061099f81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600354421015610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290613145565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610ab957506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef906131b1565b60405180910390fd5b60006003549050600354600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610b8b57600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000610c2e62015180610c20600754610c12600654610c04600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf68a426126f790919063ffffffff16565b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b61272390919063ffffffff16565b9050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610d0357600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d99565b610d5581600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b42600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd610e236117ce565b85846040518463ffffffff1660e01b8152600401610e43939291906131d1565b6020604051808303816000875af1158015610e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e869190613234565b50505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b610ee3612739565b73ffffffffffffffffffffffffffffffffffffffff16610f016117ce565b73ffffffffffffffffffffffffffffffffffffffff1614610f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4e906132ad565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff16610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90613319565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016110339190612caf565b602060405180830381865afa158015611050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611074919061334e565b9050600081116110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b0906133c7565b60405180910390fd5b83600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016111179291906133e7565b602060405180830381865afa158015611134573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611158919061334e565b1015611199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111909061345c565b60405180910390fd5b61120a33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612741909392919063ffffffff16565b60006004549050600e84846040516112239291906134bb565b908152602001604051809103902060030160019054906101000a900460ff168015611270575042600e858560405161125c9291906134bb565b908152602001604051809103902060020154115b80156112b0575060011515600e858560405161128d9291906134bb565b908152602001604051809103902060030160009054906101000a900460ff161515145b156112dc57600e84846040516112c79291906134bb565b90815260200160405180910390206001015490505b600061132582611317600554611309600854600a6112fa9190613636565b8b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b905061137986600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140e81600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114a381600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b6114f76117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061157d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b3906130d9565b60405180910390fd5b600e82826040516115ce9291906134bb565b908152602001604051809103902060030160019054906101000a900460ff1661162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906136cd565b60405180910390fd5b6000600e83836040516116409291906134bb565b908152602001604051809103902060030160016101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61169a612739565b73ffffffffffffffffffffffffffffffffffffffff166116b86117ce565b73ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611705906132ad565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b60075481565b60035481565b61174e612739565b73ffffffffffffffffffffffffffffffffffffffff1661176c6117ce565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906132ad565b60405180910390fd5b6117cc60006127ca565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ff612739565b73ffffffffffffffffffffffffffffffffffffffff1661181d6117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906132ad565b60405180910390fd5b8060048190555050565b6118856117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061190b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61194a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611941906130d9565b60405180910390fd5b600e81806000019061195c91906136fc565b60405161196a9291906134bb565b908152602001604051809103902060030160019054906101000a900460ff166119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf906136cd565b60405180910390fd5b8060200135600e8280600001906119df91906136fc565b6040516119ed9291906134bb565b9081526020016040518091039020600101819055508060400135600e828060000190611a1991906136fc565b604051611a279291906134bb565b908152602001604051809103902060020181905550806060016020810190611a4f9190613774565b600e828060000190611a6191906136fc565b604051611a6f9291906134bb565b908152602001604051809103902060030160006101000a81548160ff02191690831515021790555050565b60065481565b611aa8612739565b73ffffffffffffffffffffffffffffffffffffffff16611ac66117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b13906132ad565b60405180910390fd5b8060088190555050565b60045481565b611b34612739565b73ffffffffffffffffffffffffffffffffffffffff16611b526117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f906132ad565b60405180910390fd5b8060068190555050565b611bba6117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c76906130d9565b60405180910390fd5b60005b82829050811015611eb05736838383818110611ca157611ca06137a1565b5b9050602002810190611cb391906137d0565b9050600e818060000190611cc791906136fc565b604051611cd59291906134bb565b908152602001604051809103902060030160019054906101000a900460ff1615611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90613844565b60405180910390fd5b808060000190611d4491906136fc565b600e838060000190611d5691906136fc565b604051611d649291906134bb565b90815260200160405180910390206000019182611d82929190613aaa565b508060200135600e828060000190611d9a91906136fc565b604051611da89291906134bb565b9081526020016040518091039020600101819055508060400135600e828060000190611dd491906136fc565b604051611de29291906134bb565b908152602001604051809103902060020181905550806060016020810190611e0a9190613774565b600e828060000190611e1c91906136fc565b604051611e2a9291906134bb565b908152602001604051809103902060030160006101000a81548160ff0219169083151502179055506001600e828060000190611e6691906136fc565b604051611e749291906134bb565b908152602001604051809103902060030160016101000a81548160ff021916908315150217905550508080611ea890613b7a565b915050611c82565b505050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580611f4557506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b80611f51575060035442105b15611f5f5760009050612127565b60006003549050600354600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ff257600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006120956201518061208760075461207960065461206b600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205d8a426126f790919063ffffffff16565b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b61272390919063ffffffff16565b9050600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561212157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b80925050505b919050565b612134612b0b565b600e83836040516121469291906134bb565b908152602001604051809103902060030160019054906101000a900460ff166121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b906136cd565b60405180910390fd5b600e83836040516121b69291906134bb565b90815260200160405180910390206040518060a00160405290816000820180546121df906138cd565b80601f016020809104026020016040519081016040528092919081815260200182805461220b906138cd565b80156122585780601f1061222d57610100808354040283529160200191612258565b820191906000526020600020905b81548152906001019060200180831161223b57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581525050905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612304612739565b73ffffffffffffffffffffffffffffffffffffffff166123226117ce565b73ffffffffffffffffffffffffffffffffffffffff1614612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f906132ad565b60405180910390fd5b8060078190555050565b60085481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6123d9612739565b73ffffffffffffffffffffffffffffffffffffffff166123f76117ce565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612444906132ad565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612499612739565b73ffffffffffffffffffffffffffffffffffffffff166124b76117ce565b73ffffffffffffffffffffffffffffffffffffffff161461250d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612504906132ad565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612559612739565b73ffffffffffffffffffffffffffffffffffffffff166125776117ce565b73ffffffffffffffffffffffffffffffffffffffff16146125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c4906132ad565b60405180910390fd5b8060058190555050565b6125df612739565b73ffffffffffffffffffffffffffffffffffffffff166125fd6117ce565b73ffffffffffffffffffffffffffffffffffffffff1614612653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264a906132ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990613c34565b60405180910390fd5b6126cb816127ca565b50565b600960009054906101000a900460ff1681565b600081836126ef9190613c54565b905092915050565b600081836127059190613c88565b905092915050565b6000818361271b9190613cbc565b905092915050565b600081836127319190613d2d565b905092915050565b600033905090565b6127c4846323b872dd60e01b858585604051602401612762939291906131d1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061288e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006128f0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129559092919063ffffffff16565b905060008151111561295057808060200190518101906129109190613234565b61294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690613dd0565b60405180910390fd5b5b505050565b6060612964848460008561296d565b90509392505050565b6060824710156129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a990613e62565b60405180910390fd5b6129bb85612a81565b6129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190613ece565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a239190613f35565b60006040518083038185875af1925050503d8060008114612a60576040519150601f19603f3d011682016040523d82523d6000602084013e612a65565b606091505b5091509150612a75828286612aa4565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315612ab457829050612b04565b600083511115612ac75782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb9190613f85565b60405180910390fd5b9392505050565b6040518060a001604052806060815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7382612b48565b9050919050565b612b8381612b68565b8114612b8e57600080fd5b50565b600081359050612ba081612b7a565b92915050565b6000819050919050565b612bb981612ba6565b8114612bc457600080fd5b50565b600081359050612bd681612bb0565b92915050565b60008060408385031215612bf357612bf2612b3e565b5b6000612c0185828601612b91565b9250506020612c1285828601612bc7565b9150509250929050565b600060208284031215612c3257612c31612b3e565b5b6000612c4084828501612b91565b91505092915050565b612c5281612ba6565b82525050565b6000602082019050612c6d6000830184612c49565b92915050565b600060208284031215612c8957612c88612b3e565b5b6000612c9784828501612bc7565b91505092915050565b612ca981612b68565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612cef57612cee612cca565b5b8235905067ffffffffffffffff811115612d0c57612d0b612ccf565b5b602083019150836001820283011115612d2857612d27612cd4565b5b9250929050565b60008060008060608587031215612d4957612d48612b3e565b5b6000612d5787828801612b91565b9450506020612d6887828801612bc7565b935050604085013567ffffffffffffffff811115612d8957612d88612b43565b5b612d9587828801612cd9565b925092505092959194509250565b60008060208385031215612dba57612db9612b3e565b5b600083013567ffffffffffffffff811115612dd857612dd7612b43565b5b612de485828601612cd9565b92509250509250929050565b600080fd5b600060a08284031215612e0b57612e0a612df0565b5b81905092915050565b600060208284031215612e2a57612e29612b3e565b5b600082013567ffffffffffffffff811115612e4857612e47612b43565b5b612e5484828501612df5565b91505092915050565b60008083601f840112612e7357612e72612cca565b5b8235905067ffffffffffffffff811115612e9057612e8f612ccf565b5b602083019150836020820283011115612eac57612eab612cd4565b5b9250929050565b60008060208385031215612eca57612ec9612b3e565b5b600083013567ffffffffffffffff811115612ee857612ee7612b43565b5b612ef485828601612e5d565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f3a578082015181840152602081019050612f1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f6282612f00565b612f6c8185612f0b565b9350612f7c818560208601612f1c565b612f8581612f46565b840191505092915050565b612f9981612ba6565b82525050565b60008115159050919050565b612fb481612f9f565b82525050565b600060a0830160008301518482036000860152612fd78282612f57565b9150506020830151612fec6020860182612f90565b506040830151612fff6040860182612f90565b5060608301516130126060860182612fab565b5060808301516130256080860182612fab565b508091505092915050565b6000602082019050818103600083015261304a8184612fba565b905092915050565b61305b81612f9f565b82525050565b60006020820190506130766000830184613052565b92915050565b600082825260208201905092915050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b60006130c3600c8361307c565b91506130ce8261308d565b602082019050919050565b600060208201905081810360008301526130f2816130b6565b9050919050565b7f596f752063616e277420616c726561647920756e7374616b6520746f6b656e73600082015250565b600061312f60208361307c565b915061313a826130f9565b602082019050919050565b6000602082019050818103600083015261315e81613122565b9050919050565b7f596f752068617665206e6f20746f6b656e73207374616b656400000000000000600082015250565b600061319b60198361307c565b91506131a682613165565b602082019050919050565b600060208201905081810360008301526131ca8161318e565b9050919050565b60006060820190506131e66000830186612ca0565b6131f36020830185612ca0565b6132006040830184612c49565b949350505050565b61321181612f9f565b811461321c57600080fd5b50565b60008151905061322e81613208565b92915050565b60006020828403121561324a57613249612b3e565b5b60006132588482850161321f565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329760208361307c565b91506132a282613261565b602082019050919050565b600060208201905081810360008301526132c68161328a565b9050919050565b7f5075726368617365206e6f74206c697665000000000000000000000000000000600082015250565b600061330360118361307c565b915061330e826132cd565b602082019050919050565b60006020820190508181036000830152613332816132f6565b9050919050565b60008151905061334881612bb0565b92915050565b60006020828403121561336457613363612b3e565b5b600061337284828501613339565b91505092915050565b7f596f752068617665206e6f205553445400000000000000000000000000000000600082015250565b60006133b160108361307c565b91506133bc8261337b565b602082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b60006040820190506133fc6000830185612ca0565b6134096020830184612ca0565b9392505050565b7f466972737420617070726f766520746f20627579000000000000000000000000600082015250565b600061344660148361307c565b915061345182613410565b602082019050919050565b6000602082019050818103600083015261347581613439565b9050919050565b600081905092915050565b82818337600083830152505050565b60006134a2838561347c565b93506134af838584613487565b82840190509392505050565b60006134c8828486613496565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355a57808604811115613536576135356134d4565b5b60018516156135455780820291505b808102905061355385613503565b945061351a565b94509492505050565b600082613573576001905061362f565b81613581576000905061362f565b816001811461359757600281146135a1576135d0565b600191505061362f565b60ff8411156135b3576135b26134d4565b5b8360020a9150848211156135ca576135c96134d4565b5b5061362f565b5060208310610133831016604e8410600b84101617156136055782820a905083811115613600576135ff6134d4565b5b61362f565b6136128484846001613510565b92509050818404811115613629576136286134d4565b5b81810290505b9392505050565b600061364182612ba6565b915061364c83612ba6565b92506136797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613563565b905092915050565b7f526566657272616c20646f657327742065786973747300000000000000000000600082015250565b60006136b760168361307c565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613719576137186136ed565b5b80840192508235915067ffffffffffffffff82111561373b5761373a6136f2565b5b602083019250600182023603831315613757576137566136f7565b5b509250929050565b60008135905061376e81613208565b92915050565b60006020828403121561378a57613789612b3e565b5b60006137988482850161375f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008235600160a0038336030381126137ec576137eb6136ed565b5b80830191505092915050565b7f526566657272616c20616c726561647920657869737473000000000000000000600082015250565b600061382e60178361307c565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138e557607f821691505b6020821081036138f8576138f761389e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026139607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613923565b61396a8683613923565b95508019841693508086168417925050509392505050565b6000819050919050565b60006139a76139a261399d84612ba6565b613982565b612ba6565b9050919050565b6000819050919050565b6139c18361398c565b6139d56139cd826139ae565b848454613930565b825550505050565b600090565b6139ea6139dd565b6139f58184846139b8565b505050565b5b81811015613a1957613a0e6000826139e2565b6001810190506139fb565b5050565b601f821115613a5e57613a2f816138fe565b613a3884613913565b81016020851015613a47578190505b613a5b613a5385613913565b8301826139fa565b50505b505050565b600082821c905092915050565b6000613a8160001984600802613a63565b1980831691505092915050565b6000613a9a8383613a70565b9150826002028217905092915050565b613ab48383613864565b67ffffffffffffffff811115613acd57613acc61386f565b5b613ad782546138cd565b613ae2828285613a1d565b6000601f831160018114613b115760008415613aff578287013590505b613b098582613a8e565b865550613b71565b601f198416613b1f866138fe565b60005b82811015613b4757848901358255600182019150602085019450602081019050613b22565b86831015613b645784890135613b60601f891682613a70565b8355505b6001600288020188555050505b50505050505050565b6000613b8582612ba6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bb757613bb66134d4565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1e60268361307c565b9150613c2982613bc2565b604082019050919050565b60006020820190508181036000830152613c4d81613c11565b9050919050565b6000613c5f82612ba6565b9150613c6a83612ba6565b9250828201905080821115613c8257613c816134d4565b5b92915050565b6000613c9382612ba6565b9150613c9e83612ba6565b9250828203905081811115613cb657613cb56134d4565b5b92915050565b6000613cc782612ba6565b9150613cd283612ba6565b9250828202613ce081612ba6565b91508282048414831517613cf757613cf66134d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d3882612ba6565b9150613d4383612ba6565b925082613d5357613d52613cfe565b5b828204905092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613dba602a8361307c565b9150613dc582613d5e565b604082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613e4c60268361307c565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613eb8601d8361307c565b9150613ec382613e82565b602082019050919050565b60006020820190508181036000830152613ee781613eab565b9050919050565b600081519050919050565b600081905092915050565b6000613f0f82613eee565b613f198185613ef9565b9350613f29818560208601612f1c565b80840191505092915050565b6000613f418284613f04565b915081905092915050565b6000613f5782612f00565b613f61818561307c565b9350613f71818560208601612f1c565b613f7a81612f46565b840191505092915050565b60006020820190508181036000830152613f9f8184613f4c565b90509291505056fea26469706673582212203bfdeabf77ee97c29b52f6c7ef1aa11699bf16530531b38b6d7f87298bec7e8464736f6c63430008110033000000000000000000000000e08a3e2367ea48af4f7b68d87d5a744c0a3b45d4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000bd78b3077fd182ed4f80b2abdc9071833f9629f8000000000000000000000000504265124456a8c28eefe64fa07bc5cde4445e27
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c806392913bca1161011a578063adc435ae116100ad578063d0ebdbe71161007c578063d0ebdbe714610562578063deaa59df1461057e578063eab47dce1461059a578063f2fde38b146105b6578063fe29f1de146105d2576101fb565b8063adc435ae146104c8578063af3494c9146104f8578063b22ca40d14610514578063b638505114610532576101fb565b8063a1bdb15e116100e9578063a1bdb15e14610430578063a4489ed51461044c578063a583024b14610468578063a749df4b14610498576101fb565b806392913bca146103bc57806396afc450146103d857806397a8da49146103f6578063a035b1fe14610412576101fb565b806351796c99116101925780635c1e645a116101615780635c1e645a1461035a578063715018a6146103785780638da5cb5b1461038257806391b7f5ed146103a0576101fb565b806351796c99146102f8578063521eb2731461031457806352758f3e146103325780635b0801271461033c576101fb565b8063365044a8116101ce578063365044a81461028457806336ed62eb146102a2578063481c6a75146102be5780634862ddc3146102dc576101fb565b80630f4ae692146102005780631395e6401461021c5780631e83409a14610238578063267e8ab614610254575b600080fd5b61021a60048036038101906102159190612bdc565b6105f0565b005b61023660048036038101906102319190612bdc565b6107eb565b005b610252600480360381019061024d9190612c1c565b6109e6565b005b61026e60048036038101906102699190612c1c565b610e8c565b60405161027b9190612c58565b60405180910390f35b61028c610ed5565b6040516102999190612c58565b60405180910390f35b6102bc60048036038101906102b79190612c73565b610edb565b005b6102c6610f61565b6040516102d39190612caf565b60405180910390f35b6102f660048036038101906102f19190612d2f565b610f87565b005b610312600480360381019061030d9190612da3565b6114ef565b005b61031c61166c565b6040516103299190612caf565b60405180910390f35b61033a611692565b005b61034461173a565b6040516103519190612c58565b60405180910390f35b610362611740565b60405161036f9190612c58565b60405180910390f35b610380611746565b005b61038a6117ce565b6040516103979190612caf565b60405180910390f35b6103ba60048036038101906103b59190612c73565b6117f7565b005b6103d660048036038101906103d19190612e14565b61187d565b005b6103e0611a9a565b6040516103ed9190612c58565b60405180910390f35b610410600480360381019061040b9190612c73565b611aa0565b005b61041a611b26565b6040516104279190612c58565b60405180910390f35b61044a60048036038101906104459190612c73565b611b2c565b005b61046660048036038101906104619190612eb3565b611bb2565b005b610482600480360381019061047d9190612c1c565b611eb5565b60405161048f9190612c58565b60405180910390f35b6104b260048036038101906104ad9190612da3565b61212c565b6040516104bf9190613030565b60405180910390f35b6104e260048036038101906104dd9190612c1c565b6122b3565b6040516104ef9190612c58565b60405180910390f35b610512600480360381019061050d9190612c73565b6122fc565b005b61051c612382565b6040516105299190612c58565b60405180910390f35b61054c60048036038101906105479190612c1c565b612388565b6040516105599190612c58565b60405180910390f35b61057c60048036038101906105779190612c1c565b6123d1565b005b61059860048036038101906105939190612c1c565b612491565b005b6105b460048036038101906105af9190612c73565b612551565b005b6105d060048036038101906105cb9190612c1c565b6125d7565b005b6105da6126ce565b6040516105e79190613061565b60405180910390f35b6105f86117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061067e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6106bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b4906130d9565b60405180910390fd5b61070f81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107a481600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6107f36117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108795750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906130d9565b60405180910390fd5b61090a81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061099f81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600354421015610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290613145565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610ab957506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef906131b1565b60405180910390fd5b60006003549050600354600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610b8b57600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000610c2e62015180610c20600754610c12600654610c04600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf68a426126f790919063ffffffff16565b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b61272390919063ffffffff16565b9050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610d0357600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d99565b610d5581600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b42600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd610e236117ce565b85846040518463ffffffff1660e01b8152600401610e43939291906131d1565b6020604051808303816000875af1158015610e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e869190613234565b50505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b610ee3612739565b73ffffffffffffffffffffffffffffffffffffffff16610f016117ce565b73ffffffffffffffffffffffffffffffffffffffff1614610f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4e906132ad565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff16610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90613319565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016110339190612caf565b602060405180830381865afa158015611050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611074919061334e565b9050600081116110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b0906133c7565b60405180910390fd5b83600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016111179291906133e7565b602060405180830381865afa158015611134573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611158919061334e565b1015611199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111909061345c565b60405180910390fd5b61120a33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612741909392919063ffffffff16565b60006004549050600e84846040516112239291906134bb565b908152602001604051809103902060030160019054906101000a900460ff168015611270575042600e858560405161125c9291906134bb565b908152602001604051809103902060020154115b80156112b0575060011515600e858560405161128d9291906134bb565b908152602001604051809103902060030160009054906101000a900460ff161515145b156112dc57600e84846040516112c79291906134bb565b90815260200160405180910390206001015490505b600061132582611317600554611309600854600a6112fa9190613636565b8b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b905061137986600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140e81600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114a381600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e190919063ffffffff16565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b6114f76117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061157d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b3906130d9565b60405180910390fd5b600e82826040516115ce9291906134bb565b908152602001604051809103902060030160019054906101000a900460ff1661162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906136cd565b60405180910390fd5b6000600e83836040516116409291906134bb565b908152602001604051809103902060030160016101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61169a612739565b73ffffffffffffffffffffffffffffffffffffffff166116b86117ce565b73ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611705906132ad565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b60075481565b60035481565b61174e612739565b73ffffffffffffffffffffffffffffffffffffffff1661176c6117ce565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906132ad565b60405180910390fd5b6117cc60006127ca565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ff612739565b73ffffffffffffffffffffffffffffffffffffffff1661181d6117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906132ad565b60405180910390fd5b8060048190555050565b6118856117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061190b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61194a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611941906130d9565b60405180910390fd5b600e81806000019061195c91906136fc565b60405161196a9291906134bb565b908152602001604051809103902060030160019054906101000a900460ff166119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf906136cd565b60405180910390fd5b8060200135600e8280600001906119df91906136fc565b6040516119ed9291906134bb565b9081526020016040518091039020600101819055508060400135600e828060000190611a1991906136fc565b604051611a279291906134bb565b908152602001604051809103902060020181905550806060016020810190611a4f9190613774565b600e828060000190611a6191906136fc565b604051611a6f9291906134bb565b908152602001604051809103902060030160006101000a81548160ff02191690831515021790555050565b60065481565b611aa8612739565b73ffffffffffffffffffffffffffffffffffffffff16611ac66117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b13906132ad565b60405180910390fd5b8060088190555050565b60045481565b611b34612739565b73ffffffffffffffffffffffffffffffffffffffff16611b526117ce565b73ffffffffffffffffffffffffffffffffffffffff1614611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f906132ad565b60405180910390fd5b8060068190555050565b611bba6117ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c76906130d9565b60405180910390fd5b60005b82829050811015611eb05736838383818110611ca157611ca06137a1565b5b9050602002810190611cb391906137d0565b9050600e818060000190611cc791906136fc565b604051611cd59291906134bb565b908152602001604051809103902060030160019054906101000a900460ff1615611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90613844565b60405180910390fd5b808060000190611d4491906136fc565b600e838060000190611d5691906136fc565b604051611d649291906134bb565b90815260200160405180910390206000019182611d82929190613aaa565b508060200135600e828060000190611d9a91906136fc565b604051611da89291906134bb565b9081526020016040518091039020600101819055508060400135600e828060000190611dd491906136fc565b604051611de29291906134bb565b908152602001604051809103902060020181905550806060016020810190611e0a9190613774565b600e828060000190611e1c91906136fc565b604051611e2a9291906134bb565b908152602001604051809103902060030160006101000a81548160ff0219169083151502179055506001600e828060000190611e6691906136fc565b604051611e749291906134bb565b908152602001604051809103902060030160016101000a81548160ff021916908315150217905550508080611ea890613b7a565b915050611c82565b505050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580611f4557506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b80611f51575060035442105b15611f5f5760009050612127565b60006003549050600354600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ff257600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006120956201518061208760075461207960065461206b600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205d8a426126f790919063ffffffff16565b61270d90919063ffffffff16565b61270d90919063ffffffff16565b61272390919063ffffffff16565b61272390919063ffffffff16565b9050600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561212157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b80925050505b919050565b612134612b0b565b600e83836040516121469291906134bb565b908152602001604051809103902060030160019054906101000a900460ff166121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b906136cd565b60405180910390fd5b600e83836040516121b69291906134bb565b90815260200160405180910390206040518060a00160405290816000820180546121df906138cd565b80601f016020809104026020016040519081016040528092919081815260200182805461220b906138cd565b80156122585780601f1061222d57610100808354040283529160200191612258565b820191906000526020600020905b81548152906001019060200180831161223b57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581525050905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612304612739565b73ffffffffffffffffffffffffffffffffffffffff166123226117ce565b73ffffffffffffffffffffffffffffffffffffffff1614612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f906132ad565b60405180910390fd5b8060078190555050565b60085481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6123d9612739565b73ffffffffffffffffffffffffffffffffffffffff166123f76117ce565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612444906132ad565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612499612739565b73ffffffffffffffffffffffffffffffffffffffff166124b76117ce565b73ffffffffffffffffffffffffffffffffffffffff161461250d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612504906132ad565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612559612739565b73ffffffffffffffffffffffffffffffffffffffff166125776117ce565b73ffffffffffffffffffffffffffffffffffffffff16146125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c4906132ad565b60405180910390fd5b8060058190555050565b6125df612739565b73ffffffffffffffffffffffffffffffffffffffff166125fd6117ce565b73ffffffffffffffffffffffffffffffffffffffff1614612653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264a906132ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990613c34565b60405180910390fd5b6126cb816127ca565b50565b600960009054906101000a900460ff1681565b600081836126ef9190613c54565b905092915050565b600081836127059190613c88565b905092915050565b6000818361271b9190613cbc565b905092915050565b600081836127319190613d2d565b905092915050565b600033905090565b6127c4846323b872dd60e01b858585604051602401612762939291906131d1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061288e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006128f0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129559092919063ffffffff16565b905060008151111561295057808060200190518101906129109190613234565b61294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690613dd0565b60405180910390fd5b5b505050565b6060612964848460008561296d565b90509392505050565b6060824710156129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a990613e62565b60405180910390fd5b6129bb85612a81565b6129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190613ece565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a239190613f35565b60006040518083038185875af1925050503d8060008114612a60576040519150601f19603f3d011682016040523d82523d6000602084013e612a65565b606091505b5091509150612a75828286612aa4565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315612ab457829050612b04565b600083511115612ac75782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb9190613f85565b60405180910390fd5b9392505050565b6040518060a001604052806060815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7382612b48565b9050919050565b612b8381612b68565b8114612b8e57600080fd5b50565b600081359050612ba081612b7a565b92915050565b6000819050919050565b612bb981612ba6565b8114612bc457600080fd5b50565b600081359050612bd681612bb0565b92915050565b60008060408385031215612bf357612bf2612b3e565b5b6000612c0185828601612b91565b9250506020612c1285828601612bc7565b9150509250929050565b600060208284031215612c3257612c31612b3e565b5b6000612c4084828501612b91565b91505092915050565b612c5281612ba6565b82525050565b6000602082019050612c6d6000830184612c49565b92915050565b600060208284031215612c8957612c88612b3e565b5b6000612c9784828501612bc7565b91505092915050565b612ca981612b68565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612cef57612cee612cca565b5b8235905067ffffffffffffffff811115612d0c57612d0b612ccf565b5b602083019150836001820283011115612d2857612d27612cd4565b5b9250929050565b60008060008060608587031215612d4957612d48612b3e565b5b6000612d5787828801612b91565b9450506020612d6887828801612bc7565b935050604085013567ffffffffffffffff811115612d8957612d88612b43565b5b612d9587828801612cd9565b925092505092959194509250565b60008060208385031215612dba57612db9612b3e565b5b600083013567ffffffffffffffff811115612dd857612dd7612b43565b5b612de485828601612cd9565b92509250509250929050565b600080fd5b600060a08284031215612e0b57612e0a612df0565b5b81905092915050565b600060208284031215612e2a57612e29612b3e565b5b600082013567ffffffffffffffff811115612e4857612e47612b43565b5b612e5484828501612df5565b91505092915050565b60008083601f840112612e7357612e72612cca565b5b8235905067ffffffffffffffff811115612e9057612e8f612ccf565b5b602083019150836020820283011115612eac57612eab612cd4565b5b9250929050565b60008060208385031215612eca57612ec9612b3e565b5b600083013567ffffffffffffffff811115612ee857612ee7612b43565b5b612ef485828601612e5d565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f3a578082015181840152602081019050612f1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f6282612f00565b612f6c8185612f0b565b9350612f7c818560208601612f1c565b612f8581612f46565b840191505092915050565b612f9981612ba6565b82525050565b60008115159050919050565b612fb481612f9f565b82525050565b600060a0830160008301518482036000860152612fd78282612f57565b9150506020830151612fec6020860182612f90565b506040830151612fff6040860182612f90565b5060608301516130126060860182612fab565b5060808301516130256080860182612fab565b508091505092915050565b6000602082019050818103600083015261304a8184612fba565b905092915050565b61305b81612f9f565b82525050565b60006020820190506130766000830184613052565b92915050565b600082825260208201905092915050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b60006130c3600c8361307c565b91506130ce8261308d565b602082019050919050565b600060208201905081810360008301526130f2816130b6565b9050919050565b7f596f752063616e277420616c726561647920756e7374616b6520746f6b656e73600082015250565b600061312f60208361307c565b915061313a826130f9565b602082019050919050565b6000602082019050818103600083015261315e81613122565b9050919050565b7f596f752068617665206e6f20746f6b656e73207374616b656400000000000000600082015250565b600061319b60198361307c565b91506131a682613165565b602082019050919050565b600060208201905081810360008301526131ca8161318e565b9050919050565b60006060820190506131e66000830186612ca0565b6131f36020830185612ca0565b6132006040830184612c49565b949350505050565b61321181612f9f565b811461321c57600080fd5b50565b60008151905061322e81613208565b92915050565b60006020828403121561324a57613249612b3e565b5b60006132588482850161321f565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329760208361307c565b91506132a282613261565b602082019050919050565b600060208201905081810360008301526132c68161328a565b9050919050565b7f5075726368617365206e6f74206c697665000000000000000000000000000000600082015250565b600061330360118361307c565b915061330e826132cd565b602082019050919050565b60006020820190508181036000830152613332816132f6565b9050919050565b60008151905061334881612bb0565b92915050565b60006020828403121561336457613363612b3e565b5b600061337284828501613339565b91505092915050565b7f596f752068617665206e6f205553445400000000000000000000000000000000600082015250565b60006133b160108361307c565b91506133bc8261337b565b602082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b60006040820190506133fc6000830185612ca0565b6134096020830184612ca0565b9392505050565b7f466972737420617070726f766520746f20627579000000000000000000000000600082015250565b600061344660148361307c565b915061345182613410565b602082019050919050565b6000602082019050818103600083015261347581613439565b9050919050565b600081905092915050565b82818337600083830152505050565b60006134a2838561347c565b93506134af838584613487565b82840190509392505050565b60006134c8828486613496565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355a57808604811115613536576135356134d4565b5b60018516156135455780820291505b808102905061355385613503565b945061351a565b94509492505050565b600082613573576001905061362f565b81613581576000905061362f565b816001811461359757600281146135a1576135d0565b600191505061362f565b60ff8411156135b3576135b26134d4565b5b8360020a9150848211156135ca576135c96134d4565b5b5061362f565b5060208310610133831016604e8410600b84101617156136055782820a905083811115613600576135ff6134d4565b5b61362f565b6136128484846001613510565b92509050818404811115613629576136286134d4565b5b81810290505b9392505050565b600061364182612ba6565b915061364c83612ba6565b92506136797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613563565b905092915050565b7f526566657272616c20646f657327742065786973747300000000000000000000600082015250565b60006136b760168361307c565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613719576137186136ed565b5b80840192508235915067ffffffffffffffff82111561373b5761373a6136f2565b5b602083019250600182023603831315613757576137566136f7565b5b509250929050565b60008135905061376e81613208565b92915050565b60006020828403121561378a57613789612b3e565b5b60006137988482850161375f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008235600160a0038336030381126137ec576137eb6136ed565b5b80830191505092915050565b7f526566657272616c20616c726561647920657869737473000000000000000000600082015250565b600061382e60178361307c565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138e557607f821691505b6020821081036138f8576138f761389e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026139607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613923565b61396a8683613923565b95508019841693508086168417925050509392505050565b6000819050919050565b60006139a76139a261399d84612ba6565b613982565b612ba6565b9050919050565b6000819050919050565b6139c18361398c565b6139d56139cd826139ae565b848454613930565b825550505050565b600090565b6139ea6139dd565b6139f58184846139b8565b505050565b5b81811015613a1957613a0e6000826139e2565b6001810190506139fb565b5050565b601f821115613a5e57613a2f816138fe565b613a3884613913565b81016020851015613a47578190505b613a5b613a5385613913565b8301826139fa565b50505b505050565b600082821c905092915050565b6000613a8160001984600802613a63565b1980831691505092915050565b6000613a9a8383613a70565b9150826002028217905092915050565b613ab48383613864565b67ffffffffffffffff811115613acd57613acc61386f565b5b613ad782546138cd565b613ae2828285613a1d565b6000601f831160018114613b115760008415613aff578287013590505b613b098582613a8e565b865550613b71565b601f198416613b1f866138fe565b60005b82811015613b4757848901358255600182019150602085019450602081019050613b22565b86831015613b645784890135613b60601f891682613a70565b8355505b6001600288020188555050505b50505050505050565b6000613b8582612ba6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bb757613bb66134d4565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1e60268361307c565b9150613c2982613bc2565b604082019050919050565b60006020820190508181036000830152613c4d81613c11565b9050919050565b6000613c5f82612ba6565b9150613c6a83612ba6565b9250828201905080821115613c8257613c816134d4565b5b92915050565b6000613c9382612ba6565b9150613c9e83612ba6565b9250828203905081811115613cb657613cb56134d4565b5b92915050565b6000613cc782612ba6565b9150613cd283612ba6565b9250828202613ce081612ba6565b91508282048414831517613cf757613cf66134d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d3882612ba6565b9150613d4383612ba6565b925082613d5357613d52613cfe565b5b828204905092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613dba602a8361307c565b9150613dc582613d5e565b604082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613e4c60268361307c565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613eb8601d8361307c565b9150613ec382613e82565b602082019050919050565b60006020820190508181036000830152613ee781613eab565b9050919050565b600081519050919050565b600081905092915050565b6000613f0f82613eee565b613f198185613ef9565b9350613f29818560208601612f1c565b80840191505092915050565b6000613f418284613f04565b915081905092915050565b6000613f5782612f00565b613f61818561307c565b9350613f71818560208601612f1c565b613f7a81612f46565b840191505092915050565b60006020820190508181036000830152613f9f8184613f4c565b90509291505056fea26469706673582212203bfdeabf77ee97c29b52f6c7ef1aa11699bf16530531b38b6d7f87298bec7e8464736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e08a3e2367ea48af4f7b68d87d5a744c0a3b45d4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000bd78b3077fd182ed4f80b2abdc9071833f9629f8000000000000000000000000504265124456a8c28eefe64fa07bc5cde4445e27
-----Decoded View---------------
Arg [0] : _WCAToken (address): 0xe08a3E2367Ea48Af4f7B68d87D5a744C0A3b45D4
Arg [1] : _USDT (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : _wallet (address): 0xbD78B3077fD182ed4F80B2abDC9071833f9629f8
Arg [3] : _manager (address): 0x504265124456A8C28eEFE64fA07BC5cde4445E27
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000e08a3e2367ea48af4f7b68d87d5a744c0a3b45d4
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : 000000000000000000000000bd78b3077fd182ed4f80b2abdc9071833f9629f8
Arg [3] : 000000000000000000000000504265124456a8c28eefe64fa07bc5cde4445e27
Deployed Bytecode Sourcemap
28816:8121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32895:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33171:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34573:1018;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35599:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29223:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32085:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29106:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33448:1117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31462:203;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29078:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32791:96;;;:::i;:::-;;29302:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29135:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27898:103;;;:::i;:::-;;27247:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32217:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31121:333;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29263:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32689:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29191:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32433:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30475:638;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35944:862;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31673:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36814:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32555:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29347:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35773:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31983:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31885:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32311:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28156:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29381:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32895:268;30132:7;:5;:7::i;:::-;30118:21;;:10;:21;;;:46;;;;30157:7;;;;;;;;;;;30143:21;;:10;:21;;;30118:46;30110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33009:35:::1;33038:5;33009:14;:24;33024:8;33009:24;;;;;;;;;;;;;;;;:28;;:35;;;;:::i;:::-;32982:14;:24;32997:8;32982:24;;;;;;;;;;;;;;;:62;;;;33089:66;33139:5;33089:21;:31;33111:8;33089:31;;;;;;;;;;;;;;;;:35;;:66;;;;:::i;:::-;33055:21;:31;33077:8;33055:31;;;;;;;;;;;;;;;:100;;;;32895:268:::0;;:::o;33171:269::-;30132:7;:5;:7::i;:::-;30118:21;;:10;:21;;;:46;;;;30157:7;;;;;;;;;;;30143:21;;:10;:21;;;30118:46;30110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33286:35:::1;33315:5;33286:14;:24;33301:8;33286:24;;;;;;;;;;;;;;;;:28;;:35;;;;:::i;:::-;33259:14;:24;33274:8;33259:24;;;;;;;;;;;;;;;:62;;;;33366:66;33416:5;33366:21;:31;33388:8;33366:31;;;;;;;;;;;;;;;;:35;;:66;;;;:::i;:::-;33332:21;:31;33354:8;33332:31;;;;;;;;;;;;;;;:100;;;;33171:269:::0;;:::o;34573:1018::-;29852:21;;29833:15;:40;;29811:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;34686:1:::1;34659:14;:24;34674:8;34659:24;;;;;;;;;;;;;;;;:28;:67;;;;;34725:1;34691:21;:31;34713:8;34691:31;;;;;;;;;;;;;;;;:35;34659:67;34637:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;34792:21;34816;;34792:45;;34882:21;;34852:17;:27;34870:8;34852:27;;;;;;;;;;;;;;;;:51;34848:127;;;34936:17;:27;34954:8;34936:27;;;;;;;;;;;;;;;;34920:43;;34848:127;34987:15;35005:205;35204:5;35005:180;35169:15;;35005:145;35137:12;;35005:113;35086:21;:31;35108:8;35086:31;;;;;;;;;;;;;;;;35005:62;35053:13;35005:29;:47;;:62;;;;:::i;:::-;:80;;:113;;;;:::i;:::-;:131;;:145;;;;:::i;:::-;:163;;:180;;;;:::i;:::-;:198;;:205;;;;:::i;:::-;34987:223;;35237:14;:24;35252:8;35237:24;;;;;;;;;;;;;;;;35227:7;:34;35223:241;;;35288:14;:24;35303:8;35288:24;;;;;;;;;;;;;;;;35278:34;;35354:1;35327:14;:24;35342:8;35327:24;;;;;;;;;;;;;;;:28;;;;35223:241;;;35415:37;35444:7;35415:14;:24;35430:8;35415:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;35388:14;:24;35403:8;35388:24;;;;;;;;;;;;;;;:64;;;;35223:241;35506:15;35476:17;:27;35494:8;35476:27;;;;;;;;;;;;;;;:45;;;;35534:8;;;;;;;;;;;:21;;;35556:7;:5;:7::i;:::-;35565:8;35575:7;35534:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34626:965;;34573:1018:::0;:::o;35599:166::-;35694:7;35726:21;:31;35748:8;35726:31;;;;;;;;;;;;;;;;35719:38;;35599:166;;;:::o;29223:33::-;;;;:::o;32085:124::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32192:9:::1;32168:21;:33;;;;32085:124:::0;:::o;29106:22::-;;;;;;;;;;;;;:::o;33448:1117::-;30007:12;;;;;;;;;;;29999:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;33591:15:::1;33609:4;;;;;;;;;;;:14;;;33624:10;33609:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33591:44;;33666:1;33656:7;:11;33648:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;33768:6;33723:4;;;;;;;;;;;:14;;;33738:10;33758:4;33723:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;33701:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;33835:49;33857:10;33869:6;;;;;;;;;;;33877;33835:4;;;;;;;;;;;:21;;;;:49;;;;;;:::i;:::-;33897:14;33914:5;;33897:22;;33948:14;33963:8;;33948:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;;;:101;;;;;34034:15;33996:14;34011:8;;33996:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:35;;;:53;33948:101;:157;;;;;34101:4;34066:39;;:14;34081:8;;34066:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;;;:39;;;33948:157;33930:253;;;34141:14;34156:8;;34141:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;34132:39;;33930:253;34195:18;34216:77;34276:6;34216:41;34244:12;;34216:23;34231:7;;34227:2;:11;;;;:::i;:::-;34216:6;:10;;:23;;;;:::i;:::-;:27;;:41;;;;:::i;:::-;:45;;:77;;;;:::i;:::-;34195:98;;34329:34;34356:6;34329:12;:22;34342:8;34329:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;34304:12;:22;34317:8;34304:22;;;;;;;;;;;;;;;:59;;;;34401:40;34430:10;34401:14;:24;34416:8;34401:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;34374:14;:24;34389:8;34374:24;;;;;;;;;;;;;;;:67;;;;34486:71;34536:10;34486:21;:31;34508:8;34486:31;;;;;;;;;;;;;;;;:35;;:71;;;;:::i;:::-;34452:21;:31;34474:8;34452:31;;;;;;;;;;;;;;;:105;;;;33580:985;;;33448:1117:::0;;;;:::o;31462:203::-;30132:7;:5;:7::i;:::-;30118:21;;:10;:21;;;:46;;;;30157:7;;;;;;;;;;;30143:21;;:10;:21;;;30118:46;30110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31555:14:::1;31570:4;;31555:20;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;;;;;;;;;;;31547:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31652:5;31622:14;31637:4;;31622:20;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;;:35;;;;;;;;;;;;;;;;;;31462:203:::0;;:::o;29078:21::-;;;;;;;;;;;;;:::o;32791:96::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32867:12:::1;;;;;;;;;;;32866:13;32851:12;;:28;;;;;;;;;;;;;;;;;;32791:96::o:0;29302:38::-;;;;:::o;29135:49::-;;;;:::o;27898:103::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27963:30:::1;27990:1;27963:18;:30::i;:::-;27898:103::o:0;27247:87::-;27293:7;27320:6;;;;;;;;;;;27313:13;;27247:87;:::o;32217:86::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32289:6:::1;32281:5;:14;;;;32217:86:::0;:::o;31121:333::-;30132:7;:5;:7::i;:::-;30118:21;;:10;:21;;;:46;;;;30157:7;;;;;;;;;;;30143:21;;:10;:21;;;30118:46;30110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31215:14:::1;31230:3;:8;;;;;;;;:::i;:::-;31215:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;;;31207:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;31319:3;:9;;;31286:14;31301:3;:8;;;;;;;;:::i;:::-;31286:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;:42;;;;31377:3;:14;;;31339;31354:3;:8;;;;;;;;:::i;:::-;31339:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:35;;:52;;;;31436:3;:10;;;;;;;;;;:::i;:::-;31402:14;31417:3;:8;;;;;;;;:::i;:::-;31402:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;:44;;;;;;;;;;;;;;;;;;31121:333:::0;:::o;29263:32::-;;;;:::o;32689:94::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32767:8:::1;32757:7;:18;;;;32689:94:::0;:::o;29191:25::-;;;;:::o;32433:114::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32526:13:::1;32511:12;:28;;;;32433:114:::0;:::o;30475:638::-;30132:7;:5;:7::i;:::-;30118:21;;:10;:21;;;:46;;;;30157:7;;;;;;;;;;;30143:21;;:10;:21;;;30118:46;30110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;30590:9:::1;30585:521;30605:4;;:11;;30601:1;:15;30585:521;;;30638:21;30662:4;;30667:1;30662:7;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;30638:31;;30711:14;30726:3;:8;;;;;;;;:::i;:::-;30711:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;;;30710:32;30684:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;30850:3;:8;;;;;;;;:::i;:::-;30818:14;30833:3;:8;;;;;;;;:::i;:::-;30818:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;;:40;;;;;;;:::i;:::-;;30906:3;:9;;;30873:14;30888:3;:8;;;;;;;;:::i;:::-;30873:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;:42;;;;30968:3;:14;;;30930;30945:3;:8;;;;;;;;:::i;:::-;30930:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:35;;:52;;;;31031:3;:10;;;;;;;;;;:::i;:::-;30997:14;31012:3;:8;;;;;;;;:::i;:::-;30997:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;:44;;;;;;;;;;;;;;;;;;31090:4;31056:14;31071:3;:8;;;;;;;;:::i;:::-;31056:24;;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;:38;;;;;;;;;;;;;;;;;;30623:483;30618:3;;;;;:::i;:::-;;;;30585:521;;;;30475:638:::0;;:::o;35944:862::-;36007:7;36073:1;36045:14;:24;36060:8;36045:24;;;;;;;;;;;;;;;;:29;;:82;;;;36126:1;36091:21;:31;36113:8;36091:31;;;;;;;;;;;;;;;;:36;;36045:82;:138;;;;36162:21;;36144:15;:39;36045:138;36027:203;;;36217:1;36210:8;;;;36027:203;36242:21;36266;;36242:45;;36332:21;;36302:17;:27;36320:8;36302:27;;;;;;;;;;;;;;;;:51;36298:127;;;36386:17;:27;36404:8;36386:27;;;;;;;;;;;;;;;;36370:43;;36298:127;36437:15;36455:205;36654:5;36455:180;36619:15;;36455:145;36587:12;;36455:113;36536:21;:31;36558:8;36536:31;;;;;;;;;;;;;;;;36455:62;36503:13;36455:29;:47;;:62;;;;:::i;:::-;:80;;:113;;;;:::i;:::-;:131;;:145;;;;:::i;:::-;:163;;:180;;;;:::i;:::-;:198;;:205;;;;:::i;:::-;36437:223;;36685:14;:24;36700:8;36685:24;;;;;;;;;;;;;;;;36675:7;:34;36671:101;;;36736:14;:24;36751:8;36736:24;;;;;;;;;;;;;;;;36726:34;;36671:101;36791:7;36784:14;;;;35944:862;;;;:::o;31673:204::-;31739:15;;:::i;:::-;31775:14;31790:4;;31775:20;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;;;;;;;;;;;31767:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31849:14;31864:4;;31849:20;;;;;;;:::i;:::-;;;;;;;;;;;;;31842:27;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31673:204;;;;:::o;36814:120::-;36877:7;36904:12;:22;36917:8;36904:22;;;;;;;;;;;;;;;;36897:29;;36814:120;;;:::o;32555:126::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32657:16:::1;32639:15;:34;;;;32555:126:::0;:::o;29347:27::-;;;;:::o;35773:163::-;35872:7;35904:14;:24;35919:8;35904:24;;;;;;;;;;;;;;;;35897:31;;35773:163;;;:::o;31983:94::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32061:8:::1;32051:7;;:18;;;;;;;;;;;;;;;;;;31983:94:::0;:::o;31885:90::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31960:7:::1;31951:6;;:16;;;;;;;;;;;;;;;;;;31885:90:::0;:::o;32311:114::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32404:13:::1;32389:12;:28;;;;32311:114:::0;:::o;28156:201::-;27478:12;:10;:12::i;:::-;27467:23;;:7;:5;:7::i;:::-;:23;;;27459:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28265:1:::1;28245:22;;:8;:22;;::::0;28237:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28321:28;28340:8;28321:18;:28::i;:::-;28156:201:::0;:::o;29381:32::-;;;;;;;;;;;;;:::o;2876:98::-;2934:7;2965:1;2961;:5;;;;:::i;:::-;2954:12;;2876:98;;;;:::o;3257:::-;3315:7;3346:1;3342;:5;;;;:::i;:::-;3335:12;;3257:98;;;;:::o;3614:::-;3672:7;3703:1;3699;:5;;;;:::i;:::-;3692:12;;3614:98;;;;:::o;4013:::-;4071:7;4102:1;4098;:5;;;;:::i;:::-;4091:12;;4013:98;;;;:::o;25971:::-;26024:7;26051:10;26044:17;;25971:98;:::o;21721:248::-;21865:96;21885:5;21915:27;;;21944:4;21950:2;21954:5;21892:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21865:19;:96::i;:::-;21721:248;;;;:::o;28517:191::-;28591:16;28610:6;;;;;;;;;;;28591:25;;28636:8;28627:6;;:17;;;;;;;;;;;;;;;;;;28691:8;28660:40;;28681:8;28660:40;;;;;;;;;;;;28580:128;28517:191;:::o;24569:716::-;24993:23;25019:69;25047:4;25019:69;;;;;;;;;;;;;;;;;25027:5;25019:27;;;;:69;;;;;:::i;:::-;24993:95;;25123:1;25103:10;:17;:21;25099:179;;;25200:10;25189:30;;;;;;;;;;;;:::i;:::-;25181:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25099:179;24639:646;24569:716;;:::o;11019:229::-;11156:12;11188:52;11210:6;11218:4;11224:1;11227:12;11188:21;:52::i;:::-;11181:59;;11019:229;;;;;:::o;12139:510::-;12309:12;12367:5;12342:21;:30;;12334:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12434:18;12445:6;12434:10;:18::i;:::-;12426:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12500:12;12514:23;12541:6;:11;;12560:5;12567:4;12541:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12499:73;;;;12590:51;12607:7;12616:10;12628:12;12590:16;:51::i;:::-;12583:58;;;;12139:510;;;;;;:::o;8274:326::-;8334:4;8591:1;8569:7;:19;;;:23;8562:30;;8274:326;;;:::o;14825:712::-;14975:12;15004:7;15000:530;;;15035:10;15028:17;;;;15000:530;15169:1;15149:10;:17;:21;15145:374;;;15347:10;15341:17;15408:15;15395:10;15391:2;15387:19;15380:44;15145:374;15490:12;15483:20;;;;;;;;;;;:::i;:::-;;;;;;;;14825:712;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:329::-;1736:6;1785:2;1773:9;1764:7;1760:23;1756:32;1753:119;;;1791:79;;:::i;:::-;1753:119;1911:1;1936:53;1981:7;1972:6;1961:9;1957:22;1936:53;:::i;:::-;1926:63;;1882:117;1677:329;;;;:::o;2012:118::-;2099:24;2117:5;2099:24;:::i;:::-;2094:3;2087:37;2012:118;;:::o;2136:222::-;2229:4;2267:2;2256:9;2252:18;2244:26;;2280:71;2348:1;2337:9;2333:17;2324:6;2280:71;:::i;:::-;2136:222;;;;:::o;2364:329::-;2423:6;2472:2;2460:9;2451:7;2447:23;2443:32;2440:119;;;2478:79;;:::i;:::-;2440:119;2598:1;2623:53;2668:7;2659:6;2648:9;2644:22;2623:53;:::i;:::-;2613:63;;2569:117;2364:329;;;;:::o;2699:118::-;2786:24;2804:5;2786:24;:::i;:::-;2781:3;2774:37;2699:118;;:::o;2823:222::-;2916:4;2954:2;2943:9;2939:18;2931:26;;2967:71;3035:1;3024:9;3020:17;3011:6;2967:71;:::i;:::-;2823:222;;;;:::o;3051:117::-;3160:1;3157;3150:12;3174:117;3283:1;3280;3273:12;3297:117;3406:1;3403;3396:12;3434:553;3492:8;3502:6;3552:3;3545:4;3537:6;3533:17;3529:27;3519:122;;3560:79;;:::i;:::-;3519:122;3673:6;3660:20;3650:30;;3703:18;3695:6;3692:30;3689:117;;;3725:79;;:::i;:::-;3689:117;3839:4;3831:6;3827:17;3815:29;;3893:3;3885:4;3877:6;3873:17;3863:8;3859:32;3856:41;3853:128;;;3900:79;;:::i;:::-;3853:128;3434:553;;;;;:::o;3993:819::-;4082:6;4090;4098;4106;4155:2;4143:9;4134:7;4130:23;4126:32;4123:119;;;4161:79;;:::i;:::-;4123:119;4281:1;4306:53;4351:7;4342:6;4331:9;4327:22;4306:53;:::i;:::-;4296:63;;4252:117;4408:2;4434:53;4479:7;4470:6;4459:9;4455:22;4434:53;:::i;:::-;4424:63;;4379:118;4564:2;4553:9;4549:18;4536:32;4595:18;4587:6;4584:30;4581:117;;;4617:79;;:::i;:::-;4581:117;4730:65;4787:7;4778:6;4767:9;4763:22;4730:65;:::i;:::-;4712:83;;;;4507:298;3993:819;;;;;;;:::o;4818:529::-;4889:6;4897;4946:2;4934:9;4925:7;4921:23;4917:32;4914:119;;;4952:79;;:::i;:::-;4914:119;5100:1;5089:9;5085:17;5072:31;5130:18;5122:6;5119:30;5116:117;;;5152:79;;:::i;:::-;5116:117;5265:65;5322:7;5313:6;5302:9;5298:22;5265:65;:::i;:::-;5247:83;;;;5043:297;4818:529;;;;;:::o;5353:117::-;5462:1;5459;5452:12;5515:233;5589:5;5630:3;5621:6;5616:3;5612:16;5608:26;5605:113;;;5637:79;;:::i;:::-;5605:113;5736:6;5727:15;;5515:233;;;;:::o;5754:545::-;5841:6;5890:2;5878:9;5869:7;5865:23;5861:32;5858:119;;;5896:79;;:::i;:::-;5858:119;6044:1;6033:9;6029:17;6016:31;6074:18;6066:6;6063:30;6060:117;;;6096:79;;:::i;:::-;6060:117;6201:81;6274:7;6265:6;6254:9;6250:22;6201:81;:::i;:::-;6191:91;;5987:305;5754:545;;;;:::o;6346:596::-;6447:8;6457:6;6507:3;6500:4;6492:6;6488:17;6484:27;6474:122;;6515:79;;:::i;:::-;6474:122;6628:6;6615:20;6605:30;;6658:18;6650:6;6647:30;6644:117;;;6680:79;;:::i;:::-;6644:117;6794:4;6786:6;6782:17;6770:29;;6848:3;6840:4;6832:6;6828:17;6818:8;6814:32;6811:41;6808:128;;;6855:79;;:::i;:::-;6808:128;6346:596;;;;;:::o;6948:615::-;7062:6;7070;7119:2;7107:9;7098:7;7094:23;7090:32;7087:119;;;7125:79;;:::i;:::-;7087:119;7273:1;7262:9;7258:17;7245:31;7303:18;7295:6;7292:30;7289:117;;;7325:79;;:::i;:::-;7289:117;7438:108;7538:7;7529:6;7518:9;7514:22;7438:108;:::i;:::-;7420:126;;;;7216:340;6948:615;;;;;:::o;7569:99::-;7621:6;7655:5;7649:12;7639:22;;7569:99;;;:::o;7674:159::-;7748:11;7782:6;7777:3;7770:19;7822:4;7817:3;7813:14;7798:29;;7674:159;;;;:::o;7839:246::-;7920:1;7930:113;7944:6;7941:1;7938:13;7930:113;;;8029:1;8024:3;8020:11;8014:18;8010:1;8005:3;8001:11;7994:39;7966:2;7963:1;7959:10;7954:15;;7930:113;;;8077:1;8068:6;8063:3;8059:16;8052:27;7901:184;7839:246;;;:::o;8091:102::-;8132:6;8183:2;8179:7;8174:2;8167:5;8163:14;8159:28;8149:38;;8091:102;;;:::o;8199:357::-;8277:3;8305:39;8338:5;8305:39;:::i;:::-;8360:61;8414:6;8409:3;8360:61;:::i;:::-;8353:68;;8430:65;8488:6;8483:3;8476:4;8469:5;8465:16;8430:65;:::i;:::-;8520:29;8542:6;8520:29;:::i;:::-;8515:3;8511:39;8504:46;;8281:275;8199:357;;;;:::o;8562:108::-;8639:24;8657:5;8639:24;:::i;:::-;8634:3;8627:37;8562:108;;:::o;8676:90::-;8710:7;8753:5;8746:13;8739:21;8728:32;;8676:90;;;:::o;8772:99::-;8843:21;8858:5;8843:21;:::i;:::-;8838:3;8831:34;8772:99;;:::o;8951:1129::-;9072:3;9108:4;9103:3;9099:14;9195:4;9188:5;9184:16;9178:23;9248:3;9242:4;9238:14;9231:4;9226:3;9222:14;9215:38;9274:73;9342:4;9328:12;9274:73;:::i;:::-;9266:81;;9123:235;9441:4;9434:5;9430:16;9424:23;9460:63;9517:4;9512:3;9508:14;9494:12;9460:63;:::i;:::-;9368:165;9621:4;9614:5;9610:16;9604:23;9640:63;9697:4;9692:3;9688:14;9674:12;9640:63;:::i;:::-;9543:170;9797:4;9790:5;9786:16;9780:23;9816:57;9867:4;9862:3;9858:14;9844:12;9816:57;:::i;:::-;9723:160;9967:4;9960:5;9956:16;9950:23;9986:57;10037:4;10032:3;10028:14;10014:12;9986:57;:::i;:::-;9893:160;10070:4;10063:11;;9077:1003;8951:1129;;;;:::o;10086:377::-;10231:4;10269:2;10258:9;10254:18;10246:26;;10318:9;10312:4;10308:20;10304:1;10293:9;10289:17;10282:47;10346:110;10451:4;10442:6;10346:110;:::i;:::-;10338:118;;10086:377;;;;:::o;10469:109::-;10550:21;10565:5;10550:21;:::i;:::-;10545:3;10538:34;10469:109;;:::o;10584:210::-;10671:4;10709:2;10698:9;10694:18;10686:26;;10722:65;10784:1;10773:9;10769:17;10760:6;10722:65;:::i;:::-;10584:210;;;;:::o;10800:169::-;10884:11;10918:6;10913:3;10906:19;10958:4;10953:3;10949:14;10934:29;;10800:169;;;;:::o;10975:162::-;11115:14;11111:1;11103:6;11099:14;11092:38;10975:162;:::o;11143:366::-;11285:3;11306:67;11370:2;11365:3;11306:67;:::i;:::-;11299:74;;11382:93;11471:3;11382:93;:::i;:::-;11500:2;11495:3;11491:12;11484:19;;11143:366;;;:::o;11515:419::-;11681:4;11719:2;11708:9;11704:18;11696:26;;11768:9;11762:4;11758:20;11754:1;11743:9;11739:17;11732:47;11796:131;11922:4;11796:131;:::i;:::-;11788:139;;11515:419;;;:::o;11940:182::-;12080:34;12076:1;12068:6;12064:14;12057:58;11940:182;:::o;12128:366::-;12270:3;12291:67;12355:2;12350:3;12291:67;:::i;:::-;12284:74;;12367:93;12456:3;12367:93;:::i;:::-;12485:2;12480:3;12476:12;12469:19;;12128:366;;;:::o;12500:419::-;12666:4;12704:2;12693:9;12689:18;12681:26;;12753:9;12747:4;12743:20;12739:1;12728:9;12724:17;12717:47;12781:131;12907:4;12781:131;:::i;:::-;12773:139;;12500:419;;;:::o;12925:175::-;13065:27;13061:1;13053:6;13049:14;13042:51;12925:175;:::o;13106:366::-;13248:3;13269:67;13333:2;13328:3;13269:67;:::i;:::-;13262:74;;13345:93;13434:3;13345:93;:::i;:::-;13463:2;13458:3;13454:12;13447:19;;13106:366;;;:::o;13478:419::-;13644:4;13682:2;13671:9;13667:18;13659:26;;13731:9;13725:4;13721:20;13717:1;13706:9;13702:17;13695:47;13759:131;13885:4;13759:131;:::i;:::-;13751:139;;13478:419;;;:::o;13903:442::-;14052:4;14090:2;14079:9;14075:18;14067:26;;14103:71;14171:1;14160:9;14156:17;14147:6;14103:71;:::i;:::-;14184:72;14252:2;14241:9;14237:18;14228:6;14184:72;:::i;:::-;14266;14334:2;14323:9;14319:18;14310:6;14266:72;:::i;:::-;13903:442;;;;;;:::o;14351:116::-;14421:21;14436:5;14421:21;:::i;:::-;14414:5;14411:32;14401:60;;14457:1;14454;14447:12;14401:60;14351:116;:::o;14473:137::-;14527:5;14558:6;14552:13;14543:22;;14574:30;14598:5;14574:30;:::i;:::-;14473:137;;;;:::o;14616:345::-;14683:6;14732:2;14720:9;14711:7;14707:23;14703:32;14700:119;;;14738:79;;:::i;:::-;14700:119;14858:1;14883:61;14936:7;14927:6;14916:9;14912:22;14883:61;:::i;:::-;14873:71;;14829:125;14616:345;;;;:::o;14967:182::-;15107:34;15103:1;15095:6;15091:14;15084:58;14967:182;:::o;15155:366::-;15297:3;15318:67;15382:2;15377:3;15318:67;:::i;:::-;15311:74;;15394:93;15483:3;15394:93;:::i;:::-;15512:2;15507:3;15503:12;15496:19;;15155:366;;;:::o;15527:419::-;15693:4;15731:2;15720:9;15716:18;15708:26;;15780:9;15774:4;15770:20;15766:1;15755:9;15751:17;15744:47;15808:131;15934:4;15808:131;:::i;:::-;15800:139;;15527:419;;;:::o;15952:167::-;16092:19;16088:1;16080:6;16076:14;16069:43;15952:167;:::o;16125:366::-;16267:3;16288:67;16352:2;16347:3;16288:67;:::i;:::-;16281:74;;16364:93;16453:3;16364:93;:::i;:::-;16482:2;16477:3;16473:12;16466:19;;16125:366;;;:::o;16497:419::-;16663:4;16701:2;16690:9;16686:18;16678:26;;16750:9;16744:4;16740:20;16736:1;16725:9;16721:17;16714:47;16778:131;16904:4;16778:131;:::i;:::-;16770:139;;16497:419;;;:::o;16922:143::-;16979:5;17010:6;17004:13;16995:22;;17026:33;17053:5;17026:33;:::i;:::-;16922:143;;;;:::o;17071:351::-;17141:6;17190:2;17178:9;17169:7;17165:23;17161:32;17158:119;;;17196:79;;:::i;:::-;17158:119;17316:1;17341:64;17397:7;17388:6;17377:9;17373:22;17341:64;:::i;:::-;17331:74;;17287:128;17071:351;;;;:::o;17428:166::-;17568:18;17564:1;17556:6;17552:14;17545:42;17428:166;:::o;17600:366::-;17742:3;17763:67;17827:2;17822:3;17763:67;:::i;:::-;17756:74;;17839:93;17928:3;17839:93;:::i;:::-;17957:2;17952:3;17948:12;17941:19;;17600:366;;;:::o;17972:419::-;18138:4;18176:2;18165:9;18161:18;18153:26;;18225:9;18219:4;18215:20;18211:1;18200:9;18196:17;18189:47;18253:131;18379:4;18253:131;:::i;:::-;18245:139;;17972:419;;;:::o;18397:332::-;18518:4;18556:2;18545:9;18541:18;18533:26;;18569:71;18637:1;18626:9;18622:17;18613:6;18569:71;:::i;:::-;18650:72;18718:2;18707:9;18703:18;18694:6;18650:72;:::i;:::-;18397:332;;;;;:::o;18735:170::-;18875:22;18871:1;18863:6;18859:14;18852:46;18735:170;:::o;18911:366::-;19053:3;19074:67;19138:2;19133:3;19074:67;:::i;:::-;19067:74;;19150:93;19239:3;19150:93;:::i;:::-;19268:2;19263:3;19259:12;19252:19;;18911:366;;;:::o;19283:419::-;19449:4;19487:2;19476:9;19472:18;19464:26;;19536:9;19530:4;19526:20;19522:1;19511:9;19507:17;19500:47;19564:131;19690:4;19564:131;:::i;:::-;19556:139;;19283:419;;;:::o;19708:148::-;19810:11;19847:3;19832:18;;19708:148;;;;:::o;19862:146::-;19959:6;19954:3;19949;19936:30;20000:1;19991:6;19986:3;19982:16;19975:27;19862:146;;;:::o;20038:330::-;20154:3;20175:89;20257:6;20252:3;20175:89;:::i;:::-;20168:96;;20274:56;20323:6;20318:3;20311:5;20274:56;:::i;:::-;20355:6;20350:3;20346:16;20339:23;;20038:330;;;;;:::o;20374:295::-;20516:3;20538:105;20639:3;20630:6;20622;20538:105;:::i;:::-;20531:112;;20660:3;20653:10;;20374:295;;;;;:::o;20675:180::-;20723:77;20720:1;20713:88;20820:4;20817:1;20810:15;20844:4;20841:1;20834:15;20861:102;20903:8;20950:5;20947:1;20943:13;20922:34;;20861:102;;;:::o;20969:848::-;21030:5;21037:4;21061:6;21052:15;;21085:5;21076:14;;21099:712;21120:1;21110:8;21107:15;21099:712;;;21215:4;21210:3;21206:14;21200:4;21197:24;21194:50;;;21224:18;;:::i;:::-;21194:50;21274:1;21264:8;21260:16;21257:451;;;21689:4;21682:5;21678:16;21669:25;;21257:451;21739:4;21733;21729:15;21721:23;;21769:32;21792:8;21769:32;:::i;:::-;21757:44;;21099:712;;;20969:848;;;;;;;:::o;21823:1073::-;21877:5;22068:8;22058:40;;22089:1;22080:10;;22091:5;;22058:40;22117:4;22107:36;;22134:1;22125:10;;22136:5;;22107:36;22203:4;22251:1;22246:27;;;;22287:1;22282:191;;;;22196:277;;22246:27;22264:1;22255:10;;22266:5;;;22282:191;22327:3;22317:8;22314:17;22311:43;;;22334:18;;:::i;:::-;22311:43;22383:8;22380:1;22376:16;22367:25;;22418:3;22411:5;22408:14;22405:40;;;22425:18;;:::i;:::-;22405:40;22458:5;;;22196:277;;22582:2;22572:8;22569:16;22563:3;22557:4;22554:13;22550:36;22532:2;22522:8;22519:16;22514:2;22508:4;22505:12;22501:35;22485:111;22482:246;;;22638:8;22632:4;22628:19;22619:28;;22673:3;22666:5;22663:14;22660:40;;;22680:18;;:::i;:::-;22660:40;22713:5;;22482:246;22753:42;22791:3;22781:8;22775:4;22772:1;22753:42;:::i;:::-;22738:57;;;;22827:4;22822:3;22818:14;22811:5;22808:25;22805:51;;;22836:18;;:::i;:::-;22805:51;22885:4;22878:5;22874:16;22865:25;;21823:1073;;;;;;:::o;22902:285::-;22962:5;22986:23;23004:4;22986:23;:::i;:::-;22978:31;;23030:27;23048:8;23030:27;:::i;:::-;23018:39;;23076:104;23113:66;23103:8;23097:4;23076:104;:::i;:::-;23067:113;;22902:285;;;;:::o;23193:172::-;23333:24;23329:1;23321:6;23317:14;23310:48;23193:172;:::o;23371:366::-;23513:3;23534:67;23598:2;23593:3;23534:67;:::i;:::-;23527:74;;23610:93;23699:3;23610:93;:::i;:::-;23728:2;23723:3;23719:12;23712:19;;23371:366;;;:::o;23743:419::-;23909:4;23947:2;23936:9;23932:18;23924:26;;23996:9;23990:4;23986:20;23982:1;23971:9;23967:17;23960:47;24024:131;24150:4;24024:131;:::i;:::-;24016:139;;23743:419;;;:::o;24168:117::-;24277:1;24274;24267:12;24291:117;24400:1;24397;24390:12;24414:117;24523:1;24520;24513:12;24537:725;24615:4;24621:6;24677:11;24664:25;24777:1;24771:4;24767:12;24756:8;24740:14;24736:29;24732:48;24712:18;24708:73;24698:168;;24785:79;;:::i;:::-;24698:168;24897:18;24887:8;24883:33;24875:41;;24949:4;24936:18;24926:28;;24977:18;24969:6;24966:30;24963:117;;;24999:79;;:::i;:::-;24963:117;25107:2;25101:4;25097:13;25089:21;;25164:4;25156:6;25152:17;25136:14;25132:38;25126:4;25122:49;25119:136;;;25174:79;;:::i;:::-;25119:136;24628:634;24537:725;;;;;:::o;25268:133::-;25311:5;25349:6;25336:20;25327:29;;25365:30;25389:5;25365:30;:::i;:::-;25268:133;;;;:::o;25407:323::-;25463:6;25512:2;25500:9;25491:7;25487:23;25483:32;25480:119;;;25518:79;;:::i;:::-;25480:119;25638:1;25663:50;25705:7;25696:6;25685:9;25681:22;25663:50;:::i;:::-;25653:60;;25609:114;25407:323;;;;:::o;25736:180::-;25784:77;25781:1;25774:88;25881:4;25878:1;25871:15;25905:4;25902:1;25895:15;25922:394;26016:4;26070:11;26057:25;26170:1;26164:4;26160:12;26149:8;26133:14;26129:29;26125:48;26105:18;26101:73;26091:168;;26178:79;;:::i;:::-;26091:168;26290:18;26280:8;26276:33;26268:41;;26021:295;25922:394;;;;:::o;26322:173::-;26462:25;26458:1;26450:6;26446:14;26439:49;26322:173;:::o;26501:366::-;26643:3;26664:67;26728:2;26723:3;26664:67;:::i;:::-;26657:74;;26740:93;26829:3;26740:93;:::i;:::-;26858:2;26853:3;26849:12;26842:19;;26501:366;;;:::o;26873:419::-;27039:4;27077:2;27066:9;27062:18;27054:26;;27126:9;27120:4;27116:20;27112:1;27101:9;27097:17;27090:47;27154:131;27280:4;27154:131;:::i;:::-;27146:139;;26873:419;;;:::o;27298:97::-;27357:6;27385:3;27375:13;;27298:97;;;;:::o;27401:180::-;27449:77;27446:1;27439:88;27546:4;27543:1;27536:15;27570:4;27567:1;27560:15;27587:180;27635:77;27632:1;27625:88;27732:4;27729:1;27722:15;27756:4;27753:1;27746:15;27773:320;27817:6;27854:1;27848:4;27844:12;27834:22;;27901:1;27895:4;27891:12;27922:18;27912:81;;27978:4;27970:6;27966:17;27956:27;;27912:81;28040:2;28032:6;28029:14;28009:18;28006:38;28003:84;;28059:18;;:::i;:::-;28003:84;27824:269;27773:320;;;:::o;28099:141::-;28148:4;28171:3;28163:11;;28194:3;28191:1;28184:14;28228:4;28225:1;28215:18;28207:26;;28099:141;;;:::o;28246:93::-;28283:6;28330:2;28325;28318:5;28314:14;28310:23;28300:33;;28246:93;;;:::o;28345:107::-;28389:8;28439:5;28433:4;28429:16;28408:37;;28345:107;;;;:::o;28458:393::-;28527:6;28577:1;28565:10;28561:18;28600:97;28630:66;28619:9;28600:97;:::i;:::-;28718:39;28748:8;28737:9;28718:39;:::i;:::-;28706:51;;28790:4;28786:9;28779:5;28775:21;28766:30;;28839:4;28829:8;28825:19;28818:5;28815:30;28805:40;;28534:317;;28458:393;;;;;:::o;28857:60::-;28885:3;28906:5;28899:12;;28857:60;;;:::o;28923:142::-;28973:9;29006:53;29024:34;29033:24;29051:5;29033:24;:::i;:::-;29024:34;:::i;:::-;29006:53;:::i;:::-;28993:66;;28923:142;;;:::o;29071:75::-;29114:3;29135:5;29128:12;;29071:75;;;:::o;29152:269::-;29262:39;29293:7;29262:39;:::i;:::-;29323:91;29372:41;29396:16;29372:41;:::i;:::-;29364:6;29357:4;29351:11;29323:91;:::i;:::-;29317:4;29310:105;29228:193;29152:269;;;:::o;29427:73::-;29472:3;29427:73;:::o;29506:189::-;29583:32;;:::i;:::-;29624:65;29682:6;29674;29668:4;29624:65;:::i;:::-;29559:136;29506:189;;:::o;29701:186::-;29761:120;29778:3;29771:5;29768:14;29761:120;;;29832:39;29869:1;29862:5;29832:39;:::i;:::-;29805:1;29798:5;29794:13;29785:22;;29761:120;;;29701:186;;:::o;29893:543::-;29994:2;29989:3;29986:11;29983:446;;;30028:38;30060:5;30028:38;:::i;:::-;30112:29;30130:10;30112:29;:::i;:::-;30102:8;30098:44;30295:2;30283:10;30280:18;30277:49;;;30316:8;30301:23;;30277:49;30339:80;30395:22;30413:3;30395:22;:::i;:::-;30385:8;30381:37;30368:11;30339:80;:::i;:::-;29998:431;;29983:446;29893:543;;;:::o;30442:117::-;30496:8;30546:5;30540:4;30536:16;30515:37;;30442:117;;;;:::o;30565:169::-;30609:6;30642:51;30690:1;30686:6;30678:5;30675:1;30671:13;30642:51;:::i;:::-;30638:56;30723:4;30717;30713:15;30703:25;;30616:118;30565:169;;;;:::o;30739:295::-;30815:4;30961:29;30986:3;30980:4;30961:29;:::i;:::-;30953:37;;31023:3;31020:1;31016:11;31010:4;31007:21;30999:29;;30739:295;;;;:::o;31039:1403::-;31163:44;31203:3;31198;31163:44;:::i;:::-;31272:18;31264:6;31261:30;31258:56;;;31294:18;;:::i;:::-;31258:56;31338:38;31370:4;31364:11;31338:38;:::i;:::-;31423:67;31483:6;31475;31469:4;31423:67;:::i;:::-;31517:1;31546:2;31538:6;31535:14;31563:1;31558:632;;;;32234:1;32251:6;32248:84;;;32307:9;32302:3;32298:19;32285:33;32276:42;;32248:84;32358:67;32418:6;32411:5;32358:67;:::i;:::-;32352:4;32345:81;32207:229;31528:908;;31558:632;31610:4;31606:9;31598:6;31594:22;31644:37;31676:4;31644:37;:::i;:::-;31703:1;31717:215;31731:7;31728:1;31725:14;31717:215;;;31817:9;31812:3;31808:19;31795:33;31787:6;31780:49;31868:1;31860:6;31856:14;31846:24;;31915:2;31904:9;31900:18;31887:31;;31754:4;31751:1;31747:12;31742:17;;31717:215;;;31960:6;31951:7;31948:19;31945:186;;;32025:9;32020:3;32016:19;32003:33;32068:48;32110:4;32102:6;32098:17;32087:9;32068:48;:::i;:::-;32060:6;32053:64;31968:163;31945:186;32177:1;32173;32165:6;32161:14;32157:22;32151:4;32144:36;31565:625;;;31528:908;;31138:1304;;;31039:1403;;;:::o;32448:233::-;32487:3;32510:24;32528:5;32510:24;:::i;:::-;32501:33;;32556:66;32549:5;32546:77;32543:103;;32626:18;;:::i;:::-;32543:103;32673:1;32666:5;32662:13;32655:20;;32448:233;;;:::o;32687:225::-;32827:34;32823:1;32815:6;32811:14;32804:58;32896:8;32891:2;32883:6;32879:15;32872:33;32687:225;:::o;32918:366::-;33060:3;33081:67;33145:2;33140:3;33081:67;:::i;:::-;33074:74;;33157:93;33246:3;33157:93;:::i;:::-;33275:2;33270:3;33266:12;33259:19;;32918:366;;;:::o;33290:419::-;33456:4;33494:2;33483:9;33479:18;33471:26;;33543:9;33537:4;33533:20;33529:1;33518:9;33514:17;33507:47;33571:131;33697:4;33571:131;:::i;:::-;33563:139;;33290:419;;;:::o;33715:191::-;33755:3;33774:20;33792:1;33774:20;:::i;:::-;33769:25;;33808:20;33826:1;33808:20;:::i;:::-;33803:25;;33851:1;33848;33844:9;33837:16;;33872:3;33869:1;33866:10;33863:36;;;33879:18;;:::i;:::-;33863:36;33715:191;;;;:::o;33912:194::-;33952:4;33972:20;33990:1;33972:20;:::i;:::-;33967:25;;34006:20;34024:1;34006:20;:::i;:::-;34001:25;;34050:1;34047;34043:9;34035:17;;34074:1;34068:4;34065:11;34062:37;;;34079:18;;:::i;:::-;34062:37;33912:194;;;;:::o;34112:410::-;34152:7;34175:20;34193:1;34175:20;:::i;:::-;34170:25;;34209:20;34227:1;34209:20;:::i;:::-;34204:25;;34264:1;34261;34257:9;34286:30;34304:11;34286:30;:::i;:::-;34275:41;;34465:1;34456:7;34452:15;34449:1;34446:22;34426:1;34419:9;34399:83;34376:139;;34495:18;;:::i;:::-;34376:139;34160:362;34112:410;;;;:::o;34528:180::-;34576:77;34573:1;34566:88;34673:4;34670:1;34663:15;34697:4;34694:1;34687:15;34714:185;34754:1;34771:20;34789:1;34771:20;:::i;:::-;34766:25;;34805:20;34823:1;34805:20;:::i;:::-;34800:25;;34844:1;34834:35;;34849:18;;:::i;:::-;34834:35;34891:1;34888;34884:9;34879:14;;34714:185;;;;:::o;34905:229::-;35045:34;35041:1;35033:6;35029:14;35022:58;35114:12;35109:2;35101:6;35097:15;35090:37;34905:229;:::o;35140:366::-;35282:3;35303:67;35367:2;35362:3;35303:67;:::i;:::-;35296:74;;35379:93;35468:3;35379:93;:::i;:::-;35497:2;35492:3;35488:12;35481:19;;35140:366;;;:::o;35512:419::-;35678:4;35716:2;35705:9;35701:18;35693:26;;35765:9;35759:4;35755:20;35751:1;35740:9;35736:17;35729:47;35793:131;35919:4;35793:131;:::i;:::-;35785:139;;35512:419;;;:::o;35937:225::-;36077:34;36073:1;36065:6;36061:14;36054:58;36146:8;36141:2;36133:6;36129:15;36122:33;35937:225;:::o;36168:366::-;36310:3;36331:67;36395:2;36390:3;36331:67;:::i;:::-;36324:74;;36407:93;36496:3;36407:93;:::i;:::-;36525:2;36520:3;36516:12;36509:19;;36168:366;;;:::o;36540:419::-;36706:4;36744:2;36733:9;36729:18;36721:26;;36793:9;36787:4;36783:20;36779:1;36768:9;36764:17;36757:47;36821:131;36947:4;36821:131;:::i;:::-;36813:139;;36540:419;;;:::o;36965:179::-;37105:31;37101:1;37093:6;37089:14;37082:55;36965:179;:::o;37150:366::-;37292:3;37313:67;37377:2;37372:3;37313:67;:::i;:::-;37306:74;;37389:93;37478:3;37389:93;:::i;:::-;37507:2;37502:3;37498:12;37491:19;;37150:366;;;:::o;37522:419::-;37688:4;37726:2;37715:9;37711:18;37703:26;;37775:9;37769:4;37765:20;37761:1;37750:9;37746:17;37739:47;37803:131;37929:4;37803:131;:::i;:::-;37795:139;;37522:419;;;:::o;37947:98::-;37998:6;38032:5;38026:12;38016:22;;37947:98;;;:::o;38051:147::-;38152:11;38189:3;38174:18;;38051:147;;;;:::o;38204:386::-;38308:3;38336:38;38368:5;38336:38;:::i;:::-;38390:88;38471:6;38466:3;38390:88;:::i;:::-;38383:95;;38487:65;38545:6;38540:3;38533:4;38526:5;38522:16;38487:65;:::i;:::-;38577:6;38572:3;38568:16;38561:23;;38312:278;38204:386;;;;:::o;38596:271::-;38726:3;38748:93;38837:3;38828:6;38748:93;:::i;:::-;38741:100;;38858:3;38851:10;;38596:271;;;;:::o;38873:377::-;38961:3;38989:39;39022:5;38989:39;:::i;:::-;39044:71;39108:6;39103:3;39044:71;:::i;:::-;39037:78;;39124:65;39182:6;39177:3;39170:4;39163:5;39159:16;39124:65;:::i;:::-;39214:29;39236:6;39214:29;:::i;:::-;39209:3;39205:39;39198:46;;38965:285;38873:377;;;;:::o;39256:313::-;39369:4;39407:2;39396:9;39392:18;39384:26;;39456:9;39450:4;39446:20;39442:1;39431:9;39427:17;39420:47;39484:78;39557:4;39548:6;39484:78;:::i;:::-;39476:86;;39256:313;;;;:::o
Swarm Source
ipfs://3bfdeabf77ee97c29b52f6c7ef1aa11699bf16530531b38b6d7f87298bec7e84
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.