Overview
POL Balance
0 POL
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Get Random Numbe... | 25901226 | 995 days ago | IN | 0 POL | 0.00498697 |
Loading...
Loading
Contract Name:
BCRCRaffleFeb2022
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-03-12 */ // Sources flattened with hardhat v2.8.2 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /* $$$$$$$\ $$$$$$\ $$$$$$$\ $$$$$$\ $$$$$$$\ $$$$$$\ $$$$$$$$\ $$$$$$$$\ $$\ $$$$$$$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$ _____|$$ _____|$$ | $$ _____| $$ | $$ |$$ / \__|$$ | $$ |$$ / \__| $$ | $$ |$$ / $$ |$$ | $$ | $$ | $$ | $$$$$$$\ |$$ | $$$$$$$ |$$ | $$$$$$$ |$$$$$$$$ |$$$$$\ $$$$$\ $$ | $$$$$\ $$ __$$\ $$ | $$ __$$< $$ | $$ __$$< $$ __$$ |$$ __| $$ __| $$ | $$ __| $$ | $$ |$$ | $$\ $$ | $$ |$$ | $$\ $$ | $$ |$$ | $$ |$$ | $$ | $$ | $$ | $$$$$$$ |\$$$$$$ |$$ | $$ |\$$$$$$ | $$ | $$ |$$ | $$ |$$ | $$ | $$$$$$$$\ $$$$$$$$\ \_______/ \______/ \__| \__| \______/ \__| \__|\__| \__|\__| \__| \________|\________| This is a one time raffle smart contract for generating a random winning number using Chainlink VRF. A list of all Boss Cat Rocket Club transaction records from jpg.store is generated each month. This smart contract will pick one random transaction and award 10% of the monthly royalties to the buyer/seller. The buyer and seller of the winning transaction will share the prize 50/50. There are 1,002 total transactions in Feb 2022 from jpg.store. The total amount of Feb 2022 royalties is 107,029.11 ADA. 10% of the monthly royalties, 10,702 ADA, goes to the raffle prize pool. The lucky buyer gets 5,351 ADA, and the lucky seller gets 5,351 ADA. Detailed Feb 2022 Transaction Records IPFS: ipfs://QmXVN3JdDd2nEu5cNhgo2WhY8KmakBZYBN3VkmwHjhaCib URL: hhttps://ipfs.blockfrost.dev/ipfs/QmXVN3JdDd2nEu5cNhgo2WhY8KmakBZYBN3VkmwHjhaCib Website: https://bosscatrocketclub.com/ */ 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/[email protected] // 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 @chainlink/contracts/src/v0.8/interfaces/[email protected] pragma solidity ^0.8.0; interface LinkTokenInterface { function allowance(address owner, address spender) external view returns (uint256 remaining); function approve(address spender, uint256 value) external returns (bool success); function balanceOf(address owner) external view returns (uint256 balance); function decimals() external view returns (uint8 decimalPlaces); function decreaseApproval(address spender, uint256 addedValue) external returns (bool success); function increaseApproval(address spender, uint256 subtractedValue) external; function name() external view returns (string memory tokenName); function symbol() external view returns (string memory tokenSymbol); function totalSupply() external view returns (uint256 totalTokensIssued); function transfer(address to, uint256 value) external returns (bool success); function transferAndCall( address to, uint256 value, bytes calldata data ) external returns (bool success); function transferFrom( address from, address to, uint256 value ) external returns (bool success); } // File @chainlink/contracts/src/v0.8/[email protected] pragma solidity ^0.8.0; contract VRFRequestIDBase { /** * @notice returns the seed which is actually input to the VRF coordinator * * @dev To prevent repetition of VRF output due to repetition of the * @dev user-supplied seed, that seed is combined in a hash with the * @dev user-specific nonce, and the address of the consuming contract. The * @dev risk of repetition is mostly mitigated by inclusion of a blockhash in * @dev the final seed, but the nonce does protect against repetition in * @dev requests which are included in a single block. * * @param _userSeed VRF seed input provided by user * @param _requester Address of the requesting contract * @param _nonce User-specific nonce at the time of the request */ function makeVRFInputSeed( bytes32 _keyHash, uint256 _userSeed, address _requester, uint256 _nonce ) internal pure returns (uint256) { return uint256(keccak256(abi.encode(_keyHash, _userSeed, _requester, _nonce))); } /** * @notice Returns the id for this request * @param _keyHash The serviceAgreement ID to be used for this request * @param _vRFInputSeed The seed to be passed directly to the VRF * @return The id for this request * * @dev Note that _vRFInputSeed is not the seed passed by the consuming * @dev contract, but the one generated by makeVRFInputSeed */ function makeRequestId(bytes32 _keyHash, uint256 _vRFInputSeed) internal pure returns (bytes32) { return keccak256(abi.encodePacked(_keyHash, _vRFInputSeed)); } } // File @chainlink/contracts/src/v0.8/[email protected] pragma solidity ^0.8.0; /** **************************************************************************** * @notice Interface for contracts using VRF randomness * ***************************************************************************** * @dev PURPOSE * * @dev Reggie the Random Oracle (not his real job) wants to provide randomness * @dev to Vera the verifier in such a way that Vera can be sure he's not * @dev making his output up to suit himself. Reggie provides Vera a public key * @dev to which he knows the secret key. Each time Vera provides a seed to * @dev Reggie, he gives back a value which is computed completely * @dev deterministically from the seed and the secret key. * * @dev Reggie provides a proof by which Vera can verify that the output was * @dev correctly computed once Reggie tells it to her, but without that proof, * @dev the output is indistinguishable to her from a uniform random sample * @dev from the output space. * * @dev The purpose of this contract is to make it easy for unrelated contracts * @dev to talk to Vera the verifier about the work Reggie is doing, to provide * @dev simple access to a verifiable source of randomness. * ***************************************************************************** * @dev USAGE * * @dev Calling contracts must inherit from VRFConsumerBase, and can * @dev initialize VRFConsumerBase's attributes in their constructor as * @dev shown: * * @dev contract VRFConsumer { * @dev constuctor(<other arguments>, address _vrfCoordinator, address _link) * @dev VRFConsumerBase(_vrfCoordinator, _link) public { * @dev <initialization with other arguments goes here> * @dev } * @dev } * * @dev The oracle will have given you an ID for the VRF keypair they have * @dev committed to (let's call it keyHash), and have told you the minimum LINK * @dev price for VRF service. Make sure your contract has sufficient LINK, and * @dev call requestRandomness(keyHash, fee, seed), where seed is the input you * @dev want to generate randomness from. * * @dev Once the VRFCoordinator has received and validated the oracle's response * @dev to your request, it will call your contract's fulfillRandomness method. * * @dev The randomness argument to fulfillRandomness is the actual random value * @dev generated from your seed. * * @dev The requestId argument is generated from the keyHash and the seed by * @dev makeRequestId(keyHash, seed). If your contract could have concurrent * @dev requests open, you can use the requestId to track which seed is * @dev associated with which randomness. See VRFRequestIDBase.sol for more * @dev details. (See "SECURITY CONSIDERATIONS" for principles to keep in mind, * @dev if your contract could have multiple requests in flight simultaneously.) * * @dev Colliding `requestId`s are cryptographically impossible as long as seeds * @dev differ. (Which is critical to making unpredictable randomness! See the * @dev next section.) * * ***************************************************************************** * @dev SECURITY CONSIDERATIONS * * @dev A method with the ability to call your fulfillRandomness method directly * @dev could spoof a VRF response with any random value, so it's critical that * @dev it cannot be directly called by anything other than this base contract * @dev (specifically, by the VRFConsumerBase.rawFulfillRandomness method). * * @dev For your users to trust that your contract's random behavior is free * @dev from malicious interference, it's best if you can write it so that all * @dev behaviors implied by a VRF response are executed *during* your * @dev fulfillRandomness method. If your contract must store the response (or * @dev anything derived from it) and use it later, you must ensure that any * @dev user-significant behavior which depends on that stored value cannot be * @dev manipulated by a subsequent VRF request. * * @dev Similarly, both miners and the VRF oracle itself have some influence * @dev over the order in which VRF responses appear on the blockchain, so if * @dev your contract could have multiple VRF requests in flight simultaneously, * @dev you must ensure that the order in which the VRF responses arrive cannot * @dev be used to manipulate your contract's user-significant behavior. * * @dev Since the ultimate input to the VRF is mixed with the block hash of the * @dev block in which the request is made, user-provided seeds have no impact * @dev on its economic security properties. They are only included for API * @dev compatability with previous versions of this contract. * * @dev Since the block hash of the block which contains the requestRandomness * @dev call is mixed into the input to the VRF *last*, a sufficiently powerful * @dev miner could, in principle, fork the blockchain to evict the block * @dev containing the request, forcing the request to be included in a * @dev different block with a different hash, and therefore a different input * @dev to the VRF. However, such an attack would incur a substantial economic * @dev cost. This cost scales with the number of blocks the VRF oracle waits * @dev until it calls responds to a request. */ abstract contract VRFConsumerBase is VRFRequestIDBase { /** * @notice fulfillRandomness handles the VRF response. Your contract must * @notice implement it. See "SECURITY CONSIDERATIONS" above for important * @notice principles to keep in mind when implementing your fulfillRandomness * @notice method. * * @dev VRFConsumerBase expects its subcontracts to have a method with this * @dev signature, and will call it once it has verified the proof * @dev associated with the randomness. (It is triggered via a call to * @dev rawFulfillRandomness, below.) * * @param requestId The Id initially returned by requestRandomness * @param randomness the VRF output */ function fulfillRandomness(bytes32 requestId, uint256 randomness) internal virtual; /** * @dev In order to keep backwards compatibility we have kept the user * seed field around. We remove the use of it because given that the blockhash * enters later, it overrides whatever randomness the used seed provides. * Given that it adds no security, and can easily lead to misunderstandings, * we have removed it from usage and can now provide a simpler API. */ uint256 private constant USER_SEED_PLACEHOLDER = 0; /** * @notice requestRandomness initiates a request for VRF output given _seed * * @dev The fulfillRandomness method receives the output, once it's provided * @dev by the Oracle, and verified by the vrfCoordinator. * * @dev The _keyHash must already be registered with the VRFCoordinator, and * @dev the _fee must exceed the fee specified during registration of the * @dev _keyHash. * * @dev The _seed parameter is vestigial, and is kept only for API * @dev compatibility with older versions. It can't *hurt* to mix in some of * @dev your own randomness, here, but it's not necessary because the VRF * @dev oracle will mix the hash of the block containing your request into the * @dev VRF seed it ultimately uses. * * @param _keyHash ID of public key against which randomness is generated * @param _fee The amount of LINK to send with the request * * @return requestId unique ID for this request * * @dev The returned requestId can be used to distinguish responses to * @dev concurrent requests. It is passed as the first argument to * @dev fulfillRandomness. */ function requestRandomness(bytes32 _keyHash, uint256 _fee) internal returns (bytes32 requestId) { LINK.transferAndCall(vrfCoordinator, _fee, abi.encode(_keyHash, USER_SEED_PLACEHOLDER)); // This is the seed passed to VRFCoordinator. The oracle will mix this with // the hash of the block containing this request to obtain the seed/input // which is finally passed to the VRF cryptographic machinery. uint256 vRFSeed = makeVRFInputSeed(_keyHash, USER_SEED_PLACEHOLDER, address(this), nonces[_keyHash]); // nonces[_keyHash] must stay in sync with // VRFCoordinator.nonces[_keyHash][this], which was incremented by the above // successful LINK.transferAndCall (in VRFCoordinator.randomnessRequest). // This provides protection against the user repeating their input seed, // which would result in a predictable/duplicate output, if multiple such // requests appeared in the same block. nonces[_keyHash] = nonces[_keyHash] + 1; return makeRequestId(_keyHash, vRFSeed); } LinkTokenInterface internal immutable LINK; address private immutable vrfCoordinator; // Nonces for each VRF key from which randomness has been requested. // // Must stay in sync with VRFCoordinator[_keyHash][this] mapping(bytes32 => uint256) /* keyHash */ /* nonce */ private nonces; /** * @param _vrfCoordinator address of VRFCoordinator contract * @param _link address of LINK token contract * * @dev https://docs.chain.link/docs/link-token-contracts */ constructor(address _vrfCoordinator, address _link) { vrfCoordinator = _vrfCoordinator; LINK = LinkTokenInterface(_link); } // rawFulfillRandomness is called by VRFCoordinator when it receives a valid VRF // proof. rawFulfillRandomness then calls fulfillRandomness, after validating // the origin of the call function rawFulfillRandomness(bytes32 requestId, uint256 randomness) external { require(msg.sender == vrfCoordinator, "Only VRFCoordinator can fulfill"); fulfillRandomness(requestId, randomness); } } // File contracts/BCRCRaffleFeb2022.sol pragma solidity ^0.8.7; contract BCRCRaffleFeb2022 is VRFConsumerBase, Ownable { bytes32 internal keyHash; uint256 internal fee; uint256 public totalRecords = 1002; uint256 public winningNumber; /** * Constructor inherits VRFConsumerBase * * Network: Polygon Mainnet * Chainlink VRF Coordinator address: 0x3d2341ADb2D31f1c5530cDC622016af293177AE0 * LINK token address: 0xb0897686c545045aFc77CF20eC7A532E3120E0F1 * Key Hash: 0xf86195cf7690c55907b2b611ebb7343a6f649bff128701cc542f0569e2c549da * * Network: Polygon Mumbai * Chainlink VRF Coordinator address: 0x8C7382F9D8f56b33781fE506E897a4F1e2d17255 * LINK token address: 0x326C977E6efc84E512bB9C30f76E30c160eD06FB * Key Hash: 0x6e75b569a01ef56d18cab6a8e71e6600d6ce853834d4a5748b720d06f878b3a4 */ constructor() VRFConsumerBase( 0x3d2341ADb2D31f1c5530cDC622016af293177AE0, // VRF Coordinator 0xb0897686c545045aFc77CF20eC7A532E3120E0F1 // LINK Token ) { keyHash = 0xf86195cf7690c55907b2b611ebb7343a6f649bff128701cc542f0569e2c549da; fee = 0.0001 * 10 ** 18; // 0.1 LINK (Varies by network) } /** * Requests randomness */ function getRandomNumber() public onlyOwner returns (bytes32 requestId) { require(LINK.balanceOf(address(this)) >= fee, "Not enough LINK"); return requestRandomness(keyHash, fee); } /** * Callback function used by VRF Coordinator */ function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { winningNumber = (randomness % totalRecords) + 1; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":[],"name":"getRandomNumber","outputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"},{"internalType":"uint256","name":"randomness","type":"uint256"}],"name":"rawFulfillRandomness","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalRecords","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"winningNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040526103ea60045534801561001657600080fd5b50733d2341adb2d31f1c5530cdc622016af293177ae073b0897686c545045afc77cf20ec7a532e3120e0f18173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050506100cd6100c261010960201b60201c565b61011160201b60201c565b7ff86195cf7690c55907b2b611ebb7343a6f649bff128701cc542f0569e2c549da60001b600281905550655af3107a40006003819055506101d7565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60805160601c60a05160601c610ee2610210600039600081816101fc015261063e01526000818161031901526106020152610ee26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100c857806394985ddd146100e6578063dbdff2c114610102578063f2fde38b146101205761007d565b8063125f8974146100825780634664611e146100a0578063715018a6146100be575b600080fd5b61008a61013c565b6040516100979190610baa565b60405180910390f35b6100a8610142565b6040516100b59190610baa565b60405180910390f35b6100c6610148565b005b6100d06101d0565b6040516100dd9190610a48565b60405180910390f35b61010060048036038101906100fb919061088f565b6101fa565b005b61010a610296565b6040516101179190610aa1565b60405180910390f35b61013a60048036038101906101359190610835565b610414565b005b60045481565b60055481565b61015061050c565b73ffffffffffffffffffffffffffffffffffffffff1661016e6101d0565b73ffffffffffffffffffffffffffffffffffffffff16146101c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bb90610b6a565b60405180910390fd5b6101ce6000610514565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027f90610b8a565b60405180910390fd5b61029282826105da565b5050565b60006102a061050c565b73ffffffffffffffffffffffffffffffffffffffff166102be6101d0565b73ffffffffffffffffffffffffffffffffffffffff1614610314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90610b6a565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103709190610a48565b60206040518083038186803b15801561038857600080fd5b505afa15801561039c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c091906108cf565b1015610401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f890610b4a565b60405180910390fd5b61040f6002546003546105fe565b905090565b61041c61050c565b73ffffffffffffffffffffffffffffffffffffffff1661043a6101d0565b73ffffffffffffffffffffffffffffffffffffffff1614610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f790610b2a565b60405180910390fd5b61050981610514565b50565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600454826105ea9190610ce1565b6105f49190610bf2565b6005819055505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634000aea07f000000000000000000000000000000000000000000000000000000000000000084866000604051602001610672929190610abc565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161069f93929190610a63565b602060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610862565b506000610713846000306000808981526020019081526020016000205461075d565b90506001600080868152602001908152602001600020546107349190610bf2565b600080868152602001908152602001600020819055506107548482610799565b91505092915050565b6000848484846040516020016107769493929190610ae5565b6040516020818303038152906040528051906020012060001c9050949350505050565b600082826040516020016107ae929190610a1c565b60405160208183030381529060405280519060200120905092915050565b6000813590506107db81610e50565b92915050565b6000815190506107f081610e67565b92915050565b60008135905061080581610e7e565b92915050565b60008135905061081a81610e95565b92915050565b60008151905061082f81610e95565b92915050565b60006020828403121561084b5761084a610d70565b5b6000610859848285016107cc565b91505092915050565b60006020828403121561087857610877610d70565b5b6000610886848285016107e1565b91505092915050565b600080604083850312156108a6576108a5610d70565b5b60006108b4858286016107f6565b92505060206108c58582860161080b565b9150509250929050565b6000602082840312156108e5576108e4610d70565b5b60006108f384828501610820565b91505092915050565b61090581610c48565b82525050565b61091481610c66565b82525050565b61092b61092682610c66565b610ccd565b82525050565b600061093c82610bc5565b6109468185610bd0565b9350610956818560208601610c9a565b61095f81610d75565b840191505092915050565b6000610977602683610be1565b915061098282610d86565b604082019050919050565b600061099a600f83610be1565b91506109a582610dd5565b602082019050919050565b60006109bd602083610be1565b91506109c882610dfe565b602082019050919050565b60006109e0601f83610be1565b91506109eb82610e27565b602082019050919050565b6109ff81610c90565b82525050565b610a16610a1182610c90565b610cd7565b82525050565b6000610a28828561091a565b602082019150610a388284610a05565b6020820191508190509392505050565b6000602082019050610a5d60008301846108fc565b92915050565b6000606082019050610a7860008301866108fc565b610a8560208301856109f6565b8181036040830152610a978184610931565b9050949350505050565b6000602082019050610ab6600083018461090b565b92915050565b6000604082019050610ad1600083018561090b565b610ade60208301846109f6565b9392505050565b6000608082019050610afa600083018761090b565b610b0760208301866109f6565b610b1460408301856108fc565b610b2160608301846109f6565b95945050505050565b60006020820190508181036000830152610b438161096a565b9050919050565b60006020820190508181036000830152610b638161098d565b9050919050565b60006020820190508181036000830152610b83816109b0565b9050919050565b60006020820190508181036000830152610ba3816109d3565b9050919050565b6000602082019050610bbf60008301846109f6565b92915050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610bfd82610c90565b9150610c0883610c90565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610c3d57610c3c610d12565b5b828201905092915050565b6000610c5382610c70565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610cb8578082015181840152602081019050610c9d565b83811115610cc7576000848401525b50505050565b6000819050919050565b6000819050919050565b6000610cec82610c90565b9150610cf783610c90565b925082610d0757610d06610d41565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f756768204c494e4b0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c00600082015250565b610e5981610c48565b8114610e6457600080fd5b50565b610e7081610c5a565b8114610e7b57600080fd5b50565b610e8781610c66565b8114610e9257600080fd5b50565b610e9e81610c90565b8114610ea957600080fd5b5056fea2646970667358221220e688e63ad4fe9d4b944c291c2455f8cffcb4da54722b4140c7663c692a57ee9d64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100c857806394985ddd146100e6578063dbdff2c114610102578063f2fde38b146101205761007d565b8063125f8974146100825780634664611e146100a0578063715018a6146100be575b600080fd5b61008a61013c565b6040516100979190610baa565b60405180910390f35b6100a8610142565b6040516100b59190610baa565b60405180910390f35b6100c6610148565b005b6100d06101d0565b6040516100dd9190610a48565b60405180910390f35b61010060048036038101906100fb919061088f565b6101fa565b005b61010a610296565b6040516101179190610aa1565b60405180910390f35b61013a60048036038101906101359190610835565b610414565b005b60045481565b60055481565b61015061050c565b73ffffffffffffffffffffffffffffffffffffffff1661016e6101d0565b73ffffffffffffffffffffffffffffffffffffffff16146101c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bb90610b6a565b60405180910390fd5b6101ce6000610514565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f0000000000000000000000003d2341adb2d31f1c5530cdc622016af293177ae073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027f90610b8a565b60405180910390fd5b61029282826105da565b5050565b60006102a061050c565b73ffffffffffffffffffffffffffffffffffffffff166102be6101d0565b73ffffffffffffffffffffffffffffffffffffffff1614610314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90610b6a565b60405180910390fd5b6003547f000000000000000000000000b0897686c545045afc77cf20ec7a532e3120e0f173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103709190610a48565b60206040518083038186803b15801561038857600080fd5b505afa15801561039c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c091906108cf565b1015610401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f890610b4a565b60405180910390fd5b61040f6002546003546105fe565b905090565b61041c61050c565b73ffffffffffffffffffffffffffffffffffffffff1661043a6101d0565b73ffffffffffffffffffffffffffffffffffffffff1614610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f790610b2a565b60405180910390fd5b61050981610514565b50565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600454826105ea9190610ce1565b6105f49190610bf2565b6005819055505050565b60007f000000000000000000000000b0897686c545045afc77cf20ec7a532e3120e0f173ffffffffffffffffffffffffffffffffffffffff16634000aea07f0000000000000000000000003d2341adb2d31f1c5530cdc622016af293177ae084866000604051602001610672929190610abc565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161069f93929190610a63565b602060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610862565b506000610713846000306000808981526020019081526020016000205461075d565b90506001600080868152602001908152602001600020546107349190610bf2565b600080868152602001908152602001600020819055506107548482610799565b91505092915050565b6000848484846040516020016107769493929190610ae5565b6040516020818303038152906040528051906020012060001c9050949350505050565b600082826040516020016107ae929190610a1c565b60405160208183030381529060405280519060200120905092915050565b6000813590506107db81610e50565b92915050565b6000815190506107f081610e67565b92915050565b60008135905061080581610e7e565b92915050565b60008135905061081a81610e95565b92915050565b60008151905061082f81610e95565b92915050565b60006020828403121561084b5761084a610d70565b5b6000610859848285016107cc565b91505092915050565b60006020828403121561087857610877610d70565b5b6000610886848285016107e1565b91505092915050565b600080604083850312156108a6576108a5610d70565b5b60006108b4858286016107f6565b92505060206108c58582860161080b565b9150509250929050565b6000602082840312156108e5576108e4610d70565b5b60006108f384828501610820565b91505092915050565b61090581610c48565b82525050565b61091481610c66565b82525050565b61092b61092682610c66565b610ccd565b82525050565b600061093c82610bc5565b6109468185610bd0565b9350610956818560208601610c9a565b61095f81610d75565b840191505092915050565b6000610977602683610be1565b915061098282610d86565b604082019050919050565b600061099a600f83610be1565b91506109a582610dd5565b602082019050919050565b60006109bd602083610be1565b91506109c882610dfe565b602082019050919050565b60006109e0601f83610be1565b91506109eb82610e27565b602082019050919050565b6109ff81610c90565b82525050565b610a16610a1182610c90565b610cd7565b82525050565b6000610a28828561091a565b602082019150610a388284610a05565b6020820191508190509392505050565b6000602082019050610a5d60008301846108fc565b92915050565b6000606082019050610a7860008301866108fc565b610a8560208301856109f6565b8181036040830152610a978184610931565b9050949350505050565b6000602082019050610ab6600083018461090b565b92915050565b6000604082019050610ad1600083018561090b565b610ade60208301846109f6565b9392505050565b6000608082019050610afa600083018761090b565b610b0760208301866109f6565b610b1460408301856108fc565b610b2160608301846109f6565b95945050505050565b60006020820190508181036000830152610b438161096a565b9050919050565b60006020820190508181036000830152610b638161098d565b9050919050565b60006020820190508181036000830152610b83816109b0565b9050919050565b60006020820190508181036000830152610ba3816109d3565b9050919050565b6000602082019050610bbf60008301846109f6565b92915050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610bfd82610c90565b9150610c0883610c90565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610c3d57610c3c610d12565b5b828201905092915050565b6000610c5382610c70565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610cb8578082015181840152602081019050610c9d565b83811115610cc7576000848401525b50505050565b6000819050919050565b6000819050919050565b6000610cec82610c90565b9150610cf783610c90565b925082610d0757610d06610d41565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f756768204c494e4b0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c00600082015250565b610e5981610c48565b8114610e6457600080fd5b50565b610e7081610c5a565b8114610e7b57600080fd5b50565b610e8781610c66565b8114610e9257600080fd5b50565b610e9e81610c90565b8114610ea957600080fd5b5056fea2646970667358221220e688e63ad4fe9d4b944c291c2455f8cffcb4da54722b4140c7663c692a57ee9d64736f6c63430008070033
Deployed Bytecode Sourcemap
18514:1734:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18642:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18689:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4801:103;;;:::i;:::-;;4150:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18224:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19815:204;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5059:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18642:34;;;;:::o;18689:28::-;;;;:::o;4801:103::-;4381:12;:10;:12::i;:::-;4370:23;;:7;:5;:7::i;:::-;:23;;;4362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4866:30:::1;4893:1;4866:18;:30::i;:::-;4801:103::o:0;4150:87::-;4196:7;4223:6;;;;;;;;;;;4216:13;;4150:87;:::o;18224:210::-;18331:14;18317:28;;:10;:28;;;18309:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18388:40;18406:9;18417:10;18388:17;:40::i;:::-;18224:210;;:::o;19815:204::-;19868:17;4381:12;:10;:12::i;:::-;4370:23;;:7;:5;:7::i;:::-;:23;;;4362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19939:3:::1;;19906:4;:14;;;19929:4;19906:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;19898:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19980:31;19998:7;;20007:3;;19980:17;:31::i;:::-;19973:38;;19815:204:::0;:::o;5059:201::-;4381:12;:10;:12::i;:::-;4370:23;;:7;:5;:7::i;:::-;:23;;;4362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5168:1:::1;5148:22;;:8;:22;;;;5140:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5224:28;5243:8;5224:18;:28::i;:::-;5059:201:::0;:::o;2870:98::-;2923:7;2950:10;2943:17;;2870:98;:::o;5420:191::-;5494:16;5513:6;;;;;;;;;;;5494:25;;5539:8;5530:6;;:17;;;;;;;;;;;;;;;;;;5594:8;5563:40;;5584:8;5563:40;;;;;;;;;;;;5483:128;5420:191;:::o;20095:150::-;20236:1;20220:12;;20207:10;:25;;;;:::i;:::-;20206:31;;;;:::i;:::-;20190:13;:47;;;;20095:150;;:::o;16341:1034::-;16418:17;16444:4;:20;;;16465:14;16481:4;16498:8;15171:1;16487:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16444:87;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16766:15;16784:82;16801:8;15171:1;16842:4;16849:6;:16;16856:8;16849:16;;;;;;;;;;;;16784;:82::i;:::-;16766:100;;17322:1;17303:6;:16;17310:8;17303:16;;;;;;;;;;;;:20;;;;:::i;:::-;17284:6;:16;17291:8;17284:16;;;;;;;;;;;:39;;;;17337:32;17351:8;17361:7;17337:13;:32::i;:::-;17330:39;;;16341:1034;;;;:::o;7694:247::-;7841:7;7893:8;7903:9;7914:10;7926:6;7882:51;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7872:62;;;;;;7864:71;;7857:78;;7694:247;;;;;;:::o;8332:168::-;8419:7;8469:8;8479:13;8452:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8442:52;;;;;;8435:59;;8332:168;;;;:::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:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;440:::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:345::-;1136:6;1185:2;1173:9;1164:7;1160:23;1156:32;1153:119;;;1191:79;;:::i;:::-;1153:119;1311:1;1336:61;1389:7;1380:6;1369:9;1365:22;1336:61;:::i;:::-;1326:71;;1282:125;1069:345;;;;:::o;1420:474::-;1488:6;1496;1545:2;1533:9;1524:7;1520:23;1516:32;1513:119;;;1551:79;;:::i;:::-;1513:119;1671:1;1696:53;1741:7;1732:6;1721:9;1717:22;1696:53;:::i;:::-;1686:63;;1642:117;1798:2;1824:53;1869:7;1860:6;1849:9;1845:22;1824:53;:::i;:::-;1814:63;;1769:118;1420:474;;;;;:::o;1900:351::-;1970:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:119;;;2025:79;;:::i;:::-;1987:119;2145:1;2170:64;2226:7;2217:6;2206:9;2202:22;2170:64;:::i;:::-;2160:74;;2116:128;1900:351;;;;:::o;2257:118::-;2344:24;2362:5;2344:24;:::i;:::-;2339:3;2332:37;2257:118;;:::o;2381:::-;2468:24;2486:5;2468:24;:::i;:::-;2463:3;2456:37;2381:118;;:::o;2505:157::-;2610:45;2630:24;2648:5;2630:24;:::i;:::-;2610:45;:::i;:::-;2605:3;2598:58;2505:157;;:::o;2668:360::-;2754:3;2782:38;2814:5;2782:38;:::i;:::-;2836:70;2899:6;2894:3;2836:70;:::i;:::-;2829:77;;2915:52;2960:6;2955:3;2948:4;2941:5;2937:16;2915:52;:::i;:::-;2992:29;3014:6;2992:29;:::i;:::-;2987:3;2983:39;2976:46;;2758:270;2668:360;;;;:::o;3034:366::-;3176:3;3197:67;3261:2;3256:3;3197:67;:::i;:::-;3190:74;;3273:93;3362:3;3273:93;:::i;:::-;3391:2;3386:3;3382:12;3375:19;;3034:366;;;:::o;3406:::-;3548:3;3569:67;3633:2;3628:3;3569:67;:::i;:::-;3562:74;;3645:93;3734:3;3645:93;:::i;:::-;3763:2;3758:3;3754:12;3747:19;;3406:366;;;:::o;3778:::-;3920:3;3941:67;4005:2;4000:3;3941:67;:::i;:::-;3934:74;;4017:93;4106:3;4017:93;:::i;:::-;4135:2;4130:3;4126:12;4119:19;;3778:366;;;:::o;4150:::-;4292:3;4313:67;4377:2;4372:3;4313:67;:::i;:::-;4306:74;;4389:93;4478:3;4389:93;:::i;:::-;4507:2;4502:3;4498:12;4491:19;;4150:366;;;:::o;4522:118::-;4609:24;4627:5;4609:24;:::i;:::-;4604:3;4597:37;4522:118;;:::o;4646:157::-;4751:45;4771:24;4789:5;4771:24;:::i;:::-;4751:45;:::i;:::-;4746:3;4739:58;4646:157;;:::o;4809:397::-;4949:3;4964:75;5035:3;5026:6;4964:75;:::i;:::-;5064:2;5059:3;5055:12;5048:19;;5077:75;5148:3;5139:6;5077:75;:::i;:::-;5177:2;5172:3;5168:12;5161:19;;5197:3;5190:10;;4809:397;;;;;:::o;5212:222::-;5305:4;5343:2;5332:9;5328:18;5320:26;;5356:71;5424:1;5413:9;5409:17;5400:6;5356:71;:::i;:::-;5212:222;;;;:::o;5440:529::-;5607:4;5645:2;5634:9;5630:18;5622:26;;5658:71;5726:1;5715:9;5711:17;5702:6;5658:71;:::i;:::-;5739:72;5807:2;5796:9;5792:18;5783:6;5739:72;:::i;:::-;5858:9;5852:4;5848:20;5843:2;5832:9;5828:18;5821:48;5886:76;5957:4;5948:6;5886:76;:::i;:::-;5878:84;;5440:529;;;;;;:::o;5975:222::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:71;6187:1;6176:9;6172:17;6163:6;6119:71;:::i;:::-;5975:222;;;;:::o;6203:332::-;6324:4;6362:2;6351:9;6347:18;6339:26;;6375:71;6443:1;6432:9;6428:17;6419:6;6375:71;:::i;:::-;6456:72;6524:2;6513:9;6509:18;6500:6;6456:72;:::i;:::-;6203:332;;;;;:::o;6541:553::-;6718:4;6756:3;6745:9;6741:19;6733:27;;6770:71;6838:1;6827:9;6823:17;6814:6;6770:71;:::i;:::-;6851:72;6919:2;6908:9;6904:18;6895:6;6851:72;:::i;:::-;6933;7001:2;6990:9;6986:18;6977:6;6933:72;:::i;:::-;7015;7083:2;7072:9;7068:18;7059:6;7015:72;:::i;:::-;6541:553;;;;;;;:::o;7100:419::-;7266:4;7304:2;7293:9;7289:18;7281:26;;7353:9;7347:4;7343:20;7339:1;7328:9;7324:17;7317:47;7381:131;7507:4;7381:131;:::i;:::-;7373:139;;7100:419;;;:::o;7525:::-;7691:4;7729:2;7718:9;7714:18;7706:26;;7778:9;7772:4;7768:20;7764:1;7753:9;7749:17;7742:47;7806:131;7932:4;7806:131;:::i;:::-;7798:139;;7525:419;;;:::o;7950:::-;8116:4;8154:2;8143:9;8139:18;8131:26;;8203:9;8197:4;8193:20;8189:1;8178:9;8174:17;8167:47;8231:131;8357:4;8231:131;:::i;:::-;8223:139;;7950:419;;;:::o;8375:::-;8541:4;8579:2;8568:9;8564:18;8556:26;;8628:9;8622:4;8618:20;8614:1;8603:9;8599:17;8592:47;8656:131;8782:4;8656:131;:::i;:::-;8648:139;;8375:419;;;:::o;8800:222::-;8893:4;8931:2;8920:9;8916:18;8908:26;;8944:71;9012:1;9001:9;8997:17;8988:6;8944:71;:::i;:::-;8800:222;;;;:::o;9109:98::-;9160:6;9194:5;9188:12;9178:22;;9109:98;;;:::o;9213:168::-;9296:11;9330:6;9325:3;9318:19;9370:4;9365:3;9361:14;9346:29;;9213:168;;;;:::o;9387:169::-;9471:11;9505:6;9500:3;9493:19;9545:4;9540:3;9536:14;9521:29;;9387:169;;;;:::o;9562:305::-;9602:3;9621:20;9639:1;9621:20;:::i;:::-;9616:25;;9655:20;9673:1;9655:20;:::i;:::-;9650:25;;9809:1;9741:66;9737:74;9734:1;9731:81;9728:107;;;9815:18;;:::i;:::-;9728:107;9859:1;9856;9852:9;9845:16;;9562:305;;;;:::o;9873:96::-;9910:7;9939:24;9957:5;9939:24;:::i;:::-;9928:35;;9873:96;;;:::o;9975:90::-;10009:7;10052:5;10045:13;10038:21;10027:32;;9975:90;;;:::o;10071:77::-;10108:7;10137:5;10126:16;;10071:77;;;:::o;10154:126::-;10191:7;10231:42;10224:5;10220:54;10209:65;;10154:126;;;:::o;10286:77::-;10323:7;10352:5;10341:16;;10286:77;;;:::o;10369:307::-;10437:1;10447:113;10461:6;10458:1;10455:13;10447:113;;;10546:1;10541:3;10537:11;10531:18;10527:1;10522:3;10518:11;10511:39;10483:2;10480:1;10476:10;10471:15;;10447:113;;;10578:6;10575:1;10572:13;10569:101;;;10658:1;10649:6;10644:3;10640:16;10633:27;10569:101;10418:258;10369:307;;;:::o;10682:79::-;10721:7;10750:5;10739:16;;10682:79;;;:::o;10767:::-;10806:7;10835:5;10824:16;;10767:79;;;:::o;10852:176::-;10884:1;10901:20;10919:1;10901:20;:::i;:::-;10896:25;;10935:20;10953:1;10935:20;:::i;:::-;10930:25;;10974:1;10964:35;;10979:18;;:::i;:::-;10964:35;11020:1;11017;11013:9;11008:14;;10852:176;;;;:::o;11034:180::-;11082:77;11079:1;11072:88;11179:4;11176:1;11169:15;11203:4;11200:1;11193:15;11220:180;11268:77;11265:1;11258:88;11365:4;11362:1;11355:15;11389:4;11386:1;11379:15;11529:117;11638:1;11635;11628:12;11652:102;11693:6;11744:2;11740:7;11735:2;11728:5;11724:14;11720:28;11710:38;;11652:102;;;:::o;11760:225::-;11900:34;11896:1;11888:6;11884:14;11877:58;11969:8;11964:2;11956:6;11952:15;11945:33;11760:225;:::o;11991:165::-;12131:17;12127:1;12119:6;12115:14;12108:41;11991:165;:::o;12162:182::-;12302:34;12298:1;12290:6;12286:14;12279:58;12162:182;:::o;12350:181::-;12490:33;12486:1;12478:6;12474:14;12467:57;12350:181;:::o;12537:122::-;12610:24;12628:5;12610:24;:::i;:::-;12603:5;12600:35;12590:63;;12649:1;12646;12639:12;12590:63;12537:122;:::o;12665:116::-;12735:21;12750:5;12735:21;:::i;:::-;12728:5;12725:32;12715:60;;12771:1;12768;12761:12;12715:60;12665:116;:::o;12787:122::-;12860:24;12878:5;12860:24;:::i;:::-;12853:5;12850:35;12840:63;;12899:1;12896;12889:12;12840:63;12787:122;:::o;12915:::-;12988:24;13006:5;12988:24;:::i;:::-;12981:5;12978:35;12968:63;;13027:1;13024;13017:12;12968:63;12915:122;:::o
Swarm Source
ipfs://e688e63ad4fe9d4b944c291c2455f8cffcb4da54722b4140c7663c692a57ee9d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.