Overview
AVAX Balance
AVAX Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
TimelockedCall
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2024-11-04 */ // SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.19; interface ITimelockedCall { function initScheduler(address addr, uint256 newTimeLockDuration) external; function enableScheduler(address addr) external; function disableScheduler(address addr) external; function schedule(bytes32 h, address consumerAddr) external; function consume(bytes32 h) external; function consumeOwnership(bytes32 h, address prevOwnerAddr, address newOwnerAddr) external; } /** * @notice Defines the interface for whitelisting addresses. */ interface IAddressWhitelist { /** * @notice Whitelists the address specified. * @param addr The address to enable */ function enableAddress (address addr) external; /** * @notice Whitelists the addresses specified. * @param arr The addresses to enable */ function enableAddresses (address[] calldata arr) external; /** * @notice Disables the address specified. * @param addr The address to disable */ function disableAddress (address addr) external; /** * @notice Disables the addresses specified. * @param arr The addresses to disable */ function disableAddresses (address[] calldata arr) external; /** * @notice Indicates if the address is whitelisted or not. * @param addr The address to disable * @return Returns 1 if the address is whitelisted */ function isWhitelistedAddress (address addr) external view returns (bool); /** * This event is triggered when a new address is whitelisted. * @param addr The address that was whitelisted */ event OnAddressEnabled(address addr); /** * This event is triggered when an address is disabled. * @param addr The address that was disabled */ event OnAddressDisabled(address addr); } /** * @title Base reentrancy guard. This is constructor-less implementation for both proxies and standalone contracts. */ abstract contract BaseReentrancyGuard { uint256 internal constant _REENTRANCY_NOT_ENTERED = 1; uint256 internal constant _REENTRANCY_ENTERED = 2; uint256 internal _reentrancyStatus; /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_reentrancyStatus != _REENTRANCY_ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _reentrancyStatus = _REENTRANCY_ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _reentrancyStatus = _REENTRANCY_NOT_ENTERED; } /* /// @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a `nonReentrant` function in the call stack. function _reentrancyGuardEntered() internal view returns (bool) { return _reentrancyStatus == _REENTRANCY_ENTERED; } */ } abstract contract BaseOwnable { error OwnerOnly(); address internal _owner; /** * @notice Triggers when contract ownership changes. * @param previousOwner The previous owner of the contract. * @param newOwner The new owner of the contract. */ event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { if (msg.sender != _owner) revert OwnerOnly(); _; } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @title Lightweight version of the ownership contract. This contract has a reentrancy guard. */ abstract contract LightweightOwnable is BaseReentrancyGuard, BaseOwnable { /** * @notice Transfers ownership of the contract to the account specified. * @param newOwner The address of the new owner. */ function transferOwnership(address newOwner) external virtual nonReentrant onlyOwner { _transferOwnership(newOwner); } /** * @notice Gets the owner of the contract. * @return address The address who owns the contract. */ function owner() external view virtual returns (address) { return _owner; } } /** * @title Standalone contract for whitelisting addresses. */ contract AddressWhitelist is IAddressWhitelist, LightweightOwnable { mapping (address => bool) internal _whitelistedAddresses; constructor(address ownerAddr) { require(ownerAddr != address(0), "Owner required"); _owner = ownerAddr; } /** * @notice Whitelists the address specified. * @param addr The address to enable */ function enableAddress (address addr) external override nonReentrant onlyOwner { require(!_whitelistedAddresses[addr], "Already enabled"); _whitelistedAddresses[addr] = true; emit OnAddressEnabled(addr); } /** * @notice Whitelists the addresses specified. * @param arr The addresses to enable */ function enableAddresses (address[] calldata arr) external override nonReentrant onlyOwner { require(arr.length > 0, "Addresses required"); for (uint256 i; i < arr.length; i++) { require(arr[i] != address(0), "Invalid address"); require(!_whitelistedAddresses[arr[i]], "Already enabled"); _whitelistedAddresses[arr[i]] = true; emit OnAddressEnabled(arr[i]); } } /** * @notice Disables the address specified. * @param addr The address to disable */ function disableAddress (address addr) external override nonReentrant onlyOwner { require(_whitelistedAddresses[addr], "Already disabled"); _whitelistedAddresses[addr] = false; emit OnAddressDisabled(addr); } /** * @notice Disables the addresses specified. * @param arr The addresses to disable */ function disableAddresses (address[] calldata arr) external override nonReentrant onlyOwner { for (uint256 i; i < arr.length; i++) { require(_whitelistedAddresses[arr[i]], "Already disabled"); _whitelistedAddresses[arr[i]] = false; emit OnAddressDisabled(arr[i]); } } /** * @notice Indicates if the address is whitelisted or not. * @param addr The address to evaluate. * @return Returns true if the address is whitelisted. */ function isWhitelistedAddress (address addr) external view override returns (bool) { return _whitelistedAddresses[addr]; } } /** * @title Contract for managing time-locked function calls. */ contract TimelockedCall is ITimelockedCall, AddressWhitelist { struct TimelockedCallInfo { uint256 targetEpoch; // The unix epoch at which the hash can be consumed address createdBy; // The address of the scheduler address consumerAddress; // The address of the consumer } /// @notice The schedulers authorized for a given sender. (sender => scheduler => enabled/disabled) mapping (address => mapping(address => bool)) private whitelistedSchedulers; /// @notice The time-lock info of a given hash. mapping (bytes32 => TimelockedCallInfo) public queue; /// @notice The time-lock duration of every consumer address. mapping (address => uint256) public timeLockDuration; /// @notice Triggers when a hash is scheduled for the address specified. event HashScheduled(bytes32 h, address consumerAddress); /// @notice Triggers when a hash is consumed by the address specified. event HashConsumed(bytes32 h, address consumerAddress); /// @notice Triggers when a new scheduler is enabled for the consumer address specified. event SchedulerEnabled(address consumerAddress, address schedulerAddress); /// @notice Triggers when an existing scheduler is disabled for the consumer address specified. event SchedulerDisabled(address consumerAddress, address schedulerAddress); constructor(address ownerAddr) AddressWhitelist(ownerAddr) { } modifier ifSenderWhitelisted() { require(_whitelistedAddresses[msg.sender], "Unauthorized sender"); _; } modifier ifTimeLockConfigured() { require(timeLockDuration[msg.sender] > 0, "Not configured"); _; } /** * @notice Sets the initial scheduler and time-lock duration for the current message sender. * @param addr The address of the initial scheduler. You can add more addresses later. * @param newTimeLockDuration The duration of the time-lock for the current message sender. */ function initScheduler(address addr, uint256 newTimeLockDuration) external override nonReentrant ifSenderWhitelisted { require(addr != address(0), "Address required"); require(newTimeLockDuration > 0, "Duration required"); require(timeLockDuration[msg.sender] == 0, "Already initialized"); whitelistedSchedulers[msg.sender][addr] = true; timeLockDuration[msg.sender] = newTimeLockDuration; emit SchedulerEnabled(msg.sender, addr); } /** * @notice Authorizes the address specified to schedule calls. The calls will be consumed by the current message sender. * @param addr Specifies the address of the scheduler to authorize. */ function enableScheduler(address addr) external override nonReentrant ifTimeLockConfigured { _enableScheduler(addr); } /** * @notice Revokes the address specified from scheduling calls for the current message sender. * @param addr Specifies the address of the scheduler to revoke. */ function disableScheduler(address addr) external override nonReentrant ifTimeLockConfigured { _disableScheduler(addr); } /** * @notice Schedules a hash to be consumed by the address specified. * @param h Specifies the hash. * @param consumerAddr Specifies the address of the consumer. */ function schedule(bytes32 h, address consumerAddr) external override nonReentrant { require(h != bytes32(0), "Hash required"); require(whitelistedSchedulers[consumerAddr][msg.sender], "Unauthorized sender"); require(timeLockDuration[consumerAddr] > 0, "Not configured"); require(queue[h].targetEpoch == 0, "Already enqueued"); queue[h] = TimelockedCallInfo({ createdBy: msg.sender, consumerAddress: consumerAddr, targetEpoch: block.timestamp + timeLockDuration[consumerAddr] }); emit HashScheduled(h, consumerAddr); } /** * @notice Consumes the hash specified. * @param h Specifies the hash. */ function consume(bytes32 h) external override nonReentrant ifTimeLockConfigured { _consume(h); } /** * @notice Consumes the hash specified. The hash represents the transferOwnership function. * @param h Specifies the hash. * @param prevOwnerAddr The current owner of the contract at hand. * @param newOwnerAddr The address of the new owner. */ function consumeOwnership( bytes32 h, address prevOwnerAddr, address newOwnerAddr ) external override nonReentrant ifTimeLockConfigured { _disableScheduler(prevOwnerAddr); _consume(h); _enableScheduler(newOwnerAddr); } function _consume(bytes32 h) internal { require(queue[h].targetEpoch > 0, "Hash not enqueued"); require(msg.sender == queue[h].consumerAddress, "Unauthorized consumer"); require(block.timestamp > queue[h].targetEpoch, "Timelock in place"); delete queue[h]; emit HashConsumed(h, msg.sender); } function _enableScheduler(address addr) internal { require(addr != address(0), "Address required"); require(!whitelistedSchedulers[msg.sender][addr], "Already enabled"); whitelistedSchedulers[msg.sender][addr] = true; emit SchedulerEnabled(msg.sender, addr); } function _disableScheduler(address addr) internal { require(addr != address(0), "Address required"); require(whitelistedSchedulers[msg.sender][addr], "Already disabled"); whitelistedSchedulers[msg.sender][addr] = false; emit SchedulerDisabled(msg.sender, addr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"ownerAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OwnerOnly","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"h","type":"bytes32"},{"indexed":false,"internalType":"address","name":"consumerAddress","type":"address"}],"name":"HashConsumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"h","type":"bytes32"},{"indexed":false,"internalType":"address","name":"consumerAddress","type":"address"}],"name":"HashScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"OnAddressDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"OnAddressEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"consumerAddress","type":"address"},{"indexed":false,"internalType":"address","name":"schedulerAddress","type":"address"}],"name":"SchedulerDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"consumerAddress","type":"address"},{"indexed":false,"internalType":"address","name":"schedulerAddress","type":"address"}],"name":"SchedulerEnabled","type":"event"},{"inputs":[{"internalType":"bytes32","name":"h","type":"bytes32"}],"name":"consume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"h","type":"bytes32"},{"internalType":"address","name":"prevOwnerAddr","type":"address"},{"internalType":"address","name":"newOwnerAddr","type":"address"}],"name":"consumeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"disableAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"arr","type":"address[]"}],"name":"disableAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"disableScheduler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"enableAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"arr","type":"address[]"}],"name":"enableAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"enableScheduler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newTimeLockDuration","type":"uint256"}],"name":"initScheduler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isWhitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"targetEpoch","type":"uint256"},{"internalType":"address","name":"createdBy","type":"address"},{"internalType":"address","name":"consumerAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"h","type":"bytes32"},{"internalType":"address","name":"consumerAddr","type":"address"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timeLockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b506040516113c03803806113c083398101604081905261002e916100a0565b806001600160a01b03811661007a5760405162461bcd60e51b815260206004820152600e60248201526d13dddb995c881c995c5d5a5c995960921b604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055506100cd565b5f602082840312156100b0575f80fd5b81516001600160a01b03811681146100c6575f80fd5b9392505050565b6112e6806100da5f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80639eefdd8711610093578063f6fd7c8d11610063578063f6fd7c8d14610248578063f832e2151461025b578063f914d17814610288578063fcc91b341461029b575f80fd5b80639eefdd87146101fc578063af6f8c1b1461020f578063dd331c2e14610222578063f2fde38b14610235575f80fd5b80636bf85c43116100ce5780636bf85c431461015c57806377dfbea21461016f5780637c10dea6146101825780638da5cb5b146101e1575f80fd5b8063044b42e1146100f45780635036258b146101095780635fae05761461011c575b5f80fd5b610107610102366004611081565b6102ae565b005b610107610117366004611081565b6102ff565b61014761012a366004611081565b6001600160a01b03165f9081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61010761016a3660046110a1565b6103c6565b61010761017d366004611110565b6105ee565b6101bc61019036600461113a565b60046020525f908152604090208054600182015460029092015490916001600160a01b03908116911683565b604080519384526001600160a01b039283166020850152911690820152606001610153565b6001546040516001600160a01b039091168152602001610153565b61010761020a366004611081565b6107fd565b61010761021d36600461113a565b6108bb565b610107610230366004611151565b6108f7565b610107610243366004611081565b610a7f565b610107610256366004611081565b610abb565b61027a610269366004611081565b60056020525f908152604090205481565b604051908152602001610153565b610107610296366004611179565b610af7565b6101076102a93660046110a1565b610b53565b6102b6610cb9565b335f908152600560205260409020546102ea5760405162461bcd60e51b81526004016102e1906111b2565b60405180910390fd5b6102f381610d10565b6102fc60015f55565b50565b610307610cb9565b6001546001600160a01b0316331461033257604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604090205460ff166103695760405162461bcd60e51b81526004016102e1906111da565b6001600160a01b0381165f81815260026020908152604091829020805460ff1916905590519182527f817a22f8606c1982bfadd76a8d2f2356335b22f6731f0d5cdfdef6f033b14dc391015b60405180910390a16102fc60015f55565b6103ce610cb9565b6001546001600160a01b031633146103f957604051630b2db9b760e31b815260040160405180910390fd5b8061043b5760405162461bcd60e51b81526020600482015260126024820152711059191c995cdcd95cc81c995c5d5a5c995960721b60448201526064016102e1565b5f5b818110156105e0575f83838381811061045857610458611204565b905060200201602081019061046d9190611081565b6001600160a01b0316036104b55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016102e1565b60025f8484848181106104ca576104ca611204565b90506020020160208101906104df9190611081565b6001600160a01b0316815260208101919091526040015f205460ff16156105185760405162461bcd60e51b81526004016102e190611218565b600160025f85858581811061052f5761052f611204565b90506020020160208101906105449190611081565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f36eb734aedf7abf48fbef350f1aa23aa2cf37b6ea7d7fc668e15dca0e9bb72af83838381811061059e5761059e611204565b90506020020160208101906105b39190611081565b6040516001600160a01b03909116815260200160405180910390a1806105d881611255565b91505061043d565b506105ea60015f55565b5050565b6105f6610cb9565b816106335760405162461bcd60e51b815260206004820152600d60248201526c12185cda081c995c5d5a5c9959609a1b60448201526064016102e1565b6001600160a01b0381165f90815260036020908152604080832033845290915290205460ff1661069b5760405162461bcd60e51b81526020600482015260136024820152722ab730baba3437b934bd32b21039b2b73232b960691b60448201526064016102e1565b6001600160a01b0381165f908152600560205260409020546106cf5760405162461bcd60e51b81526004016102e1906111b2565b5f828152600460205260409020541561071d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195b9c5d595d595960821b60448201526064016102e1565b604080516060810182526001600160a01b0383165f90815260056020529190912054819061074b904261126d565b8152336020808301919091526001600160a01b038481166040938401525f8681526004835283902084518155918401516001830180549183166001600160a01b03199283161790559383015160029092018054929091169190931617909155517f6ef595d41bb19bf4009067ebfca1e965c782641ffd735166641d1832d9955ca5906107ec90849084909182526001600160a01b0316602082015260400190565b60405180910390a16105ea60015f55565b610805610cb9565b6001546001600160a01b0316331461083057604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604090205460ff16156108685760405162461bcd60e51b81526004016102e190611218565b6001600160a01b0381165f81815260026020908152604091829020805460ff1916600117905590519182527f36eb734aedf7abf48fbef350f1aa23aa2cf37b6ea7d7fc668e15dca0e9bb72af91016103b5565b6108c3610cb9565b335f908152600560205260409020546108ee5760405162461bcd60e51b81526004016102e1906111b2565b6102f381610de4565b6108ff610cb9565b335f9081526002602052604090205460ff166109535760405162461bcd60e51b81526020600482015260136024820152722ab730baba3437b934bd32b21039b2b73232b960691b60448201526064016102e1565b6001600160a01b0382166109795760405162461bcd60e51b81526004016102e190611286565b5f81116109bc5760405162461bcd60e51b8152602060048201526011602482015270111d5c985d1a5bdb881c995c5d5a5c9959607a1b60448201526064016102e1565b335f9081526005602052604090205415610a0e5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016102e1565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff1916600117905584845260058352928190208590558051938452908301919091527f2e1532fab4575bbd4b71ca99084eba74c2dc594c534a46ea4d8271ba87686dbb91016107ec565b610a87610cb9565b6001546001600160a01b03163314610ab257604051630b2db9b760e31b815260040160405180910390fd5b6102f381610f4c565b610ac3610cb9565b335f90815260056020526040902054610aee5760405162461bcd60e51b81526004016102e1906111b2565b6102f381610f9d565b610aff610cb9565b335f90815260056020526040902054610b2a5760405162461bcd60e51b81526004016102e1906111b2565b610b3382610f9d565b610b3c83610de4565b610b4581610d10565b610b4e60015f55565b505050565b610b5b610cb9565b6001546001600160a01b03163314610b8657604051630b2db9b760e31b815260040160405180910390fd5b5f5b818110156105e05760025f848484818110610ba557610ba5611204565b9050602002016020810190610bba9190611081565b6001600160a01b0316815260208101919091526040015f205460ff16610bf25760405162461bcd60e51b81526004016102e1906111da565b5f60025f858585818110610c0857610c08611204565b9050602002016020810190610c1d9190611081565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f817a22f8606c1982bfadd76a8d2f2356335b22f6731f0d5cdfdef6f033b14dc3838383818110610c7757610c77611204565b9050602002016020810190610c8c9190611081565b6040516001600160a01b03909116815260200160405180910390a180610cb181611255565b915050610b88565b60025f5403610d0a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102e1565b60025f55565b6001600160a01b038116610d365760405162461bcd60e51b81526004016102e190611286565b335f9081526003602090815260408083206001600160a01b038516845290915290205460ff1615610d795760405162461bcd60e51b81526004016102e190611218565b335f8181526003602090815260408083206001600160a01b03861680855290835292819020805460ff191660011790558051938452908301919091527f2e1532fab4575bbd4b71ca99084eba74c2dc594c534a46ea4d8271ba87686dbb91015b60405180910390a150565b5f81815260046020526040902054610e325760405162461bcd60e51b815260206004820152601160248201527012185cda081b9bdd08195b9c5d595d5959607a1b60448201526064016102e1565b5f818152600460205260409020600201546001600160a01b03163314610e925760405162461bcd60e51b81526020600482015260156024820152742ab730baba3437b934bd32b21031b7b739bab6b2b960591b60448201526064016102e1565b5f818152600460205260409020544211610ee25760405162461bcd60e51b815260206004820152601160248201527054696d656c6f636b20696e20706c61636560781b60448201526064016102e1565b5f8181526004602090815260408083209283556001830180546001600160a01b031990811690915560029093018054909316909255815183815233918101919091527fc0c97b5bfc2b0d319a6dadd3efddd19273d76957d4cf2c1f72697f8b589dea059101610dd9565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038116610fc35760405162461bcd60e51b81526004016102e190611286565b335f9081526003602090815260408083206001600160a01b038516845290915290205460ff166110055760405162461bcd60e51b81526004016102e1906111da565b335f8181526003602090815260408083206001600160a01b03861680855290835292819020805460ff191690558051938452908301919091527f07afcfd70ee49c21e69bef23484ab1dfaba225d7d1c87fcbad238e86590972879101610dd9565b80356001600160a01b038116811461107c575f80fd5b919050565b5f60208284031215611091575f80fd5b61109a82611066565b9392505050565b5f80602083850312156110b2575f80fd5b823567ffffffffffffffff808211156110c9575f80fd5b818501915085601f8301126110dc575f80fd5b8135818111156110ea575f80fd5b8660208260051b85010111156110fe575f80fd5b60209290920196919550909350505050565b5f8060408385031215611121575f80fd5b8235915061113160208401611066565b90509250929050565b5f6020828403121561114a575f80fd5b5035919050565b5f8060408385031215611162575f80fd5b61116b83611066565b946020939093013593505050565b5f805f6060848603121561118b575f80fd5b8335925061119b60208501611066565b91506111a960408501611066565b90509250925092565b6020808252600e908201526d139bdd0818dbdb999a59dd5c995960921b604082015260600190565b60208082526010908201526f105b1c9958591e48191a5cd8589b195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b6020808252600f908201526e105b1c9958591e48195b98589b1959608a1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f6001820161126657611266611241565b5060010190565b8082018082111561128057611280611241565b92915050565b60208082526010908201526f1059191c995cdcc81c995c5d5a5c995960821b60408201526060019056fea2646970667358221220dd22de486a9378a3e6131bff48bd5812588fa4aa1fa93da323b2ac25c022a7f064736f6c63430008140033000000000000000000000000b30f65e1a1455ab919f6baddc783fd4c049f5334
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80639eefdd8711610093578063f6fd7c8d11610063578063f6fd7c8d14610248578063f832e2151461025b578063f914d17814610288578063fcc91b341461029b575f80fd5b80639eefdd87146101fc578063af6f8c1b1461020f578063dd331c2e14610222578063f2fde38b14610235575f80fd5b80636bf85c43116100ce5780636bf85c431461015c57806377dfbea21461016f5780637c10dea6146101825780638da5cb5b146101e1575f80fd5b8063044b42e1146100f45780635036258b146101095780635fae05761461011c575b5f80fd5b610107610102366004611081565b6102ae565b005b610107610117366004611081565b6102ff565b61014761012a366004611081565b6001600160a01b03165f9081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61010761016a3660046110a1565b6103c6565b61010761017d366004611110565b6105ee565b6101bc61019036600461113a565b60046020525f908152604090208054600182015460029092015490916001600160a01b03908116911683565b604080519384526001600160a01b039283166020850152911690820152606001610153565b6001546040516001600160a01b039091168152602001610153565b61010761020a366004611081565b6107fd565b61010761021d36600461113a565b6108bb565b610107610230366004611151565b6108f7565b610107610243366004611081565b610a7f565b610107610256366004611081565b610abb565b61027a610269366004611081565b60056020525f908152604090205481565b604051908152602001610153565b610107610296366004611179565b610af7565b6101076102a93660046110a1565b610b53565b6102b6610cb9565b335f908152600560205260409020546102ea5760405162461bcd60e51b81526004016102e1906111b2565b60405180910390fd5b6102f381610d10565b6102fc60015f55565b50565b610307610cb9565b6001546001600160a01b0316331461033257604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604090205460ff166103695760405162461bcd60e51b81526004016102e1906111da565b6001600160a01b0381165f81815260026020908152604091829020805460ff1916905590519182527f817a22f8606c1982bfadd76a8d2f2356335b22f6731f0d5cdfdef6f033b14dc391015b60405180910390a16102fc60015f55565b6103ce610cb9565b6001546001600160a01b031633146103f957604051630b2db9b760e31b815260040160405180910390fd5b8061043b5760405162461bcd60e51b81526020600482015260126024820152711059191c995cdcd95cc81c995c5d5a5c995960721b60448201526064016102e1565b5f5b818110156105e0575f83838381811061045857610458611204565b905060200201602081019061046d9190611081565b6001600160a01b0316036104b55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016102e1565b60025f8484848181106104ca576104ca611204565b90506020020160208101906104df9190611081565b6001600160a01b0316815260208101919091526040015f205460ff16156105185760405162461bcd60e51b81526004016102e190611218565b600160025f85858581811061052f5761052f611204565b90506020020160208101906105449190611081565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f36eb734aedf7abf48fbef350f1aa23aa2cf37b6ea7d7fc668e15dca0e9bb72af83838381811061059e5761059e611204565b90506020020160208101906105b39190611081565b6040516001600160a01b03909116815260200160405180910390a1806105d881611255565b91505061043d565b506105ea60015f55565b5050565b6105f6610cb9565b816106335760405162461bcd60e51b815260206004820152600d60248201526c12185cda081c995c5d5a5c9959609a1b60448201526064016102e1565b6001600160a01b0381165f90815260036020908152604080832033845290915290205460ff1661069b5760405162461bcd60e51b81526020600482015260136024820152722ab730baba3437b934bd32b21039b2b73232b960691b60448201526064016102e1565b6001600160a01b0381165f908152600560205260409020546106cf5760405162461bcd60e51b81526004016102e1906111b2565b5f828152600460205260409020541561071d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195b9c5d595d595960821b60448201526064016102e1565b604080516060810182526001600160a01b0383165f90815260056020529190912054819061074b904261126d565b8152336020808301919091526001600160a01b038481166040938401525f8681526004835283902084518155918401516001830180549183166001600160a01b03199283161790559383015160029092018054929091169190931617909155517f6ef595d41bb19bf4009067ebfca1e965c782641ffd735166641d1832d9955ca5906107ec90849084909182526001600160a01b0316602082015260400190565b60405180910390a16105ea60015f55565b610805610cb9565b6001546001600160a01b0316331461083057604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604090205460ff16156108685760405162461bcd60e51b81526004016102e190611218565b6001600160a01b0381165f81815260026020908152604091829020805460ff1916600117905590519182527f36eb734aedf7abf48fbef350f1aa23aa2cf37b6ea7d7fc668e15dca0e9bb72af91016103b5565b6108c3610cb9565b335f908152600560205260409020546108ee5760405162461bcd60e51b81526004016102e1906111b2565b6102f381610de4565b6108ff610cb9565b335f9081526002602052604090205460ff166109535760405162461bcd60e51b81526020600482015260136024820152722ab730baba3437b934bd32b21039b2b73232b960691b60448201526064016102e1565b6001600160a01b0382166109795760405162461bcd60e51b81526004016102e190611286565b5f81116109bc5760405162461bcd60e51b8152602060048201526011602482015270111d5c985d1a5bdb881c995c5d5a5c9959607a1b60448201526064016102e1565b335f9081526005602052604090205415610a0e5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016102e1565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff1916600117905584845260058352928190208590558051938452908301919091527f2e1532fab4575bbd4b71ca99084eba74c2dc594c534a46ea4d8271ba87686dbb91016107ec565b610a87610cb9565b6001546001600160a01b03163314610ab257604051630b2db9b760e31b815260040160405180910390fd5b6102f381610f4c565b610ac3610cb9565b335f90815260056020526040902054610aee5760405162461bcd60e51b81526004016102e1906111b2565b6102f381610f9d565b610aff610cb9565b335f90815260056020526040902054610b2a5760405162461bcd60e51b81526004016102e1906111b2565b610b3382610f9d565b610b3c83610de4565b610b4581610d10565b610b4e60015f55565b505050565b610b5b610cb9565b6001546001600160a01b03163314610b8657604051630b2db9b760e31b815260040160405180910390fd5b5f5b818110156105e05760025f848484818110610ba557610ba5611204565b9050602002016020810190610bba9190611081565b6001600160a01b0316815260208101919091526040015f205460ff16610bf25760405162461bcd60e51b81526004016102e1906111da565b5f60025f858585818110610c0857610c08611204565b9050602002016020810190610c1d9190611081565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f817a22f8606c1982bfadd76a8d2f2356335b22f6731f0d5cdfdef6f033b14dc3838383818110610c7757610c77611204565b9050602002016020810190610c8c9190611081565b6040516001600160a01b03909116815260200160405180910390a180610cb181611255565b915050610b88565b60025f5403610d0a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102e1565b60025f55565b6001600160a01b038116610d365760405162461bcd60e51b81526004016102e190611286565b335f9081526003602090815260408083206001600160a01b038516845290915290205460ff1615610d795760405162461bcd60e51b81526004016102e190611218565b335f8181526003602090815260408083206001600160a01b03861680855290835292819020805460ff191660011790558051938452908301919091527f2e1532fab4575bbd4b71ca99084eba74c2dc594c534a46ea4d8271ba87686dbb91015b60405180910390a150565b5f81815260046020526040902054610e325760405162461bcd60e51b815260206004820152601160248201527012185cda081b9bdd08195b9c5d595d5959607a1b60448201526064016102e1565b5f818152600460205260409020600201546001600160a01b03163314610e925760405162461bcd60e51b81526020600482015260156024820152742ab730baba3437b934bd32b21031b7b739bab6b2b960591b60448201526064016102e1565b5f818152600460205260409020544211610ee25760405162461bcd60e51b815260206004820152601160248201527054696d656c6f636b20696e20706c61636560781b60448201526064016102e1565b5f8181526004602090815260408083209283556001830180546001600160a01b031990811690915560029093018054909316909255815183815233918101919091527fc0c97b5bfc2b0d319a6dadd3efddd19273d76957d4cf2c1f72697f8b589dea059101610dd9565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038116610fc35760405162461bcd60e51b81526004016102e190611286565b335f9081526003602090815260408083206001600160a01b038516845290915290205460ff166110055760405162461bcd60e51b81526004016102e1906111da565b335f8181526003602090815260408083206001600160a01b03861680855290835292819020805460ff191690558051938452908301919091527f07afcfd70ee49c21e69bef23484ab1dfaba225d7d1c87fcbad238e86590972879101610dd9565b80356001600160a01b038116811461107c575f80fd5b919050565b5f60208284031215611091575f80fd5b61109a82611066565b9392505050565b5f80602083850312156110b2575f80fd5b823567ffffffffffffffff808211156110c9575f80fd5b818501915085601f8301126110dc575f80fd5b8135818111156110ea575f80fd5b8660208260051b85010111156110fe575f80fd5b60209290920196919550909350505050565b5f8060408385031215611121575f80fd5b8235915061113160208401611066565b90509250929050565b5f6020828403121561114a575f80fd5b5035919050565b5f8060408385031215611162575f80fd5b61116b83611066565b946020939093013593505050565b5f805f6060848603121561118b575f80fd5b8335925061119b60208501611066565b91506111a960408501611066565b90509250925092565b6020808252600e908201526d139bdd0818dbdb999a59dd5c995960921b604082015260600190565b60208082526010908201526f105b1c9958591e48191a5cd8589b195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b6020808252600f908201526e105b1c9958591e48195b98589b1959608a1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f6001820161126657611266611241565b5060010190565b8082018082111561128057611280611241565b92915050565b60208082526010908201526f1059191c995cdcc81c995c5d5a5c995960821b60408201526060019056fea2646970667358221220dd22de486a9378a3e6131bff48bd5812588fa4aa1fa93da323b2ac25c022a7f064736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b30f65e1a1455ab919f6baddc783fd4c049f5334
-----Decoded View---------------
Arg [0] : ownerAddr (address): 0xb30F65e1a1455ab919f6baddc783FD4c049F5334
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b30f65e1a1455ab919f6baddc783fd4c049f5334
Deployed Bytecode Sourcemap
7619:5834:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10383:132;;;;;;:::i;:::-;;:::i;:::-;;6519:240;;;;;;:::i;:::-;;:::i;7403:136::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7504:27:0;7480:4;7504:27;;;:21;:27;;;;;;;;;7403:136;;;;548:14:1;;541:22;523:41;;511:2;496:18;7403:136:0;;;;;;;;5955:447;;;;;;:::i;:::-;;:::i;11049:636::-;;;;;;:::i;:::-;;:::i;8188:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8188:52:0;;;;;;;;;;;1841:25:1;;;-1:-1:-1;;;;;1940:15:1;;;1935:2;1920:18;;1913:43;1992:15;;1972:18;;;1965:43;1829:2;1814:18;8188:52:0;1639:375:1;5040:89:0;5115:6;;5040:89;;-1:-1:-1;;;;;5115:6:0;;;2165:51:1;;2153:2;2138:18;5040:89:0;2019:203:1;5597:237:0;;;;;;:::i;:::-;;:::i;11793:110::-;;;;;;:::i;:::-;;:::i;9663:495::-;;;;;;:::i;:::-;;:::i;4775:132::-;;;;;;:::i;:::-;;:::i;10711:134::-;;;;;;:::i;:::-;;:::i;8316:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2632:25:1;;;2620:2;2605:18;8316:52:0;2486:177:1;12193:282:0;;;;;;:::i;:::-;;:::i;6879:329::-;;;;;;:::i;:::-;;:::i;10383:132::-;2691:21;:19;:21::i;:::-;9296:10:::1;9310:1;9279:28:::0;;;:16:::1;:28;::::0;;;;;9271:59:::1;;;;-1:-1:-1::0;;;9271:59:0::1;;;;;;;:::i;:::-;;;;;;;;;10485:22:::2;10502:4;10485:16;:22::i;:::-;2735:20:::0;2169:1;3297:17;:43;3114:234;2735:20;10383:132;:::o;6519:240::-;2691:21;:19;:21::i;:::-;4185:6:::1;::::0;-1:-1:-1;;;;;4185:6:0::1;4171:10;:20;4167:44;;4200:11;;-1:-1:-1::0;;;4200:11:0::1;;;;;;;;;;;4167:44;-1:-1:-1::0;;;;;6618:27:0;::::2;;::::0;;;:21:::2;:27;::::0;;;;;::::2;;6610:56;;;;-1:-1:-1::0;;;6610:56:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6677:27:0;::::2;6707:5;6677:27:::0;;;:21:::2;:27;::::0;;;;;;;;:35;;-1:-1:-1;;6677:35:0::2;::::0;;6728:23;;2165:51:1;;;6728:23:0::2;::::0;2138:18:1;6728:23:0::2;;;;;;;;2735:20:::0;2169:1;3297:17;:43;3114:234;5955:447;2691:21;:19;:21::i;:::-;4185:6:::1;::::0;-1:-1:-1;;;;;4185:6:0::1;4171:10;:20;4167:44;;4200:11;;-1:-1:-1::0;;;4200:11:0::1;;;;;;;;;;;4167:44;6065:14:::0;6057:45:::2;;;::::0;-1:-1:-1;;;6057:45:0;;3891:2:1;6057:45:0::2;::::0;::::2;3873:21:1::0;3930:2;3910:18;;;3903:30;-1:-1:-1;;;3949:18:1;;;3942:48;4007:18;;6057:45:0::2;3689:342:1::0;6057:45:0::2;6120:9;6115:280;6131:14:::0;;::::2;6115:280;;;6193:1;6175:3:::0;;6179:1;6175:6;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6175:20:0::2;::::0;6167:48:::2;;;::::0;-1:-1:-1;;;6167:48:0;;4370:2:1;6167:48:0::2;::::0;::::2;4352:21:1::0;4409:2;4389:18;;;4382:30;-1:-1:-1;;;4428:18:1;;;4421:45;4483:18;;6167:48:0::2;4168:339:1::0;6167:48:0::2;6239:21;:29;6261:3;;6265:1;6261:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6239:29:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;6239:29:0;;::::2;;6238:30;6230:58;;;;-1:-1:-1::0;;;6230:58:0::2;;;;;;;:::i;:::-;6335:4;6303:21;:29;6325:3;;6329:1;6325:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6303:29:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;6303:29:0;:36;;-1:-1:-1;;6303:36:0::2;::::0;::::2;;::::0;;;::::2;::::0;;6359:24:::2;6376:3:::0;;6380:1;6376:6;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6359:24;::::0;-1:-1:-1;;;;;2183:32:1;;;2165:51;;2153:2;2138:18;6359:24:0::2;;;;;;;6147:3:::0;::::2;::::0;::::2;:::i;:::-;;;;6115:280;;;;2735:20:::0;2169:1;3297:17;:43;3114:234;2735:20;5955:447;;:::o;11049:636::-;2691:21;:19;:21::i;:::-;11150:1;11142:41:::1;;;::::0;-1:-1:-1;;;11142:41:0;;5330:2:1;11142:41:0::1;::::0;::::1;5312:21:1::0;5369:2;5349:18;;;5342:30;-1:-1:-1;;;5388:18:1;;;5381:43;5441:18;;11142:41:0::1;5128:337:1::0;11142:41:0::1;-1:-1:-1::0;;;;;11202:35:0;::::1;;::::0;;;:21:::1;:35;::::0;;;;;;;11238:10:::1;11202:47:::0;;;;;;;;::::1;;11194:79;;;::::0;-1:-1:-1;;;11194:79:0;;5672:2:1;11194:79:0::1;::::0;::::1;5654:21:1::0;5711:2;5691:18;;;5684:30;-1:-1:-1;;;5730:18:1;;;5723:49;5789:18;;11194:79:0::1;5470:343:1::0;11194:79:0::1;-1:-1:-1::0;;;;;11292:30:0;::::1;11325:1;11292:30:::0;;;:16:::1;:30;::::0;;;;;11284:61:::1;;;;-1:-1:-1::0;;;11284:61:0::1;;;;;;;:::i;:::-;11364:8;::::0;;;:5:::1;:8;::::0;;;;:20;:25;11356:54:::1;;;::::0;-1:-1:-1;;;11356:54:0;;6020:2:1;11356:54:0::1;::::0;::::1;6002:21:1::0;6059:2;6039:18;;;6032:30;-1:-1:-1;;;6078:18:1;;;6071:46;6134:18;;11356:54:0::1;5818:340:1::0;11356:54:0::1;11442:187;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;11587:30:0;::::1;-1:-1:-1::0;11587:30:0;;;:16:::1;:30;::::0;;;;;;11442:187;;11569:48:::1;::::0;:15:::1;:48;:::i;:::-;11442:187:::0;;11487:10:::1;11442:187;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;11442:187:0;;::::1;::::0;;;;;-1:-1:-1;11431:8:0;;;:5:::1;:8:::0;;;;;:198;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;-1:-1:-1::0;;;;;;11431:198:0;;::::1;;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;;::::1;;::::0;;;11647:30;::::1;::::0;::::1;::::0;11437:1;;11529:12;;6467:25:1;;;-1:-1:-1;;;;;6528:32:1;6523:2;6508:18;;6501:60;6455:2;6440:18;;6293:274;11647:30:0::1;;;;;;;;2735:20:::0;2169:1;3297:17;:43;3114:234;5597:237;2691:21;:19;:21::i;:::-;4185:6:::1;::::0;-1:-1:-1;;;;;4185:6:0::1;4171:10;:20;4167:44;;4200:11;;-1:-1:-1::0;;;4200:11:0::1;;;;;;;;;;;4167:44;-1:-1:-1::0;;;;;5696:27:0;::::2;;::::0;;;:21:::2;:27;::::0;;;;;::::2;;5695:28;5687:56;;;;-1:-1:-1::0;;;5687:56:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5754:27:0;::::2;;::::0;;;:21:::2;:27;::::0;;;;;;;;:34;;-1:-1:-1;;5754:34:0::2;5784:4;5754:34;::::0;;5804:22;;2165:51:1;;;5804:22:0::2;::::0;2138:18:1;5804:22:0::2;2019:203:1::0;11793:110:0;2691:21;:19;:21::i;:::-;9296:10:::1;9310:1;9279:28:::0;;;:16:::1;:28;::::0;;;;;9271:59:::1;;;;-1:-1:-1::0;;;9271:59:0::1;;;;;;;:::i;:::-;11884:11:::2;11893:1;11884:8;:11::i;9663:495::-:0;2691:21;:19;:21::i;:::-;9165:10:::1;9143:33;::::0;;;:21:::1;:33;::::0;;;;;::::1;;9135:65;;;::::0;-1:-1:-1;;;9135:65:0;;5672:2:1;9135:65:0::1;::::0;::::1;5654:21:1::0;5711:2;5691:18;;;5684:30;-1:-1:-1;;;5730:18:1;;;5723:49;5789:18;;9135:65:0::1;5470:343:1::0;9135:65:0::1;-1:-1:-1::0;;;;;9799:18:0;::::2;9791:47;;;;-1:-1:-1::0;;;9791:47:0::2;;;;;;;:::i;:::-;9879:1;9857:19;:23;9849:53;;;::::0;-1:-1:-1;;;9849:53:0;;7119:2:1;9849:53:0::2;::::0;::::2;7101:21:1::0;7158:2;7138:18;;;7131:30;-1:-1:-1;;;7177:18:1;;;7170:47;7234:18;;9849:53:0::2;6917:341:1::0;9849:53:0::2;9938:10;9921:28;::::0;;;:16:::2;:28;::::0;;;;;:33;9913:65:::2;;;::::0;-1:-1:-1;;;9913:65:0;;7465:2:1;9913:65:0::2;::::0;::::2;7447:21:1::0;7504:2;7484:18;;;7477:30;-1:-1:-1;;;7523:18:1;;;7516:49;7582:18;;9913:65:0::2;7263:343:1::0;9913:65:0::2;10013:10;9991:33;::::0;;;:21:::2;:33;::::0;;;;;;;-1:-1:-1;;;;;9991:39:0;::::2;::::0;;;;;;;;;:46;;-1:-1:-1;;9991:46:0::2;10033:4;9991:46;::::0;;10048:28;;;:16:::2;:28:::0;;;;;;:50;;;10116:34;;7823::1;;;7873:18;;;7866:43;;;;10116:34:0::2;::::0;7758:18:1;10116:34:0::2;7611:304:1::0;4775:132:0;2691:21;:19;:21::i;:::-;4185:6:::1;::::0;-1:-1:-1;;;;;4185:6:0::1;4171:10;:20;4167:44;;4200:11;;-1:-1:-1::0;;;4200:11:0::1;;;;;;;;;;;4167:44;4871:28:::2;4890:8;4871:18;:28::i;10711:134::-:0;2691:21;:19;:21::i;:::-;9296:10:::1;9310:1;9279:28:::0;;;:16:::1;:28;::::0;;;;;9271:59:::1;;;;-1:-1:-1::0;;;9271:59:0::1;;;;;;;:::i;:::-;10814:23:::2;10832:4;10814:17;:23::i;12193:282::-:0;2691:21;:19;:21::i;:::-;9296:10:::1;9310:1;9279:28:::0;;;:16:::1;:28;::::0;;;;;9271:59:::1;;;;-1:-1:-1::0;;;9271:59:0::1;;;;;;;:::i;:::-;12372:32:::2;12390:13;12372:17;:32::i;:::-;12415:11;12424:1;12415:8;:11::i;:::-;12437:30;12454:12;12437:16;:30::i;:::-;2735:20:::0;2169:1;3297:17;:43;3114:234;2735:20;12193:282;;;:::o;6879:329::-;2691:21;:19;:21::i;:::-;4185:6:::1;::::0;-1:-1:-1;;;;;4185:6:0::1;4171:10;:20;4167:44;;4200:11;;-1:-1:-1::0;;;4200:11:0::1;;;;;;;;;;;4167:44;6987:9:::2;6982:219;6998:14:::0;;::::2;6982:219;;;7042:21;:29;7064:3;;7068:1;7064:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7042:29:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;7042:29:0;;::::2;;7034:58;;;;-1:-1:-1::0;;;7034:58:0::2;;;;;;;:::i;:::-;7139:5;7107:21;:29;7129:3;;7133:1;7129:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7107:29:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;7107:29:0;:37;;-1:-1:-1;;7107:37:0::2;::::0;::::2;;::::0;;;::::2;::::0;;7164:25:::2;7182:3:::0;;7186:1;7182:6;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7164:25;::::0;-1:-1:-1;;;;;2183:32:1;;;2165:51;;2153:2;2138:18;7164:25:0::2;;;;;;;7014:3:::0;::::2;::::0;::::2;:::i;:::-;;;;6982:219;;2771:335:::0;2225:1;2905:17;;:40;2897:84;;;;-1:-1:-1;;;2897:84:0;;8122:2:1;2897:84:0;;;8104:21:1;8161:2;8141:18;;;8134:30;8200:33;8180:18;;;8173:61;8251:18;;2897:84:0;7920:355:1;2897:84:0;2225:1;3059:17;:39;2771:335::o;12837:301::-;-1:-1:-1;;;;;12905:18:0;;12897:47;;;;-1:-1:-1;;;12897:47:0;;;;;;;:::i;:::-;12986:10;12964:33;;;;:21;:33;;;;;;;;-1:-1:-1;;;;;12964:39:0;;;;;;;;;;;;12963:40;12955:68;;;;-1:-1:-1;;;12955:68:0;;;;;;;:::i;:::-;13056:10;13034:33;;;;:21;:33;;;;;;;;-1:-1:-1;;;;;13034:39:0;;;;;;;;;;;;:46;;-1:-1:-1;;13034:46:0;13076:4;13034:46;;;13096:34;;7823::1;;;7873:18;;;7866:43;;;;13096:34:0;;7758:18:1;13096:34:0;;;;;;;;12837:301;:::o;12483:346::-;12563:1;12540:8;;;:5;:8;;;;;:20;12532:54;;;;-1:-1:-1;;;12532:54:0;;8482:2:1;12532:54:0;;;8464:21:1;8521:2;8501:18;;;8494:30;-1:-1:-1;;;8540:18:1;;;8533:47;8597:18;;12532:54:0;8280:341:1;12532:54:0;12619:8;;;;:5;:8;;;;;:24;;;-1:-1:-1;;;;;12619:24:0;12605:10;:38;12597:72;;;;-1:-1:-1;;;12597:72:0;;8828:2:1;12597:72:0;;;8810:21:1;8867:2;8847:18;;;8840:30;-1:-1:-1;;;8886:18:1;;;8879:51;8947:18;;12597:72:0;8626:345:1;12597:72:0;12706:8;;;;:5;:8;;;;;:20;12688:15;:38;12680:68;;;;-1:-1:-1;;;12680:68:0;;9178:2:1;12680:68:0;;;9160:21:1;9217:2;9197:18;;;9190:30;-1:-1:-1;;;9236:18:1;;;9229:47;9293:18;;12680:68:0;8976:341:1;12680:68:0;12768:8;;;;:5;:8;;;;;;;;12761:15;;;;;;;;-1:-1:-1;;;;;;12761:15:0;;;;;;;;;;;;;;;;;;12794:27;;6467:25:1;;;12810:10:0;6508:18:1;;;6501:60;;;;12794:27:0;;6440:18:1;12794:27:0;6293:274:1;4239:191:0;4332:6;;;-1:-1:-1;;;;;4349:17:0;;;-1:-1:-1;;;;;;4349:17:0;;;;;;;4382:40;;4332:6;;;4349:17;4332:6;;4382:40;;4313:16;;4382:40;4302:128;4239:191;:::o;13146:304::-;-1:-1:-1;;;;;13215:18:0;;13207:47;;;;-1:-1:-1;;;13207:47:0;;;;;;;:::i;:::-;13295:10;13273:33;;;;:21;:33;;;;;;;;-1:-1:-1;;;;;13273:39:0;;;;;;;;;;;;13265:68;;;;-1:-1:-1;;;13265:68:0;;;;;;;:::i;:::-;13366:10;13386:5;13344:33;;;:21;:33;;;;;;;;-1:-1:-1;;;;;13344:39:0;;;;;;;;;;;;:47;;-1:-1:-1;;13344:47:0;;;13407:35;;7823:34:1;;;7873:18;;;7866:43;;;;13407:35:0;;7758:18:1;13407:35:0;7611:304:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;575:615::-;661:6;669;722:2;710:9;701:7;697:23;693:32;690:52;;;738:1;735;728:12;690:52;778:9;765:23;807:18;848:2;840:6;837:14;834:34;;;864:1;861;854:12;834:34;902:6;891:9;887:22;877:32;;947:7;940:4;936:2;932:13;928:27;918:55;;969:1;966;959:12;918:55;1009:2;996:16;1035:2;1027:6;1024:14;1021:34;;;1051:1;1048;1041:12;1021:34;1104:7;1099:2;1089:6;1086:1;1082:14;1078:2;1074:23;1070:32;1067:45;1064:65;;;1125:1;1122;1115:12;1064:65;1156:2;1148:11;;;;;1178:6;;-1:-1:-1;575:615:1;;-1:-1:-1;;;;575:615:1:o;1195:254::-;1263:6;1271;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1376:9;1363:23;1353:33;;1405:38;1439:2;1428:9;1424:18;1405:38;:::i;:::-;1395:48;;1195:254;;;;;:::o;1454:180::-;1513:6;1566:2;1554:9;1545:7;1541:23;1537:32;1534:52;;;1582:1;1579;1572:12;1534:52;-1:-1:-1;1605:23:1;;1454:180;-1:-1:-1;1454:180:1:o;2227:254::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;2395:29;2414:9;2395:29;:::i;:::-;2385:39;2471:2;2456:18;;;;2443:32;;-1:-1:-1;;;2227:254:1:o;2668:328::-;2745:6;2753;2761;2814:2;2802:9;2793:7;2789:23;2785:32;2782:52;;;2830:1;2827;2820:12;2782:52;2866:9;2853:23;2843:33;;2895:38;2929:2;2918:9;2914:18;2895:38;:::i;:::-;2885:48;;2952:38;2986:2;2975:9;2971:18;2952:38;:::i;:::-;2942:48;;2668:328;;;;;:::o;3001:338::-;3203:2;3185:21;;;3242:2;3222:18;;;3215:30;-1:-1:-1;;;3276:2:1;3261:18;;3254:44;3330:2;3315:18;;3001:338::o;3344:340::-;3546:2;3528:21;;;3585:2;3565:18;;;3558:30;-1:-1:-1;;;3619:2:1;3604:18;;3597:46;3675:2;3660:18;;3344:340::o;4036:127::-;4097:10;4092:3;4088:20;4085:1;4078:31;4128:4;4125:1;4118:15;4152:4;4149:1;4142:15;4512:339;4714:2;4696:21;;;4753:2;4733:18;;;4726:30;-1:-1:-1;;;4787:2:1;4772:18;;4765:45;4842:2;4827:18;;4512:339::o;4856:127::-;4917:10;4912:3;4908:20;4905:1;4898:31;4948:4;4945:1;4938:15;4972:4;4969:1;4962:15;4988:135;5027:3;5048:17;;;5045:43;;5068:18;;:::i;:::-;-1:-1:-1;5115:1:1;5104:13;;4988:135::o;6163:125::-;6228:9;;;6249:10;;;6246:36;;;6262:18;;:::i;:::-;6163:125;;;;:::o;6572:340::-;6774:2;6756:21;;;6813:2;6793:18;;;6786:30;-1:-1:-1;;;6847:2:1;6832:18;;6825:46;6903:2;6888:18;;6572:340::o
Swarm Source
ipfs://dd22de486a9378a3e6131bff48bd5812588fa4aa1fa93da323b2ac25c022a7f0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.