Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x5f978b713a15732f07b7f413b2b619bd7529983e054bf5ddb2b3511907d396ff | 0x60c06040 | 11636477 | 568 days 48 mins ago | Mu Coin: Deployer | IN | Create: VestingWallet | 0 AVAX | 0.118860545529 |
[ Download CSV Export ]
Contract Name:
VestingWallet
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-03-03 */ // File: contracts/PartnershipOfferVestingContract.sol /** *Submitted for verification at snowtrace.io on 2022-03-03 */ // File: contracts/PartnerProgramVesting.sol /** *Submitted for verification at snowtrace.io on 2022-01-11 */ // OpenZeppelin Contracts v4.4.1 (finance/VestingWallet.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the owner of the contract */ function owner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev 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); } } } } /** * @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)); } } /** * @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"); } } } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } /** * @dev Returns the ceiling of the division of two numbers. * * This differs from standard division with `/` in that it rounds up instead * of rounding down. */ function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b - 1) / b can overflow on addition, so we distribute. return a / b + (a % b == 0 ? 0 : 1); } /** * @dev Returns the absolute unsigned value of a signed value. */ function abs(int256 n) internal pure returns (uint256) { unchecked { // must be unchecked in order to support `n = type(int256).min` return uint256(n >= 0 ? n : -n); } } } /** * @title VestingWallet * @dev This contract handles the vesting of Eth and ERC20 tokens for a given beneficiary. Custody of multiple tokens * can be given to this contract, which will release the token to the beneficiary following a given vesting schedule. * The vesting schedule is customizable through the {vestedAmount} function. * * Any token transferred to this contract will follow the vesting schedule as if they were locked from the beginning. * Consequently, if the vesting has already started, any amount of tokens sent to this contract will (at least partly) * be immediately releasable. */ contract VestingWallet is Context { event EtherReleased(uint256 amount); event ERC20Released(address indexed token, uint256 amount); uint256 private _released; mapping(address => uint256) private _erc20Released; address private _beneficiary; uint64 private immutable _start; uint64 private immutable _duration; /** * @dev Set the beneficiary, start timestamp and vesting duration of the vesting wallet. */ constructor( address beneficiaryAddress, uint64 startTimestamp, uint64 durationSeconds ) { require(beneficiaryAddress != address(0), "VestingWallet: beneficiary is zero address"); _beneficiary = beneficiaryAddress; _start = startTimestamp; _duration = durationSeconds; } /** * @dev The contract should be able to receive Eth. */ receive() external payable virtual {} /** * @dev Getter for the beneficiary address. */ function beneficiary() public view virtual returns (address) { return _beneficiary; } function changeBeneficiary(address newBeneficiary) public virtual{ require(msg.sender == _beneficiary, "ECR20: Only current beneficiary can change beneficiaries"); _beneficiary = newBeneficiary; } /** * @dev Getter for the start timestamp. */ function start() public view virtual returns (uint256) { return _start; } /** * @dev Getter for the vesting duration. */ function duration() public view virtual returns (uint256) { return _duration; } /** * @dev Amount of eth already released */ function released() public view virtual returns (uint256) { return _released; } /** * @dev Amount of token already released */ function released(address token) public view virtual returns (uint256) { return _erc20Released[token]; } /** * @dev Release the native token (ether) that have already vested. * * Emits a {TokensReleased} event. */ function release() public virtual { uint256 releasable = vestedAmount(uint64(block.timestamp)) - released(); _released += releasable; emit EtherReleased(releasable); Address.sendValue(payable(beneficiary()), releasable); } /** * @dev Release the tokens that have already vested. * * Emits a {TokensReleased} event. */ function release(address token) public virtual { uint256 releasable = vestedAmount(token, uint64(block.timestamp)) - released(token); _erc20Released[token] += releasable; emit ERC20Released(token, releasable); SafeERC20.safeTransfer(IERC20(token), beneficiary(), releasable); } /** * @dev Calculates the amount of ether that has already vested. Default implementation is a linear vesting curve. */ function vestedAmount(uint64 timestamp) public view virtual returns (uint256) { return _vestingSchedule(address(this).balance + released(), timestamp); } /** * @dev Calculates the amount of tokens that has already vested. Default implementation is a linear vesting curve. */ function vestedAmount(address token, uint64 timestamp) public view virtual returns (uint256) { return _vestingSchedule(IERC20(token).balanceOf(address(this)) + released(token), timestamp); } /** * @dev Virtual implementation of the vesting formula. This returns the amout vested, as a function of time, for * an asset given its total historical allocation. */ function _vestingSchedule(uint256 totalAllocation, uint64 timestamp) internal view virtual returns (uint256) { if (timestamp < start()) { return 0; } else if (timestamp > start() + duration()) { return totalAllocation; } else { return (totalAllocation * (timestamp - start())) / duration(); } } }
[{"inputs":[{"internalType":"address","name":"beneficiaryAddress","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"changeBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200169438038062001694833981810160405281019062000037919062000160565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620000aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a190620001e3565b60405180910390fd5b82600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508167ffffffffffffffff1660808167ffffffffffffffff1660c01b815250508067ffffffffffffffff1660a08167ffffffffffffffff1660c01b81525050505050620002e6565b6000815190506200014381620002b2565b92915050565b6000815190506200015a81620002cc565b92915050565b6000806000606084860312156200017c576200017b6200025e565b5b60006200018c8682870162000132565b93505060206200019f8682870162000149565b9250506040620001b28682870162000149565b9150509250925092565b6000620001cb602a8362000205565b9150620001d88262000263565b604082019050919050565b60006020820190508181036000830152620001fe81620001bc565b9050919050565b600082825260208201905092915050565b600062000223826200022a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600080fd5b7f56657374696e6757616c6c65743a2062656e6566696369617279206973207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b620002bd8162000216565b8114620002c957600080fd5b50565b620002d7816200024a565b8114620002e357600080fd5b50565b60805160c01c60a05160c01c6113826200031260003960006102960152600061055001526113826000f3fe6080604052600436106100955760003560e01c806386d1a69f1161005957806386d1a69f1461019a57806396132521146101b15780639852595c146101dc578063be9a655514610219578063dc070657146102445761009c565b80630a17b06b146100a15780630fb5a6b4146100de578063191655871461010957806338af3eed14610132578063810ec23b1461015d5761009c565b3661009c57005b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190610bfe565b61026d565b6040516100d59190610efa565b60405180910390f35b3480156100ea57600080fd5b506100f3610292565b6040516101009190610efa565b60405180910390f35b34801561011557600080fd5b50610130600480360381019061012b9190610b37565b6102c4565b005b34801561013e57600080fd5b5061014761039f565b6040516101549190610dd4565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190610b64565b6103c9565b6040516101919190610efa565b60405180910390f35b3480156101a657600080fd5b506101af610478565b005b3480156101bd57600080fd5b506101c66104fa565b6040516101d39190610efa565b60405180910390f35b3480156101e857600080fd5b5061020360048036038101906101fe9190610b37565b610503565b6040516102109190610efa565b60405180910390f35b34801561022557600080fd5b5061022e61054c565b60405161023b9190610efa565b60405180910390f35b34801561025057600080fd5b5061026b60048036038101906102669190610b37565b61057e565b005b600061028b61027a6104fa565b476102859190610f47565b83610652565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16905090565b60006102cf82610503565b6102d983426103c9565b6102e39190611028565b905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103349190610f47565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b826040516103819190610efa565b60405180910390a261039b8261039561039f565b836106ec565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006104706103d784610503565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104109190610dd4565b60206040518083038186803b15801561042857600080fd5b505afa15801561043c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104609190610bd1565b61046a9190610f47565b83610652565b905092915050565b60006104826104fa565b61048b4261026d565b6104959190611028565b9050806000808282546104a89190610f47565b925050819055507fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b816040516104de9190610efa565b60405180910390a16104f76104f161039f565b82610772565b50565b60008054905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060590610e9a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061065c61054c565b8267ffffffffffffffff16101561067657600090506106e6565b61067e610292565b61068661054c565b6106909190610f47565b8267ffffffffffffffff1611156106a9578290506106e6565b6106b1610292565b6106b961054c565b8367ffffffffffffffff166106ce9190611028565b846106d99190610fce565b6106e39190610f9d565b90505b92915050565b61076d8363a9059cbb60e01b848460405160240161070b929190610def565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610866565b505050565b804710156107b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ac90610e5a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516107db90610dbf565b60006040518083038185875af1925050503d8060008114610818576040519150601f19603f3d011682016040523d82523d6000602084013e61081d565b606091505b5050905080610861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085890610e3a565b60405180910390fd5b505050565b60006108c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661092d9092919063ffffffff16565b905060008151111561092857808060200190518101906108e89190610ba4565b610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90610eda565b60405180910390fd5b5b505050565b606061093c8484600085610945565b90509392505050565b60608247101561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610e7a565b60405180910390fd5b61099385610a59565b6109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990610eba565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109fb9190610da8565b60006040518083038185875af1925050503d8060008114610a38576040519150601f19603f3d011682016040523d82523d6000602084013e610a3d565b606091505b5091509150610a4d828286610a7c565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315610a8c57829050610adc565b600083511115610a9f5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad39190610e18565b60405180910390fd5b9392505050565b600081359050610af2816112f0565b92915050565b600081519050610b0781611307565b92915050565b600081519050610b1c8161131e565b92915050565b600081359050610b3181611335565b92915050565b600060208284031215610b4d57610b4c611149565b5b6000610b5b84828501610ae3565b91505092915050565b60008060408385031215610b7b57610b7a611149565b5b6000610b8985828601610ae3565b9250506020610b9a85828601610b22565b9150509250929050565b600060208284031215610bba57610bb9611149565b5b6000610bc884828501610af8565b91505092915050565b600060208284031215610be757610be6611149565b5b6000610bf584828501610b0d565b91505092915050565b600060208284031215610c1457610c13611149565b5b6000610c2284828501610b22565b91505092915050565b610c348161105c565b82525050565b6000610c4582610f15565b610c4f8185610f2b565b9350610c5f8185602086016110b8565b80840191505092915050565b6000610c7682610f20565b610c808185610f36565b9350610c908185602086016110b8565b610c998161114e565b840191505092915050565b6000610cb1603a83610f36565b9150610cbc8261115f565b604082019050919050565b6000610cd4601d83610f36565b9150610cdf826111ae565b602082019050919050565b6000610cf7602683610f36565b9150610d02826111d7565b604082019050919050565b6000610d1a603883610f36565b9150610d2582611226565b604082019050919050565b6000610d3d600083610f2b565b9150610d4882611275565b600082019050919050565b6000610d60601d83610f36565b9150610d6b82611278565b602082019050919050565b6000610d83602a83610f36565b9150610d8e826112a1565b604082019050919050565b610da28161109a565b82525050565b6000610db48284610c3a565b915081905092915050565b6000610dca82610d30565b9150819050919050565b6000602082019050610de96000830184610c2b565b92915050565b6000604082019050610e046000830185610c2b565b610e116020830184610d99565b9392505050565b60006020820190508181036000830152610e328184610c6b565b905092915050565b60006020820190508181036000830152610e5381610ca4565b9050919050565b60006020820190508181036000830152610e7381610cc7565b9050919050565b60006020820190508181036000830152610e9381610cea565b9050919050565b60006020820190508181036000830152610eb381610d0d565b9050919050565b60006020820190508181036000830152610ed381610d53565b9050919050565b60006020820190508181036000830152610ef381610d76565b9050919050565b6000602082019050610f0f6000830184610d99565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610f528261109a565b9150610f5d8361109a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610f9257610f916110eb565b5b828201905092915050565b6000610fa88261109a565b9150610fb38361109a565b925082610fc357610fc261111a565b5b828204905092915050565b6000610fd98261109a565b9150610fe48361109a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561101d5761101c6110eb565b5b828202905092915050565b60006110338261109a565b915061103e8361109a565b925082821015611051576110506110eb565b5b828203905092915050565b60006110678261107a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60005b838110156110d65780820151818401526020810190506110bb565b838111156110e5576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f45435232303a204f6e6c792063757272656e742062656e65666963696172792060008201527f63616e206368616e67652062656e656669636961726965730000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6112f98161105c565b811461130457600080fd5b50565b6113108161106e565b811461131b57600080fd5b50565b6113278161109a565b811461133257600080fd5b50565b61133e816110a4565b811461134957600080fd5b5056fea2646970667358221220cef060e6a54f469930d3c9d716e319c0362a72bbccca5709aaeea8c1ffadb93464736f6c6343000807003300000000000000000000000069b3c807f6647966849221a052bc16032c9bb6ec0000000000000000000000000000000000000000000000000000017f53f0cb6000000000000000000000000000000000000000000000000000000024c0c2c6c8
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000069b3c807f6647966849221a052bc16032c9bb6ec0000000000000000000000000000000000000000000000000000017f53f0cb6000000000000000000000000000000000000000000000000000000024c0c2c6c8
-----Decoded View---------------
Arg [0] : beneficiaryAddress (address): 0x69b3c807f6647966849221a052bc16032c9bb6ec
Arg [1] : startTimestamp (uint64): 1646380764000
Arg [2] : durationSeconds (uint64): 157852813000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000069b3c807f6647966849221a052bc16032c9bb6ec
Arg [1] : 0000000000000000000000000000000000000000000000000000017f53f0cb60
Arg [2] : 00000000000000000000000000000000000000000000000000000024c0c2c6c8
Deployed ByteCode Sourcemap
18227:4106:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21239:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19789:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20776:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19233:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21552:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20381:263;;;;;;;;;;;;;:::i;:::-;;19952:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20117:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19630:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19340:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21239:167;21308:7;21335:63;21376:10;:8;:10::i;:::-;21352:21;:34;;;;:::i;:::-;21388:9;21335:16;:63::i;:::-;21328:70;;21239:167;;;:::o;19789:93::-;19838:7;19865:9;19858:16;;;;19789:93;:::o;20776:318::-;20834:18;20902:15;20911:5;20902:8;:15::i;:::-;20855:44;20868:5;20882:15;20855:12;:44::i;:::-;:62;;;;:::i;:::-;20834:83;;20953:10;20928:14;:21;20943:5;20928:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;20993:5;20979:32;;;21000:10;20979:32;;;;;;:::i;:::-;;;;;;;;21022:64;21052:5;21060:13;:11;:13::i;:::-;21075:10;21022:22;:64::i;:::-;20823:271;20776:318;:::o;19233:99::-;19285:7;19312:12;;;;;;;;;;;19305:19;;19233:99;:::o;21552:204::-;21636:7;21663:85;21721:15;21730:5;21721:8;:15::i;:::-;21687:5;21680:23;;;21712:4;21680:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;;:::i;:::-;21738:9;21663:16;:85::i;:::-;21656:92;;21552:204;;;;:::o;20381:263::-;20426:18;20487:10;:8;:10::i;:::-;20447:37;20467:15;20447:12;:37::i;:::-;:50;;;;:::i;:::-;20426:71;;20521:10;20508:9;;:23;;;;;;;:::i;:::-;;;;;;;;20547:25;20561:10;20547:25;;;;;;:::i;:::-;;;;;;;;20583:53;20609:13;:11;:13::i;:::-;20625:10;20583:17;:53::i;:::-;20415:229;20381:263::o;19952:93::-;20001:7;20028:9;;20021:16;;19952:93;:::o;20117:118::-;20179:7;20206:14;:21;20221:5;20206:21;;;;;;;;;;;;;;;;20199:28;;20117:118;;;:::o;19630:87::-;19676:7;19703:6;19696:13;;;;19630:87;:::o;19340:219::-;19438:12;;;;;;;;;;;19424:26;;:10;:26;;;19416:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19537:14;19522:12;;:29;;;;;;;;;;;;;;;;;;19340:219;:::o;21956:374::-;22056:7;22092;:5;:7::i;:::-;22080:9;:19;;;22076:247;;;22123:1;22116:8;;;;22076:247;22168:10;:8;:10::i;:::-;22158:7;:5;:7::i;:::-;:20;;;;:::i;:::-;22146:9;:32;;;22142:181;;;22202:15;22195:22;;;;22142:181;22301:10;:8;:10::i;:::-;22289:7;:5;:7::i;:::-;22277:9;:19;;;;;;:::i;:::-;22258:15;:39;;;;:::i;:::-;22257:54;;;;:::i;:::-;22250:61;;21956:374;;;;;:::o;12091:211::-;12208:86;12228:5;12258:23;;;12283:2;12287:5;12235:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12208:19;:86::i;:::-;12091:211;;;:::o;5554:317::-;5669:6;5644:21;:31;;5636:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5723:12;5741:9;:14;;5763:6;5741:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5722:52;;;5793:7;5785:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5625:246;5554:317;;:::o;14664:716::-;15088:23;15114:69;15142:4;15114:69;;;;;;;;;;;;;;;;;15122:5;15114:27;;;;:69;;;;;:::i;:::-;15088:95;;15218:1;15198:10;:17;:21;15194:179;;;15295:10;15284:30;;;;;;;;;;;;:::i;:::-;15276:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15194:179;14734:646;14664:716;;:::o;7038:229::-;7175:12;7207:52;7229:6;7237:4;7243:1;7246:12;7207:21;:52::i;:::-;7200:59;;7038:229;;;;;:::o;8158:510::-;8328:12;8386:5;8361:21;:30;;8353:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8453:18;8464:6;8453:10;:18::i;:::-;8445:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8519:12;8533:23;8560:6;:11;;8579:5;8586:4;8560:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8518:73;;;;8609:51;8626:7;8635:10;8647:12;8609:16;:51::i;:::-;8602:58;;;;8158:510;;;;;;:::o;4293:326::-;4353:4;4610:1;4588:7;:19;;;:23;4581:30;;4293:326;;;:::o;10844:712::-;10994:12;11023:7;11019:530;;;11054:10;11047:17;;;;11019:530;11188:1;11168:10;:17;:21;11164:374;;;11366:10;11360:17;11427:15;11414:10;11410:2;11406:19;11399:44;11164:374;11509:12;11502:20;;;;;;;;;;;:::i;:::-;;;;;;;;10844:712;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;152:137;;;;:::o;295:143::-;352:5;383:6;377:13;368:22;;399:33;426:5;399:33;:::i;:::-;295:143;;;;:::o;444:137::-;489:5;527:6;514:20;505:29;;543:32;569:5;543:32;:::i;:::-;444:137;;;;:::o;587:329::-;646:6;695:2;683:9;674:7;670:23;666:32;663:119;;;701:79;;:::i;:::-;663:119;821:1;846:53;891:7;882:6;871:9;867:22;846:53;:::i;:::-;836:63;;792:117;587:329;;;;:::o;922:472::-;989:6;997;1046:2;1034:9;1025:7;1021:23;1017:32;1014:119;;;1052:79;;:::i;:::-;1014:119;1172:1;1197:53;1242:7;1233:6;1222:9;1218:22;1197:53;:::i;:::-;1187:63;;1143:117;1299:2;1325:52;1369:7;1360:6;1349:9;1345:22;1325:52;:::i;:::-;1315:62;;1270:117;922:472;;;;;:::o;1400:345::-;1467:6;1516:2;1504:9;1495:7;1491:23;1487:32;1484:119;;;1522:79;;:::i;:::-;1484:119;1642:1;1667:61;1720:7;1711:6;1700:9;1696:22;1667:61;:::i;:::-;1657:71;;1613:125;1400:345;;;;:::o;1751:351::-;1821:6;1870:2;1858:9;1849:7;1845:23;1841:32;1838:119;;;1876:79;;:::i;:::-;1838:119;1996:1;2021:64;2077:7;2068:6;2057:9;2053:22;2021:64;:::i;:::-;2011:74;;1967:128;1751:351;;;;:::o;2108:327::-;2166:6;2215:2;2203:9;2194:7;2190:23;2186:32;2183:119;;;2221:79;;:::i;:::-;2183:119;2341:1;2366:52;2410:7;2401:6;2390:9;2386:22;2366:52;:::i;:::-;2356:62;;2312:116;2108:327;;;;:::o;2441:118::-;2528:24;2546:5;2528:24;:::i;:::-;2523:3;2516:37;2441:118;;:::o;2565:373::-;2669:3;2697:38;2729:5;2697:38;:::i;:::-;2751:88;2832:6;2827:3;2751:88;:::i;:::-;2744:95;;2848:52;2893:6;2888:3;2881:4;2874:5;2870:16;2848:52;:::i;:::-;2925:6;2920:3;2916:16;2909:23;;2673:265;2565:373;;;;:::o;2944:364::-;3032:3;3060:39;3093:5;3060:39;:::i;:::-;3115:71;3179:6;3174:3;3115:71;:::i;:::-;3108:78;;3195:52;3240:6;3235:3;3228:4;3221:5;3217:16;3195:52;:::i;:::-;3272:29;3294:6;3272:29;:::i;:::-;3267:3;3263:39;3256:46;;3036:272;2944:364;;;;:::o;3314:366::-;3456:3;3477:67;3541:2;3536:3;3477:67;:::i;:::-;3470:74;;3553:93;3642:3;3553:93;:::i;:::-;3671:2;3666:3;3662:12;3655:19;;3314:366;;;:::o;3686:::-;3828:3;3849:67;3913:2;3908:3;3849:67;:::i;:::-;3842:74;;3925:93;4014:3;3925:93;:::i;:::-;4043:2;4038:3;4034:12;4027:19;;3686:366;;;:::o;4058:::-;4200:3;4221:67;4285:2;4280:3;4221:67;:::i;:::-;4214:74;;4297:93;4386:3;4297:93;:::i;:::-;4415:2;4410:3;4406:12;4399:19;;4058:366;;;:::o;4430:::-;4572:3;4593:67;4657:2;4652:3;4593:67;:::i;:::-;4586:74;;4669:93;4758:3;4669:93;:::i;:::-;4787:2;4782:3;4778:12;4771:19;;4430:366;;;:::o;4802:398::-;4961:3;4982:83;5063:1;5058:3;4982:83;:::i;:::-;4975:90;;5074:93;5163:3;5074:93;:::i;:::-;5192:1;5187:3;5183:11;5176:18;;4802:398;;;:::o;5206:366::-;5348:3;5369:67;5433:2;5428:3;5369:67;:::i;:::-;5362:74;;5445:93;5534:3;5445:93;:::i;:::-;5563:2;5558:3;5554:12;5547:19;;5206:366;;;:::o;5578:::-;5720:3;5741:67;5805:2;5800:3;5741:67;:::i;:::-;5734:74;;5817:93;5906:3;5817:93;:::i;:::-;5935:2;5930:3;5926:12;5919:19;;5578:366;;;:::o;5950:118::-;6037:24;6055:5;6037:24;:::i;:::-;6032:3;6025:37;5950:118;;:::o;6074:271::-;6204:3;6226:93;6315:3;6306:6;6226:93;:::i;:::-;6219:100;;6336:3;6329:10;;6074:271;;;;:::o;6351:379::-;6535:3;6557:147;6700:3;6557:147;:::i;:::-;6550:154;;6721:3;6714:10;;6351:379;;;:::o;6736:222::-;6829:4;6867:2;6856:9;6852:18;6844:26;;6880:71;6948:1;6937:9;6933:17;6924:6;6880:71;:::i;:::-;6736:222;;;;:::o;6964:332::-;7085:4;7123:2;7112:9;7108:18;7100:26;;7136:71;7204:1;7193:9;7189:17;7180:6;7136:71;:::i;:::-;7217:72;7285:2;7274:9;7270:18;7261:6;7217:72;:::i;:::-;6964:332;;;;;:::o;7302:313::-;7415:4;7453:2;7442:9;7438:18;7430:26;;7502:9;7496:4;7492:20;7488:1;7477:9;7473:17;7466:47;7530:78;7603:4;7594:6;7530:78;:::i;:::-;7522:86;;7302:313;;;;:::o;7621:419::-;7787:4;7825:2;7814:9;7810:18;7802:26;;7874:9;7868:4;7864:20;7860:1;7849:9;7845:17;7838:47;7902:131;8028:4;7902:131;:::i;:::-;7894:139;;7621:419;;;:::o;8046:::-;8212:4;8250:2;8239:9;8235:18;8227:26;;8299:9;8293:4;8289:20;8285:1;8274:9;8270:17;8263:47;8327:131;8453:4;8327:131;:::i;:::-;8319:139;;8046:419;;;:::o;8471:::-;8637:4;8675:2;8664:9;8660:18;8652:26;;8724:9;8718:4;8714:20;8710:1;8699:9;8695:17;8688:47;8752:131;8878:4;8752:131;:::i;:::-;8744:139;;8471:419;;;:::o;8896:::-;9062:4;9100:2;9089:9;9085:18;9077:26;;9149:9;9143:4;9139:20;9135:1;9124:9;9120:17;9113:47;9177:131;9303:4;9177:131;:::i;:::-;9169:139;;8896:419;;;:::o;9321:::-;9487:4;9525:2;9514:9;9510:18;9502:26;;9574:9;9568:4;9564:20;9560:1;9549:9;9545:17;9538:47;9602:131;9728:4;9602:131;:::i;:::-;9594:139;;9321:419;;;:::o;9746:::-;9912:4;9950:2;9939:9;9935:18;9927:26;;9999:9;9993:4;9989:20;9985:1;9974:9;9970:17;9963:47;10027:131;10153:4;10027:131;:::i;:::-;10019:139;;9746:419;;;:::o;10171:222::-;10264:4;10302:2;10291:9;10287:18;10279:26;;10315:71;10383:1;10372:9;10368:17;10359:6;10315:71;:::i;:::-;10171:222;;;;:::o;10480:98::-;10531:6;10565:5;10559:12;10549:22;;10480:98;;;:::o;10584:99::-;10636:6;10670:5;10664:12;10654:22;;10584:99;;;:::o;10689:147::-;10790:11;10827:3;10812:18;;10689:147;;;;:::o;10842:169::-;10926:11;10960:6;10955:3;10948:19;11000:4;10995:3;10991:14;10976:29;;10842:169;;;;:::o;11017:305::-;11057:3;11076:20;11094:1;11076:20;:::i;:::-;11071:25;;11110:20;11128:1;11110:20;:::i;:::-;11105:25;;11264:1;11196:66;11192:74;11189:1;11186:81;11183:107;;;11270:18;;:::i;:::-;11183:107;11314:1;11311;11307:9;11300:16;;11017:305;;;;:::o;11328:185::-;11368:1;11385:20;11403:1;11385:20;:::i;:::-;11380:25;;11419:20;11437:1;11419:20;:::i;:::-;11414:25;;11458:1;11448:35;;11463:18;;:::i;:::-;11448:35;11505:1;11502;11498:9;11493:14;;11328:185;;;;:::o;11519:348::-;11559:7;11582:20;11600:1;11582:20;:::i;:::-;11577:25;;11616:20;11634:1;11616:20;:::i;:::-;11611:25;;11804:1;11736:66;11732:74;11729:1;11726:81;11721:1;11714:9;11707:17;11703:105;11700:131;;;11811:18;;:::i;:::-;11700:131;11859:1;11856;11852:9;11841:20;;11519:348;;;;:::o;11873:191::-;11913:4;11933:20;11951:1;11933:20;:::i;:::-;11928:25;;11967:20;11985:1;11967:20;:::i;:::-;11962:25;;12006:1;12003;12000:8;11997:34;;;12011:18;;:::i;:::-;11997:34;12056:1;12053;12049:9;12041:17;;11873:191;;;;:::o;12070:96::-;12107:7;12136:24;12154:5;12136:24;:::i;:::-;12125:35;;12070:96;;;:::o;12172:90::-;12206:7;12249:5;12242:13;12235:21;12224:32;;12172:90;;;:::o;12268:126::-;12305:7;12345:42;12338:5;12334:54;12323:65;;12268:126;;;:::o;12400:77::-;12437:7;12466:5;12455:16;;12400:77;;;:::o;12483:101::-;12519:7;12559:18;12552:5;12548:30;12537:41;;12483:101;;;:::o;12590:307::-;12658:1;12668:113;12682:6;12679:1;12676:13;12668:113;;;12767:1;12762:3;12758:11;12752:18;12748:1;12743:3;12739:11;12732:39;12704:2;12701:1;12697:10;12692:15;;12668:113;;;12799:6;12796:1;12793:13;12790:101;;;12879:1;12870:6;12865:3;12861:16;12854:27;12790:101;12639:258;12590:307;;;:::o;12903:180::-;12951:77;12948:1;12941:88;13048:4;13045:1;13038:15;13072:4;13069:1;13062:15;13089:180;13137:77;13134:1;13127:88;13234:4;13231:1;13224:15;13258:4;13255:1;13248:15;13398:117;13507:1;13504;13497:12;13521:102;13562:6;13613:2;13609:7;13604:2;13597:5;13593:14;13589:28;13579:38;;13521:102;;;:::o;13629:245::-;13769:34;13765:1;13757:6;13753:14;13746:58;13838:28;13833:2;13825:6;13821:15;13814:53;13629:245;:::o;13880:179::-;14020:31;14016:1;14008:6;14004:14;13997:55;13880:179;:::o;14065:225::-;14205:34;14201:1;14193:6;14189:14;14182:58;14274:8;14269:2;14261:6;14257:15;14250:33;14065:225;:::o;14296:243::-;14436:34;14432:1;14424:6;14420:14;14413:58;14505:26;14500:2;14492:6;14488:15;14481:51;14296:243;:::o;14545:114::-;;:::o;14665:179::-;14805:31;14801:1;14793:6;14789:14;14782:55;14665:179;:::o;14850:229::-;14990:34;14986:1;14978:6;14974:14;14967:58;15059:12;15054:2;15046:6;15042:15;15035:37;14850:229;:::o;15085:122::-;15158:24;15176:5;15158:24;:::i;:::-;15151:5;15148:35;15138:63;;15197:1;15194;15187:12;15138:63;15085:122;:::o;15213:116::-;15283:21;15298:5;15283:21;:::i;:::-;15276:5;15273:32;15263:60;;15319:1;15316;15309:12;15263:60;15213:116;:::o;15335:122::-;15408:24;15426:5;15408:24;:::i;:::-;15401:5;15398:35;15388:63;;15447:1;15444;15437:12;15388:63;15335:122;:::o;15463:120::-;15535:23;15552:5;15535:23;:::i;:::-;15528:5;15525:34;15515:62;;15573:1;15570;15563:12;15515:62;15463:120;:::o
Swarm Source
ipfs://cef060e6a54f469930d3c9d716e319c0362a72bbccca5709aaeea8c1ffadb934
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.