Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 9,769 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Poke | 13714649 | 1130 days ago | IN | 0 ETH | 0.03110749 | ||||
Poke | 13713438 | 1130 days ago | IN | 0 ETH | 0.01975561 | ||||
Poke | 13713258 | 1130 days ago | IN | 0 ETH | 0.01663505 | ||||
Poke | 13713037 | 1130 days ago | IN | 0 ETH | 0.01673895 | ||||
Poke | 13711972 | 1130 days ago | IN | 0 ETH | 0.01844559 | ||||
Poke | 13711887 | 1130 days ago | IN | 0 ETH | 0.01998949 | ||||
Poke | 13711074 | 1131 days ago | IN | 0 ETH | 0.02445227 | ||||
Poke | 13710485 | 1131 days ago | IN | 0 ETH | 0.01749829 | ||||
Poke | 13709875 | 1131 days ago | IN | 0 ETH | 0.0266861 | ||||
Poke | 13709798 | 1131 days ago | IN | 0 ETH | 0.02198053 | ||||
Poke | 13708939 | 1131 days ago | IN | 0 ETH | 0.01644391 | ||||
Poke | 13708629 | 1131 days ago | IN | 0 ETH | 0.01322608 | ||||
Poke | 13707562 | 1131 days ago | IN | 0 ETH | 0.01645211 | ||||
Poke | 13706541 | 1131 days ago | IN | 0 ETH | 0.01827431 | ||||
Poke | 13705524 | 1131 days ago | IN | 0 ETH | 0.02063577 | ||||
Poke | 13705176 | 1132 days ago | IN | 0 ETH | 0.02489913 | ||||
Poke | 13705134 | 1132 days ago | IN | 0 ETH | 0.02853057 | ||||
Poke | 13704906 | 1132 days ago | IN | 0 ETH | 0.01099195 | ||||
Poke | 13704906 | 1132 days ago | IN | 0 ETH | 0.02954058 | ||||
Poke | 13704847 | 1132 days ago | IN | 0 ETH | 0.02353518 | ||||
Poke | 13704729 | 1132 days ago | IN | 0 ETH | 0.03044864 | ||||
Poke | 13704276 | 1132 days ago | IN | 0 ETH | 0.01515017 | ||||
Poke | 13704273 | 1132 days ago | IN | 0 ETH | 0.03872733 | ||||
Poke | 13704105 | 1132 days ago | IN | 0 ETH | 0.01754093 | ||||
Poke | 13704030 | 1132 days ago | IN | 0 ETH | 0.01930665 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
P1MirrorOracleETHUSD
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-07 */ /* Copyright 2020 dYdX Trading Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.16; pragma experimental ABIEncoderV2; // File: @openzeppelin/contracts/GSN/Context.sol /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol /** * @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. * * 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. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/external/maker/I_MakerOracle.sol /** * @title I_MakerOracle * @author dYdX * * Interface for the MakerDAO Oracles V2 smart contrats. */ interface I_MakerOracle { // ============ Getter Functions ============ /** * @notice Returns the current value as a bytes32. */ function peek() external view returns (bytes32, bool); /** * @notice Requires a fresh price and then returns the current value. */ function read() external view returns (bytes32); /** * @notice Returns the number of signers per poke. */ function bar() external view returns (uint256); /** * @notice Returns the timetamp of the last update. */ function age() external view returns (uint32); /** * @notice Returns 1 if the signer is authorized, and 0 otherwise. */ function orcl( address signer ) external view returns (uint256); /** * @notice Returns 1 if the address is authorized to read the oracle price, and 0 otherwise. */ function bud( address reader ) external view returns (uint256); /** * @notice A mapping from the first byte of an authorized signer's address to the signer. */ function slot( uint8 signerId ) external view returns (address); // ============ State-Changing Functions ============ /** * @notice Updates the value of the oracle */ function poke( uint256[] calldata val_, uint256[] calldata age_, uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s ) external; /** * @notice Authorize an address to read the oracle price. */ function kiss( address reader ) external; /** * @notice Unauthorize an address so it can no longer read the oracle price. */ function diss( address reader ) external; /** * @notice Authorize addresses to read the oracle price. */ function kiss( address[] calldata readers ) external; /** * @notice Unauthorize addresses so they can no longer read the oracle price. */ function diss( address[] calldata readers ) external; } // File: contracts/protocol/v1/oracles/P1MirrorOracle.sol /** * @title P1MirrorOracle * @author dYdX * * Oracle which mirrors an underlying oracle. */ contract P1MirrorOracle is Ownable, I_MakerOracle { // ============ Events ============ event LogMedianPrice( uint256 val, uint256 age ); event LogSetSigner( address signer, bool authorized ); event LogSetBar( uint256 bar ); event LogSetReader( address reader, bool authorized ); // ============ Mutable Storage ============ // The oracle price. uint128 internal _VAL_; // The timestamp of the last oracle update. uint32 public _AGE_; // The number of signers required to update the oracle price. uint256 public _BAR_; // Authorized signers. Value is equal to 0 or 1. mapping (address => uint256) public _ORCL_; // Addresses with permission to get the oracle price. Value is equal to 0 or 1. mapping (address => uint256) _READERS_; // Mapping for at most 256 signers. // Each signer is identified by the first byte of their address. mapping (uint8 => address) public _SLOT_; // ============ Immutable Storage ============ // The underlying oracle. address public _ORACLE_; // ============ Constructor ============ constructor( address oracle ) public { _ORACLE_ = oracle; } // ============ Getter Functions ============ /** * @notice Returns the current price, and a boolean indicating whether the price is nonzero. */ function peek() external view returns (bytes32, bool) { require( _READERS_[msg.sender] == 1, "P1MirrorOracle#peek: Sender not authorized to get price" ); uint256 val = _VAL_; return (bytes32(val), val > 0); } /** * @notice Requires the price to be nonzero, and returns the current price. */ function read() external view returns (bytes32) { require( _READERS_[msg.sender] == 1, "P1MirrorOracle#read: Sender not authorized to get price" ); uint256 val = _VAL_; require( val > 0, "P1MirrorOracle#read: Price is zero" ); return bytes32(val); } /** * @notice Returns the number of signers per poke. */ function bar() external view returns (uint256) { return _BAR_; } /** * @notice Returns the timetamp of the last update. */ function age() external view returns (uint32) { return _AGE_; } /** * @notice Returns 1 if the signer is authorized, and 0 otherwise. */ function orcl( address signer ) external view returns (uint256) { return _ORCL_[signer]; } /** * @notice Returns 1 if the address is authorized to read the oracle price, and 0 otherwise. */ function bud( address reader ) external view returns (uint256) { return _READERS_[reader]; } /** * @notice A mapping from the first byte of an authorized signer's address to the signer. */ function slot( uint8 signerId ) external view returns (address) { return _SLOT_[signerId]; } /** * @notice Check whether the list of signers and required number of signers match the underlying * oracle. * * @return A bitmap of the IDs of signers that need to be added to the mirror. * @return A bitmap of the IDs of signers that need to be removed from the mirror. * @return False if the required number of signers (“bar”) matches, and true otherwise. */ function checkSynced() external view returns (uint256, uint256, bool) { uint256 signersToAdd = 0; uint256 signersToRemove = 0; bool barNeedsUpdate = _BAR_ != I_MakerOracle(_ORACLE_).bar(); // Note that `i` cannot be a uint8 since it is incremented to 256 at the end of the loop. for (uint256 i = 0; i < 256; i++) { uint8 signerId = uint8(i); uint256 signerBit = uint256(1) << signerId; address ours = _SLOT_[signerId]; address theirs = I_MakerOracle(_ORACLE_).slot(signerId); if (ours == address(0)) { if (theirs != address(0)) { signersToAdd = signersToAdd | signerBit; } } else { if (theirs == address(0)) { signersToRemove = signersToRemove | signerBit; } else if (ours != theirs) { signersToAdd = signersToAdd | signerBit; signersToRemove = signersToRemove | signerBit; } } } return (signersToAdd, signersToRemove, barNeedsUpdate); } // ============ State-Changing Functions ============ /** * @notice Send an array of signed messages to update the oracle value. * Must have exactly `_BAR_` number of messages. */ function poke( uint256[] calldata val_, uint256[] calldata age_, uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s ) external { require(val_.length == _BAR_, "P1MirrorOracle#poke: Wrong number of messages"); // Bitmap of signers, used to ensure that each message has a different signer. uint256 bloom = 0; // Last message value, used to ensure messages are ordered by value. uint256 last = 0; // Require that all messages are newer than the last oracle update. uint256 zzz = _AGE_; for (uint256 i = 0; i < val_.length; i++) { uint256 val_i = val_[i]; uint256 age_i = age_[i]; // Verify that the message comes from an authorized signer. address signer = recover( val_i, age_i, v[i], r[i], s[i] ); require(_ORCL_[signer] == 1, "P1MirrorOracle#poke: Invalid signer"); // Verify that the message is newer than the last oracle update. require(age_i > zzz, "P1MirrorOracle#poke: Stale message"); // Verify that the messages are ordered by value. require(val_i >= last, "P1MirrorOracle#poke: Message out of order"); last = val_i; // Verify that each message has a different signer. // Each signer is identified by the first byte of their address. uint8 signerId = getSignerId(signer); uint256 signerBit = uint256(1) << signerId; require(bloom & signerBit == 0, "P1MirrorOracle#poke: Duplicate signer"); bloom = bloom | signerBit; } // Set the oracle value to the median (note that val_.length is always odd). _VAL_ = uint128(val_[val_.length >> 1]); // Set the timestamp of the oracle update. _AGE_ = uint32(block.timestamp); emit LogMedianPrice(_VAL_, _AGE_); } /** * @notice Authorize new signers. The signers must be authorized on the underlying oracle. */ function lift( address[] calldata signers ) external { for (uint256 i = 0; i < signers.length; i++) { address signer = signers[i]; require( I_MakerOracle(_ORACLE_).orcl(signer) == 1, "P1MirrorOracle#lift: Signer not authorized on underlying oracle" ); // orcl and slot must both be empty. // orcl is filled implies slot is filled, therefore slot is empty implies orcl is empty. // Assume that the underlying oracle ensures that the signer cannot be the zero address. uint8 signerId = getSignerId(signer); require( _SLOT_[signerId] == address(0), "P1MirrorOracle#lift: Signer already authorized" ); _ORCL_[signer] = 1; _SLOT_[signerId] = signer; emit LogSetSigner(signer, true); } } /** * @notice Unauthorize signers. The signers must NOT be authorized on the underlying oracle. */ function drop( address[] calldata signers ) external { for (uint256 i = 0; i < signers.length; i++) { address signer = signers[i]; require( I_MakerOracle(_ORACLE_).orcl(signer) == 0, "P1MirrorOracle#drop: Signer is authorized on underlying oracle" ); // orcl and slot must both be filled. // orcl is filled implies slot is filled. require( _ORCL_[signer] != 0, "P1MirrorOracle#drop: Signer is already not authorized" ); uint8 signerId = getSignerId(signer); _ORCL_[signer] = 0; _SLOT_[signerId] = address(0); emit LogSetSigner(signer, false); } } /** * @notice Sync `_BAR_` (the number of required signers) with the underyling oracle contract. */ function setBar() external { uint256 newBar = I_MakerOracle(_ORACLE_).bar(); _BAR_ = newBar; emit LogSetBar(newBar); } /** * @notice Authorize an address to read the oracle price. */ function kiss( address reader ) external onlyOwner { _kiss(reader); } /** * @notice Unauthorize an address so it can no longer read the oracle price. */ function diss( address reader ) external onlyOwner { _diss(reader); } /** * @notice Authorize addresses to read the oracle price. */ function kiss( address[] calldata readers ) external onlyOwner { for (uint256 i = 0; i < readers.length; i++) { _kiss(readers[i]); } } /** * @notice Unauthorize addresses so they can no longer read the oracle price. */ function diss( address[] calldata readers ) external onlyOwner { for (uint256 i = 0; i < readers.length; i++) { _diss(readers[i]); } } // ============ Internal Functions ============ function wat() internal pure returns (bytes32); function recover( uint256 val_, uint256 age_, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { return ecrecover( keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(val_, age_, wat()))) ), v, r, s ); } function getSignerId( address signer ) internal pure returns (uint8) { return uint8(uint256(signer) >> 152); } function _kiss( address reader ) private { _READERS_[reader] = 1; emit LogSetReader(reader, true); } function _diss( address reader ) private { _READERS_[reader] = 0; emit LogSetReader(reader, false); } } // File: contracts/protocol/v1/oracles/P1MirrorOracleETHUSD.sol /** * @title P1MirrorOracleETHUSD * @author dYdX * * Oracle which mirrors the ETHUSD oracle. */ contract P1MirrorOracleETHUSD is P1MirrorOracle { bytes32 public constant WAT = "ETHUSD"; constructor( address oracle ) P1MirrorOracle(oracle) public { } function wat() internal pure returns (bytes32) { return WAT; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"age","type":"uint256"}],"name":"LogMedianPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bar","type":"uint256"}],"name":"LogSetBar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"reader","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"LogSetReader","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"LogSetSigner","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"},{"constant":true,"inputs":[],"name":"WAT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_AGE_","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_BAR_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_ORACLE_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_ORCL_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"_SLOT_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"age","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkSynced","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"readers","type":"address[]"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"}],"name":"drop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"readers","type":"address[]"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"}],"name":"lift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"orcl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"val_","type":"uint256[]"},{"internalType":"uint256[]","name":"age_","type":"uint256[]"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"read","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setBar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"signerId","type":"uint8"}],"name":"slot","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001faa38038062001faa8339810160408190526200003491620000d2565b8060006200004a6001600160e01b03620000bb16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b03929092169190911790555062000127565b3390565b8051620000cc816200010d565b92915050565b600060208284031215620000e557600080fd5b6000620000f38484620000bf565b949350505050565b60006001600160a01b038216620000cc565b6200011881620000fb565b81146200012457600080fd5b50565b611e7380620001376000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806382bdfc35116100ee5780638f8d10bb11610097578063e2f1028e11610071578063e2f1028e14610338578063f29c29c414610340578063f2fde38b14610353578063febb0f7e14610366576101ae565b80638f8d10bb146102fb578063943181061461030e578063aff85a4b14610321576101ae565b80638da5cb5b116100c85780638da5cb5b146102cb5780638ef5eaf0146102d35780638f32d59b146102e6576101ae565b806382bdfc351461029d57806389bbb8b2146102a55780638d0e5a9a146102b8576101ae565b80634e7d34221161015b57806359e02dd71161013557806359e02dd71461026457806365c4ce7a1461027a578063715018a61461028d57806373a2ab7c14610295576101ae565b80634e7d3422146102415780634fce7a2a1461024957806357de26a41461025c576101ae565b806324a904b51161018c57806324a904b514610211578063262a9dff1461021957806346d4577d1461022e576101ae565b8063020b2e32146101b35780631006b5d7146101dc5780631b25b65f146101fc575b600080fd5b6101c66101c1366004611412565b61036e565b6040516101d39190611c06565b60405180910390f35b6101ef6101ea3660046115b8565b610396565b6040516101d39190611bc8565b61020f61020a366004611456565b6103be565b005b61020f61042c565b610221610512565b6040516101d39190611d7a565b61020f61023c366004611456565b610532565b6101c6610592565b6101c6610257366004611412565b6105b6565b6101c66105de565b61026c610644565b6040516101d3929190611c14565b61020f610288366004611412565b610693565b61020f6106c3565b6101ef610756565b6101c6610772565b61020f6102b3366004611498565b610778565b6101ef6102c63660046115b8565b610a0c565b6101ef610a37565b61020f6102e1366004611456565b610a53565b6102ee610c34565b6040516101d39190611bf8565b6101c6610309366004611412565b610c72565b61020f61031c366004611456565b610c84565b610329610e74565b6040516101d393929190611d52565b6102216110bd565b61020f61034e366004611412565b6110dd565b61020f610361366004611412565b61110a565b6101c6611137565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103c6610c34565b6103eb5760405162461bcd60e51b81526004016103e290611cd7565b60405180910390fd5b60005b818110156104275761041f83838381811061040557fe5b905060200201602061041a9190810190611412565b61113d565b6001016103ee565b505050565b600654604080517ffebb0f7e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163febb0f7e916004808301926020929190829003018186803b15801561049757600080fd5b505afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104cf919081019061159a565b9050806002819055507f48c6ae1362d7627f13b4207e5f5cd2724aaac090cb9602e9e8aefe15eb8f24a6816040516105079190611c06565b60405180910390a150565b600154700100000000000000000000000000000000900463ffffffff1690565b61053a610c34565b6105565760405162461bcd60e51b81526004016103e290611cd7565b60005b818110156104275761058a83838381811061057057fe5b90506020020160206105859190810190611412565b61119a565b600101610559565b7f455448555344000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b3360009081526004602052604081205460011461060d5760405162461bcd60e51b81526004016103e290611d27565b6001546fffffffffffffffffffffffffffffffff168061063f5760405162461bcd60e51b81526004016103e290611c77565b905090565b3360009081526004602052604081205481906001146106755760405162461bcd60e51b81526004016103e290611d17565b50506001546fffffffffffffffffffffffffffffffff168015159091565b61069b610c34565b6106b75760405162461bcd60e51b81526004016103e290611cd7565b6106c08161119a565b50565b6106cb610c34565b6106e75760405162461bcd60e51b81526004016103e290611cd7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60025489146107995760405162461bcd60e51b81526004016103e290611ca7565b6001546000908190700100000000000000000000000000000000900463ffffffff16815b8c8110156109195760008e8e838181106107d357fe5b90506020020135905060008d8d848181106107ea57fe5b905060200201359050600061084683838f8f8881811061080657fe5b905060200201602061081b91908101906115b8565b8e8e8981811061082757fe5b905060200201358d8d8a81811061083a57fe5b905060200201356111f2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915060011461088e5760405162461bcd60e51b81526004016103e290611cc7565b8482116108ad5760405162461bcd60e51b81526004016103e290611c97565b858310156108cd5760405162461bcd60e51b81526004016103e290611c57565b82955060006108db826112a6565b9050600160ff82161b888116156109045760405162461bcd60e51b81526004016103e290611d07565b97909717965050600190920191506107bd9050565b508c8c600181901c81811061092a57fe5b6001805463ffffffff4281167001000000000000000000000000000000009081027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff6020909702989098013586167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416939093179690961691909117918290556040517fb78ebc573f1f889ca9e1e0fb62c843c836f3d3a2e1f43ef62940e9b894f4ea4c956109f59550938316939092041690611d37565b60405180910390a150505050505050505050505050565b60ff1660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005b81811015610427576000838383818110610a6c57fe5b9050602002016020610a819190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610ad8908490600401611bc8565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b28919081019061159a565b15610b455760405162461bcd60e51b81526004016103e290611cf7565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902054610b875760405162461bcd60e51b81526004016103e290611ce7565b6000610b92826112a6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020908152604080832083905560ff84168352600590915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519192507f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610c22918591611bd6565b60405180910390a15050600101610a56565b6000805473ffffffffffffffffffffffffffffffffffffffff16610c566112af565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60036020526000908152604090205481565b60005b81811015610427576000838383818110610c9d57fe5b9050602002016020610cb29190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610d09908490600401611bc8565b60206040518083038186803b158015610d2157600080fd5b505afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d59919081019061159a565b600114610d785760405162461bcd60e51b81526004016103e290611cb7565b6000610d83826112a6565b60ff811660009081526005602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610dcc5760405162461bcd60e51b81526004016103e290611c67565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832060019081905560ff8616845260059092529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016909317909255517f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610e6291859190611bd6565b60405180910390a15050600101610c87565b6000806000806000905060008090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663febb0f7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f25919081019061159a565b6002541415905060005b6101008110156110b05760ff81166000818152600560205260408082205460065491517f8d0e5a9a00000000000000000000000000000000000000000000000000000000815285946001901b9373ffffffffffffffffffffffffffffffffffffffff9283169390921690638d0e5a9a90610fad908790600401611d88565b60206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ffd9190810190611438565b905073ffffffffffffffffffffffffffffffffffffffff82166110405773ffffffffffffffffffffffffffffffffffffffff81161561103b57968217965b6110a0565b73ffffffffffffffffffffffffffffffffffffffff811661106457958217956110a0565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a05796821796958217955b505060019092019150610f2f9050565b5091945092509050909192565b600154700100000000000000000000000000000000900463ffffffff1681565b6110e5610c34565b6111015760405162461bcd60e51b81526004016103e290611cd7565b6106c08161113d565b611112610c34565b61112e5760405162461bcd60e51b81526004016103e290611cd7565b6106c0816112b3565b60025490565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260409081902060019081905590517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040808220829055517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b600060018686611200611373565b60405160200161121293929190611b91565b604051602081830303815290604052805190602001206040516020016112389190611b71565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161126e9493929190611c22565b6020604051602081039080840390855afa158015611290573d6000803e3d6000fd5b5050506020604051035190505b95945050505050565b60981c60ff1690565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166112e65760405162461bcd60e51b81526004016103e290611c87565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f455448555344000000000000000000000000000000000000000000000000000090565b80356113a281611e0a565b92915050565b80516113a281611e0a565b60008083601f8401126113c557600080fd5b50813567ffffffffffffffff8111156113dd57600080fd5b6020830191508360208202830111156113f557600080fd5b9250929050565b80516113a281611e1e565b80356113a281611e27565b60006020828403121561142457600080fd5b60006114308484611397565b949350505050565b60006020828403121561144a57600080fd5b600061143084846113a8565b6000806020838503121561146957600080fd5b823567ffffffffffffffff81111561148057600080fd5b61148c858286016113b3565b92509250509250929050565b60008060008060008060008060008060a08b8d0312156114b757600080fd5b8a3567ffffffffffffffff8111156114ce57600080fd5b6114da8d828e016113b3565b9a509a505060208b013567ffffffffffffffff8111156114f957600080fd5b6115058d828e016113b3565b985098505060408b013567ffffffffffffffff81111561152457600080fd5b6115308d828e016113b3565b965096505060608b013567ffffffffffffffff81111561154f57600080fd5b61155b8d828e016113b3565b945094505060808b013567ffffffffffffffff81111561157a57600080fd5b6115868d828e016113b3565b92509250509295989b9194979a5092959850565b6000602082840312156115ac57600080fd5b600061143084846113fc565b6000602082840312156115ca57600080fd5b60006114308484611407565b6115df81611da4565b82525050565b6115df81611daf565b6115df81611db4565b6115df61160382611db4565b611db4565b6000611615602983611d96565b7f50314d6972726f724f7261636c6523706f6b653a204d657373616765206f757481527f206f66206f726465720000000000000000000000000000000000000000000000602082015260400192915050565b6000611674602e83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e657220616c726581527f61647920617574686f72697a6564000000000000000000000000000000000000602082015260400192915050565b60006116d3602283611d96565b7f50314d6972726f724f7261636c6523726561643a205072696365206973207a6581527f726f000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611732601c83611d9f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061176b602683611d96565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006117ca602283611d96565b7f50314d6972726f724f7261636c6523706f6b653a205374616c65206d6573736181527f6765000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611829602d83611d96565b7f50314d6972726f724f7261636c6523706f6b653a2057726f6e67206e756d626581527f72206f66206d6573736167657300000000000000000000000000000000000000602082015260400192915050565b6000611888603f83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e6572206e6f742081527f617574686f72697a6564206f6e20756e6465726c79696e67206f7261636c6500602082015260400192915050565b60006118e7602383611d96565b7f50314d6972726f724f7261636c6523706f6b653a20496e76616c69642073696781527f6e65720000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611946602083611d96565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061197f603583611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f6c7265616479206e6f7420617574686f72697a65640000000000000000000000602082015260400192915050565b60006119de603e83611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f7574686f72697a6564206f6e20756e6465726c79696e67206f7261636c650000602082015260400192915050565b6000611a3d602583611d96565b7f50314d6972726f724f7261636c6523706f6b653a204475706c6963617465207381527f69676e6572000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a9c603783611d96565b7f50314d6972726f724f7261636c65237065656b3a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6000611afb603783611d96565b7f50314d6972726f724f7261636c6523726561643a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6115df81611df4565b6115df81611dff565b6115df81611de5565b6115df81611dee565b6000611b7c82611725565b9150611b8882846115f7565b50602001919050565b6000611b9d82866115f7565b602082019150611bad82856115f7565b602082019150611bbd82846115f7565b506020019392505050565b602081016113a282846115d6565b60408101611be482856115d6565b611bf160208301846115e5565b9392505050565b602081016113a282846115e5565b602081016113a282846115ee565b60408101611be482856115ee565b60808101611c3082876115ee565b611c3d6020830186611b68565b611c4a60408301856115ee565b61129d60608301846115ee565b602080825281016113a281611608565b602080825281016113a281611667565b602080825281016113a2816116c6565b602080825281016113a28161175e565b602080825281016113a2816117bd565b602080825281016113a28161181c565b602080825281016113a28161187b565b602080825281016113a2816118da565b602080825281016113a281611939565b602080825281016113a281611972565b602080825281016113a2816119d1565b602080825281016113a281611a30565b602080825281016113a281611a8f565b602080825281016113a281611aee565b60408101611d458285611b4d565b611bf16020830184611b56565b60608101611d6082866115ee565b611d6d60208301856115ee565b61143060408301846115e5565b602081016113a28284611b5f565b602081016113a28284611b68565b90815260200190565b919050565b60006113a282611dcc565b151590565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b60006113a282611db7565b60006113a282611de5565b611e1381611da4565b81146106c057600080fd5b611e1381611db4565b611e1381611dee56fea365627a7a72315820ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc6c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806382bdfc35116100ee5780638f8d10bb11610097578063e2f1028e11610071578063e2f1028e14610338578063f29c29c414610340578063f2fde38b14610353578063febb0f7e14610366576101ae565b80638f8d10bb146102fb578063943181061461030e578063aff85a4b14610321576101ae565b80638da5cb5b116100c85780638da5cb5b146102cb5780638ef5eaf0146102d35780638f32d59b146102e6576101ae565b806382bdfc351461029d57806389bbb8b2146102a55780638d0e5a9a146102b8576101ae565b80634e7d34221161015b57806359e02dd71161013557806359e02dd71461026457806365c4ce7a1461027a578063715018a61461028d57806373a2ab7c14610295576101ae565b80634e7d3422146102415780634fce7a2a1461024957806357de26a41461025c576101ae565b806324a904b51161018c57806324a904b514610211578063262a9dff1461021957806346d4577d1461022e576101ae565b8063020b2e32146101b35780631006b5d7146101dc5780631b25b65f146101fc575b600080fd5b6101c66101c1366004611412565b61036e565b6040516101d39190611c06565b60405180910390f35b6101ef6101ea3660046115b8565b610396565b6040516101d39190611bc8565b61020f61020a366004611456565b6103be565b005b61020f61042c565b610221610512565b6040516101d39190611d7a565b61020f61023c366004611456565b610532565b6101c6610592565b6101c6610257366004611412565b6105b6565b6101c66105de565b61026c610644565b6040516101d3929190611c14565b61020f610288366004611412565b610693565b61020f6106c3565b6101ef610756565b6101c6610772565b61020f6102b3366004611498565b610778565b6101ef6102c63660046115b8565b610a0c565b6101ef610a37565b61020f6102e1366004611456565b610a53565b6102ee610c34565b6040516101d39190611bf8565b6101c6610309366004611412565b610c72565b61020f61031c366004611456565b610c84565b610329610e74565b6040516101d393929190611d52565b6102216110bd565b61020f61034e366004611412565b6110dd565b61020f610361366004611412565b61110a565b6101c6611137565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103c6610c34565b6103eb5760405162461bcd60e51b81526004016103e290611cd7565b60405180910390fd5b60005b818110156104275761041f83838381811061040557fe5b905060200201602061041a9190810190611412565b61113d565b6001016103ee565b505050565b600654604080517ffebb0f7e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163febb0f7e916004808301926020929190829003018186803b15801561049757600080fd5b505afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104cf919081019061159a565b9050806002819055507f48c6ae1362d7627f13b4207e5f5cd2724aaac090cb9602e9e8aefe15eb8f24a6816040516105079190611c06565b60405180910390a150565b600154700100000000000000000000000000000000900463ffffffff1690565b61053a610c34565b6105565760405162461bcd60e51b81526004016103e290611cd7565b60005b818110156104275761058a83838381811061057057fe5b90506020020160206105859190810190611412565b61119a565b600101610559565b7f455448555344000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b3360009081526004602052604081205460011461060d5760405162461bcd60e51b81526004016103e290611d27565b6001546fffffffffffffffffffffffffffffffff168061063f5760405162461bcd60e51b81526004016103e290611c77565b905090565b3360009081526004602052604081205481906001146106755760405162461bcd60e51b81526004016103e290611d17565b50506001546fffffffffffffffffffffffffffffffff168015159091565b61069b610c34565b6106b75760405162461bcd60e51b81526004016103e290611cd7565b6106c08161119a565b50565b6106cb610c34565b6106e75760405162461bcd60e51b81526004016103e290611cd7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60025489146107995760405162461bcd60e51b81526004016103e290611ca7565b6001546000908190700100000000000000000000000000000000900463ffffffff16815b8c8110156109195760008e8e838181106107d357fe5b90506020020135905060008d8d848181106107ea57fe5b905060200201359050600061084683838f8f8881811061080657fe5b905060200201602061081b91908101906115b8565b8e8e8981811061082757fe5b905060200201358d8d8a81811061083a57fe5b905060200201356111f2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915060011461088e5760405162461bcd60e51b81526004016103e290611cc7565b8482116108ad5760405162461bcd60e51b81526004016103e290611c97565b858310156108cd5760405162461bcd60e51b81526004016103e290611c57565b82955060006108db826112a6565b9050600160ff82161b888116156109045760405162461bcd60e51b81526004016103e290611d07565b97909717965050600190920191506107bd9050565b508c8c600181901c81811061092a57fe5b6001805463ffffffff4281167001000000000000000000000000000000009081027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff6020909702989098013586167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416939093179690961691909117918290556040517fb78ebc573f1f889ca9e1e0fb62c843c836f3d3a2e1f43ef62940e9b894f4ea4c956109f59550938316939092041690611d37565b60405180910390a150505050505050505050505050565b60ff1660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005b81811015610427576000838383818110610a6c57fe5b9050602002016020610a819190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610ad8908490600401611bc8565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b28919081019061159a565b15610b455760405162461bcd60e51b81526004016103e290611cf7565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902054610b875760405162461bcd60e51b81526004016103e290611ce7565b6000610b92826112a6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020908152604080832083905560ff84168352600590915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519192507f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610c22918591611bd6565b60405180910390a15050600101610a56565b6000805473ffffffffffffffffffffffffffffffffffffffff16610c566112af565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60036020526000908152604090205481565b60005b81811015610427576000838383818110610c9d57fe5b9050602002016020610cb29190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610d09908490600401611bc8565b60206040518083038186803b158015610d2157600080fd5b505afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d59919081019061159a565b600114610d785760405162461bcd60e51b81526004016103e290611cb7565b6000610d83826112a6565b60ff811660009081526005602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610dcc5760405162461bcd60e51b81526004016103e290611c67565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832060019081905560ff8616845260059092529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016909317909255517f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610e6291859190611bd6565b60405180910390a15050600101610c87565b6000806000806000905060008090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663febb0f7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f25919081019061159a565b6002541415905060005b6101008110156110b05760ff81166000818152600560205260408082205460065491517f8d0e5a9a00000000000000000000000000000000000000000000000000000000815285946001901b9373ffffffffffffffffffffffffffffffffffffffff9283169390921690638d0e5a9a90610fad908790600401611d88565b60206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ffd9190810190611438565b905073ffffffffffffffffffffffffffffffffffffffff82166110405773ffffffffffffffffffffffffffffffffffffffff81161561103b57968217965b6110a0565b73ffffffffffffffffffffffffffffffffffffffff811661106457958217956110a0565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a05796821796958217955b505060019092019150610f2f9050565b5091945092509050909192565b600154700100000000000000000000000000000000900463ffffffff1681565b6110e5610c34565b6111015760405162461bcd60e51b81526004016103e290611cd7565b6106c08161113d565b611112610c34565b61112e5760405162461bcd60e51b81526004016103e290611cd7565b6106c0816112b3565b60025490565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260409081902060019081905590517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040808220829055517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b600060018686611200611373565b60405160200161121293929190611b91565b604051602081830303815290604052805190602001206040516020016112389190611b71565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161126e9493929190611c22565b6020604051602081039080840390855afa158015611290573d6000803e3d6000fd5b5050506020604051035190505b95945050505050565b60981c60ff1690565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166112e65760405162461bcd60e51b81526004016103e290611c87565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f455448555344000000000000000000000000000000000000000000000000000090565b80356113a281611e0a565b92915050565b80516113a281611e0a565b60008083601f8401126113c557600080fd5b50813567ffffffffffffffff8111156113dd57600080fd5b6020830191508360208202830111156113f557600080fd5b9250929050565b80516113a281611e1e565b80356113a281611e27565b60006020828403121561142457600080fd5b60006114308484611397565b949350505050565b60006020828403121561144a57600080fd5b600061143084846113a8565b6000806020838503121561146957600080fd5b823567ffffffffffffffff81111561148057600080fd5b61148c858286016113b3565b92509250509250929050565b60008060008060008060008060008060a08b8d0312156114b757600080fd5b8a3567ffffffffffffffff8111156114ce57600080fd5b6114da8d828e016113b3565b9a509a505060208b013567ffffffffffffffff8111156114f957600080fd5b6115058d828e016113b3565b985098505060408b013567ffffffffffffffff81111561152457600080fd5b6115308d828e016113b3565b965096505060608b013567ffffffffffffffff81111561154f57600080fd5b61155b8d828e016113b3565b945094505060808b013567ffffffffffffffff81111561157a57600080fd5b6115868d828e016113b3565b92509250509295989b9194979a5092959850565b6000602082840312156115ac57600080fd5b600061143084846113fc565b6000602082840312156115ca57600080fd5b60006114308484611407565b6115df81611da4565b82525050565b6115df81611daf565b6115df81611db4565b6115df61160382611db4565b611db4565b6000611615602983611d96565b7f50314d6972726f724f7261636c6523706f6b653a204d657373616765206f757481527f206f66206f726465720000000000000000000000000000000000000000000000602082015260400192915050565b6000611674602e83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e657220616c726581527f61647920617574686f72697a6564000000000000000000000000000000000000602082015260400192915050565b60006116d3602283611d96565b7f50314d6972726f724f7261636c6523726561643a205072696365206973207a6581527f726f000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611732601c83611d9f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061176b602683611d96565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006117ca602283611d96565b7f50314d6972726f724f7261636c6523706f6b653a205374616c65206d6573736181527f6765000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611829602d83611d96565b7f50314d6972726f724f7261636c6523706f6b653a2057726f6e67206e756d626581527f72206f66206d6573736167657300000000000000000000000000000000000000602082015260400192915050565b6000611888603f83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e6572206e6f742081527f617574686f72697a6564206f6e20756e6465726c79696e67206f7261636c6500602082015260400192915050565b60006118e7602383611d96565b7f50314d6972726f724f7261636c6523706f6b653a20496e76616c69642073696781527f6e65720000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611946602083611d96565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061197f603583611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f6c7265616479206e6f7420617574686f72697a65640000000000000000000000602082015260400192915050565b60006119de603e83611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f7574686f72697a6564206f6e20756e6465726c79696e67206f7261636c650000602082015260400192915050565b6000611a3d602583611d96565b7f50314d6972726f724f7261636c6523706f6b653a204475706c6963617465207381527f69676e6572000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a9c603783611d96565b7f50314d6972726f724f7261636c65237065656b3a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6000611afb603783611d96565b7f50314d6972726f724f7261636c6523726561643a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6115df81611df4565b6115df81611dff565b6115df81611de5565b6115df81611dee565b6000611b7c82611725565b9150611b8882846115f7565b50602001919050565b6000611b9d82866115f7565b602082019150611bad82856115f7565b602082019150611bbd82846115f7565b506020019392505050565b602081016113a282846115d6565b60408101611be482856115d6565b611bf160208301846115e5565b9392505050565b602081016113a282846115e5565b602081016113a282846115ee565b60408101611be482856115ee565b60808101611c3082876115ee565b611c3d6020830186611b68565b611c4a60408301856115ee565b61129d60608301846115ee565b602080825281016113a281611608565b602080825281016113a281611667565b602080825281016113a2816116c6565b602080825281016113a28161175e565b602080825281016113a2816117bd565b602080825281016113a28161181c565b602080825281016113a28161187b565b602080825281016113a2816118da565b602080825281016113a281611939565b602080825281016113a281611972565b602080825281016113a2816119d1565b602080825281016113a281611a30565b602080825281016113a281611a8f565b602080825281016113a281611aee565b60408101611d458285611b4d565b611bf16020830184611b56565b60608101611d6082866115ee565b611d6d60208301856115ee565b61143060408301846115e5565b602081016113a28284611b5f565b602081016113a28284611b68565b90815260200190565b919050565b60006113a282611dcc565b151590565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b60006113a282611db7565b60006113a282611de5565b611e1381611da4565b81146106c057600080fd5b611e1381611db4565b611e1381611dee56fea365627a7a72315820ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc6c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85
-----Decoded View---------------
Arg [0] : oracle (address): 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85
Deployed Bytecode Sourcemap
19171:332:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19171:332:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9896:150;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8116:40;;;;;;;;;:::i;:::-;;;;;;;;17364:207;;;;;;;;;:::i;:::-;;16675:164;;;:::i;9689:109::-;;;:::i;:::-;;;;;;;;17680:207;;;;;;;;;:::i;19232:38::-;;;:::i;10170:152::-;;;;;;;;;:::i;9022:392::-;;;:::i;8608:307::-;;;:::i;:::-;;;;;;;;;17156:120;;;;;;;;;:::i;3592:140::-;;;:::i;8250:23::-;;;:::i;7739:20::-;;;:::i;12437:2091::-;;;;;;;;;:::i;10443:152::-;;;;;;;;;:::i;2781:79::-;;;:::i;15736:814::-;;;;;;;;;:::i;3147:94::-;;;:::i;:::-;;;;;;;;7822:42;;;;;;;;;:::i;14650:962::-;;;;;;;;;:::i;11017:1201::-;;;:::i;:::-;;;;;;;;;;7644:19;;;:::i;16928:120::-;;;;;;;;;:::i;3887:109::-;;;;;;;;;:::i;9496:110::-;;;:::i;9896:150::-;10024:14;;9992:7;10024:14;;;:6;:14;;;;;;;9896:150::o;8116:40::-;;;;;;;;;;;;;;;:::o;17364:207::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;;;;;;;;;17480:9;17475:89;17495:18;;;17475:89;;;17535:17;17541:7;;17549:1;17541:10;;;;;;;;;;;;;;;;;;;;;;17535:5;:17::i;:::-;17515:3;;17475:89;;;;17364:207;;:::o;16675:164::-;16758:8;;16744:29;;;;;;;;16727:14;;16758:8;;;16744:27;;:29;;;;;;;;;;;;;;16758:8;16744:29;;;5:2:-1;;;;30:1;27;20:12;5:2;16744:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16744:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16744:29:0;;;;;;;;;16727:46;;16792:6;16784:5;:14;;;;16814:17;16824:6;16814:17;;;;;;;;;;;;;;;16675:164;:::o;9689:109::-;9785:5;;;;;;;;9689:109::o;17680:207::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17796:9;17791:89;17811:18;;;17791:89;;;17851:17;17857:7;;17865:1;17857:10;;;;;;;;;;;;;;;;;;;;;;17851:5;:17::i;:::-;17831:3;;17791:89;;19232:38;;;:::o;10170:152::-;10297:17;;10265:7;10297:17;;;:9;:17;;;;;;;10170:152::o;9022:392::-;9145:10;9088:7;9135:21;;;:9;:21;;;;;;9160:1;9135:26;9113:131;;;;-1:-1:-1;;;9113:131:0;;;;;;;;;9269:5;;;;9307:7;9285:91;;;;-1:-1:-1;;;9285:91:0;;;;;;;;;9402:3;-1:-1:-1;9022:392:0;:::o;8608:307::-;8737:10;8674:7;8727:21;;;:9;:21;;;;;;8674:7;;8752:1;8727:26;8705:131;;;;-1:-1:-1;;;8705:131:0;;;;;;;;;-1:-1:-1;;8861:5:0;;;;8899:7;;;8608:307;;:::o;17156:120::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17255:13;17261:6;17255:5;:13::i;:::-;17156:120;:::o;3592:140::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;3691:1;3675:6;;3654:40;;;3675:6;;;;3654:40;;3691:1;;3654:40;3722:1;3705:19;;;;;;3592:140::o;8250:23::-;;;;;;:::o;7739:20::-;;;;:::o;12437:2091::-;12674:5;;12659:20;;12651:78;;;;-1:-1:-1;;;12651:78:0;;;;;;;;;13058:5;;12830:13;;;;13058:5;;;;;12830:13;13076:1165;13096:15;;;13076:1165;;;13133:13;13149:4;;13154:1;13149:7;;;;;;;;;;;;;13133:23;;13171:13;13187:4;;13192:1;13187:7;;;;;;;;;;;;;13171:23;;13284:14;13301:139;13327:5;13351;13375:1;;13377;13375:4;;;;;;;;;;;;;;;;;;;;;;13398:1;;13400;13398:4;;;;;;;;;;;;;13421:1;;13423;13421:4;;;;;;;;;;;;;13301:7;:139::i;:::-;13463:14;;;;;;;:6;:14;;;;;;13284:156;;-1:-1:-1;13481:1:0;13463:19;13455:67;;;;-1:-1:-1;;;13455:67:0;;;;;;;;;13633:3;13625:5;:11;13617:58;;;;-1:-1:-1;;;13617:58:0;;;;;;;;;13772:4;13763:5;:13;;13755:67;;;;-1:-1:-1;;;13755:67:0;;;;;;;;;13844:5;13837:12;;14009:14;14026:19;14038:6;14026:11;:19::i;:::-;14009:36;-1:-1:-1;14088:1:0;14080:22;;;;14125:17;;;:22;14117:72;;;;-1:-1:-1;;;14117:72:0;;;;;;;;;14212:17;;;;;-1:-1:-1;;13113:3:0;;;;;-1:-1:-1;13076:1165:0;;-1:-1:-1;13076:1165:0;;-1:-1:-1;14355:4:0;;14375:1;14360:16;;;14355:22;;;;;;;14339:5;:39;;14443:31;14458:15;14443:31;;;;;;;14339:39;14355:22;;;;;;;;;14339:39;;;;;;;;;;14443:31;;;;;;;;;;;;14492:28;;;;;;-1:-1:-1;14507:5:0;;;;14514;;;;;14492:28;;;;;;;;;;12437:2091;;;;;;;;;;;;;:::o;10443:152::-;10571:16;;10539:7;10571:16;;;:6;:16;;;;;;;;;10443:152::o;2781:79::-;2819:7;2846:6;;;2781:79;:::o;15736:814::-;15833:9;15828:715;15848:18;;;15828:715;;;15888:14;15905:7;;15913:1;15905:10;;;;;;;;;;;;;;;;;;;;;;15970:8;;15956:36;;;;;15888:27;;-1:-1:-1;15970:8:0;;;15956:28;;:36;;15888:27;;15956:36;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15956:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15956:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15956:36:0;;;;;;;;;:41;15930:165;;;;-1:-1:-1;;;15930:165:0;;;;;;;;;16244:14;;;;;;;:6;:14;;;;;;16218:134;;;;-1:-1:-1;;;16218:134:0;;;;;;;;;16369:14;16386:19;16398:6;16386:11;:19::i;:::-;16420:14;;;16437:1;16420:14;;;:6;:14;;;;;;;;:18;;;16453:16;;;;;:6;:16;;;;;;:29;;;;;;16504:27;16369:36;;-1:-1:-1;16504:27:0;;;;16427:6;;16504:27;;;;;;;;;;-1:-1:-1;;15868:3:0;;15828:715;;3147:94;3187:4;3227:6;;;;3211:12;:10;:12::i;:::-;:22;;;3204:29;;3147:94;:::o;7822:42::-;;;;;;;;;;;;;:::o;14650:962::-;14747:9;14742:863;14762:18;;;14742:863;;;14802:14;14819:7;;14827:1;14819:10;;;;;;;;;;;;;;;;;;;;;;14884:8;;14870:36;;;;;14802:27;;-1:-1:-1;14884:8:0;;;14870:28;;:36;;14802:27;;14870:36;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14870:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14870:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14870:36:0;;;;;;;;;14910:1;14870:41;14844:166;;;;-1:-1:-1;;;14844:166:0;;;;;;;;;15281:14;15298:19;15310:6;15298:11;:19::i;:::-;15358:16;;;15386:1;15358:16;;;:6;:16;;;;;;15281:36;;-1:-1:-1;15358:30:0;:16;:30;15332:138;;;;-1:-1:-1;;;15332:138:0;;;;;;;;;15487:14;;;;;;;:6;:14;;;;;;;;15504:1;15487:18;;;;15520:16;;;;;:6;:16;;;;;;;:25;;;;;;;;;;15567:26;;;;;15494:6;;15504:1;15567:26;;;;;;;;;;-1:-1:-1;;14782:3:0;;14742:863;;11017:1201;11090:7;11099;11108:4;11130:20;11153:1;11130:24;;11165:23;11191:1;11165:27;;11203:19;11248:8;;;;;;;;;;;11234:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11234:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11234:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11234:29:0;;;;;;;;;11225:5;;:38;;;-1:-1:-1;11380:9:0;11375:769;11399:3;11395:1;:7;11375:769;;;11484:22;;;11424:14;11536:16;;;:6;:16;;;;;;;11598:8;;11584:38;;;;;11447:1;;11492;11484:22;;;11536:16;;;;;11424:14;;11598:8;;11584:28;;:38;;11447:1;;11584:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11584:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11584:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11584:38:0;;;;;;;;;11567:55;-1:-1:-1;11641:18:0;;;11637:496;;11684:20;;;;11680:108;;11744:24;;;;11680:108;11637:496;;;11832:20;;;11828:290;;11895:27;;;;11828:290;;;11960:6;11952:14;;:4;:14;;;11948:170;;12006:24;;;;12071:27;;;;11948:170;-1:-1:-1;;11404:3:0;;;;;-1:-1:-1;11375:769:0;;-1:-1:-1;11375:769:0;;-1:-1:-1;12164:12:0;;-1:-1:-1;12178:15:0;-1:-1:-1;12195:14:0;-1:-1:-1;11017:1201:0;;;:::o;7644:19::-;;;;;;;;;:::o;16928:120::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17027:13;17033:6;17027:5;:13::i;3887:109::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;3960:28;3979:8;3960:18;:28::i;9496:110::-;9593:5;;9496:110;:::o;18679:151::-;18759:17;;;;;;;:9;:17;;;;;;;18779:1;18759:21;;;;18796:26;;;;;;18769:6;;18779:1;18796:26;;18838:152;18918:17;;;18938:1;18918:17;;;:9;:17;;;;;;:21;;;18955:27;;;;;18928:6;;18938:1;18955:27;;18032:461;18210:7;18242:243;18391:4;18397;18403:5;:3;:5::i;:::-;18374:35;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18374:35:0;;;18364:46;;;;;;18294:117;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18294:117:0;;;18266:160;;;;;;18441:1;18457;18473;18242:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18242:243:0;;;;;;;;18235:250;;18032:461;;;;;;;;:::o;18501:170::-;18659:3;18640:22;;;;18501:170::o;1514:98::-;1594:10;1514:98;:::o;4102:229::-;4176:22;;;4168:73;;;;-1:-1:-1;;;4168:73:0;;;;;;;;;4278:6;;;4257:38;;;;;;;4278:6;;;4257:38;;;4306:6;:17;;;;;;;;;;;;;;;4102:229::o;19392:108::-;19489:3;19392:108;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1791:134;1869:13;;1887:33;1869:13;1887:33;;1932:126;1997:20;;2022:31;1997:20;2022:31;;2065:241;;2169:2;2157:9;2148:7;2144:23;2140:32;2137:2;;;2185:1;2182;2175:12;2137:2;2220:1;2237:53;2282:7;2262:9;2237:53;;;2227:63;2131:175;-1:-1;;;;2131:175;2313:263;;2428:2;2416:9;2407:7;2403:23;2399:32;2396:2;;;2444:1;2441;2434:12;2396:2;2479:1;2496:64;2552:7;2532:9;2496:64;;2583:397;;;2722:2;2710:9;2701:7;2697:23;2693:32;2690:2;;;2738:1;2735;2728:12;2690:2;2773:31;;2824:18;2813:30;;2810:2;;;2856:1;2853;2846:12;2810:2;2884:80;2956:7;2947:6;2936:9;2932:22;2884:80;;;2874:90;;;;2752:218;2684:296;;;;;;2987:1519;;;;;;;;;;;3332:3;3320:9;3311:7;3307:23;3303:33;3300:2;;;3349:1;3346;3339:12;3300:2;3384:31;;3435:18;3424:30;;3421:2;;;3467:1;3464;3457:12;3421:2;3495:80;3567:7;3558:6;3547:9;3543:22;3495:80;;;3485:90;;;;3363:218;3640:2;3629:9;3625:18;3612:32;3664:18;3656:6;3653:30;3650:2;;;3696:1;3693;3686:12;3650:2;3724:80;3796:7;3787:6;3776:9;3772:22;3724:80;;;3714:90;;;;3591:219;3869:2;3858:9;3854:18;3841:32;3893:18;3885:6;3882:30;3879:2;;;3925:1;3922;3915:12;3879:2;3953:78;4023:7;4014:6;4003:9;3999:22;3953:78;;;3943:88;;;;3820:217;4096:2;4085:9;4081:18;4068:32;4120:18;4112:6;4109:30;4106:2;;;4152:1;4149;4142:12;4106:2;4180:80;4252:7;4243:6;4232:9;4228:22;4180:80;;;4170:90;;;;4047:219;4325:3;4314:9;4310:19;4297:33;4350:18;4342:6;4339:30;4336:2;;;4382:1;4379;4372:12;4336:2;4410:80;4482:7;4473:6;4462:9;4458:22;4410:80;;;4400:90;;;;4276:220;3294:1212;;;;;;;;;;;;;;4513:263;;4628:2;4616:9;4607:7;4603:23;4599:32;4596:2;;;4644:1;4641;4634:12;4596:2;4679:1;4696:64;4752:7;4732:9;4696:64;;4783:237;;4885:2;4873:9;4864:7;4860:23;4856:32;4853:2;;;4901:1;4898;4891:12;4853:2;4936:1;4953:51;4996:7;4976:9;4953:51;;5027:113;5110:24;5128:5;5110:24;;;5105:3;5098:37;5092:48;;;5147:104;5224:21;5239:5;5224:21;;5258:113;5341:24;5359:5;5341:24;;5378:152;5479:45;5499:24;5517:5;5499:24;;;5479:45;;5538:378;;5698:67;5762:2;5757:3;5698:67;;;5798:34;5778:55;;5867:11;5862:2;5853:12;;5846:33;5907:2;5898:12;;5684:232;-1:-1;;5684:232;5925:383;;6085:67;6149:2;6144:3;6085:67;;;6185:34;6165:55;;6254:16;6249:2;6240:12;;6233:38;6299:2;6290:12;;6071:237;-1:-1;;6071:237;6317:371;;6477:67;6541:2;6536:3;6477:67;;;6577:34;6557:55;;6646:4;6641:2;6632:12;;6625:26;6679:2;6670:12;;6463:225;-1:-1;;6463:225;6697:400;;6875:85;6957:2;6952:3;6875:85;;;6993:66;6973:87;;7088:2;7079:12;;6861:236;-1:-1;;6861:236;7106:375;;7266:67;7330:2;7325:3;7266:67;;;7366:34;7346:55;;7435:8;7430:2;7421:12;;7414:30;7472:2;7463:12;;7252:229;-1:-1;;7252:229;7490:371;;7650:67;7714:2;7709:3;7650:67;;;7750:34;7730:55;;7819:4;7814:2;7805:12;;7798:26;7852:2;7843:12;;7636:225;-1:-1;;7636:225;7870:382;;8030:67;8094:2;8089:3;8030:67;;;8130:34;8110:55;;8199:15;8194:2;8185:12;;8178:37;8243:2;8234:12;;8016:236;-1:-1;;8016:236;8261:400;;8421:67;8485:2;8480:3;8421:67;;;8521:34;8501:55;;8590:33;8585:2;8576:12;;8569:55;8652:2;8643:12;;8407:254;-1:-1;;8407:254;8670:372;;8830:67;8894:2;8889:3;8830:67;;;8930:34;8910:55;;8999:5;8994:2;8985:12;;8978:27;9033:2;9024:12;;8816:226;-1:-1;;8816:226;9051:332;;9211:67;9275:2;9270:3;9211:67;;;9311:34;9291:55;;9374:2;9365:12;;9197:186;-1:-1;;9197:186;9392:390;;9552:67;9616:2;9611:3;9552:67;;;9652:34;9632:55;;9721:23;9716:2;9707:12;;9700:45;9773:2;9764:12;;9538:244;-1:-1;;9538:244;9791:399;;9951:67;10015:2;10010:3;9951:67;;;10051:34;10031:55;;10120:32;10115:2;10106:12;;10099:54;10181:2;10172:12;;9937:253;-1:-1;;9937:253;10199:374;;10359:67;10423:2;10418:3;10359:67;;;10459:34;10439:55;;10528:7;10523:2;10514:12;;10507:29;10564:2;10555:12;;10345:228;-1:-1;;10345:228;10582:392;;10742:67;10806:2;10801:3;10742:67;;;10842:34;10822:55;;10911:25;10906:2;10897:12;;10890:47;10965:2;10956:12;;10728:246;-1:-1;;10728:246;10983:392;;11143:67;11207:2;11202:3;11143:67;;;11243:34;11223:55;;11312:25;11307:2;11298:12;;11291:47;11366:2;11357:12;;11129:246;-1:-1;;11129:246;11383:126;11466:37;11497:5;11466:37;;11795:124;11877:36;11907:5;11877:36;;11926:110;12007:23;12024:5;12007:23;;12043:107;12122:22;12138:5;12122:22;;12157:511;;12384:148;12528:3;12384:148;;;12377:155;;12543:75;12614:3;12605:6;12543:75;;;-1:-1;12640:2;12631:12;;12365:303;-1:-1;12365:303;12675:522;;12850:75;12921:3;12912:6;12850:75;;;12947:2;12942:3;12938:12;12931:19;;12961:75;13032:3;13023:6;12961:75;;;13058:2;13053:3;13049:12;13042:19;;13072:75;13143:3;13134:6;13072:75;;;-1:-1;13169:2;13160:12;;12838:359;-1:-1;;;12838:359;13204:213;13322:2;13307:18;;13336:71;13311:9;13380:6;13336:71;;13424:312;13564:2;13549:18;;13578:71;13553:9;13622:6;13578:71;;;13660:66;13722:2;13711:9;13707:18;13698:6;13660:66;;;13535:201;;;;;;13743;13855:2;13840:18;;13869:65;13844:9;13907:6;13869:65;;13951:213;14069:2;14054:18;;14083:71;14058:9;14127:6;14083:71;;14171:312;14311:2;14296:18;;14325:71;14300:9;14369:6;14325:71;;14490:539;14688:3;14673:19;;14703:71;14677:9;14747:6;14703:71;;;14785:68;14849:2;14838:9;14834:18;14825:6;14785:68;;;14864:72;14932:2;14921:9;14917:18;14908:6;14864:72;;;14947;15015:2;15004:9;15000:18;14991:6;14947:72;;15036:407;15227:2;15241:47;;;15212:18;;15302:131;15212:18;15302:131;;15450:407;15641:2;15655:47;;;15626:18;;15716:131;15626:18;15716:131;;15864:407;16055:2;16069:47;;;16040:18;;16130:131;16040:18;16130:131;;16278:407;16469:2;16483:47;;;16454:18;;16544:131;16454:18;16544:131;;16692:407;16883:2;16897:47;;;16868:18;;16958:131;16868:18;16958:131;;17106:407;17297:2;17311:47;;;17282:18;;17372:131;17282:18;17372:131;;17520:407;17711:2;17725:47;;;17696:18;;17786:131;17696:18;17786:131;;17934:407;18125:2;18139:47;;;18110:18;;18200:131;18110:18;18200:131;;18348:407;18539:2;18553:47;;;18524:18;;18614:131;18524:18;18614:131;;18762:407;18953:2;18967:47;;;18938:18;;19028:131;18938:18;19028:131;;19176:407;19367:2;19381:47;;;19352:18;;19442:131;19352:18;19442:131;;19590:407;19781:2;19795:47;;;19766:18;;19856:131;19766:18;19856:131;;20004:407;20195:2;20209:47;;;20180:18;;20270:131;20180:18;20270:131;;20418:407;20609:2;20623:47;;;20594:18;;20684:131;20594:18;20684:131;;20832:322;20977:2;20962:18;;20991:71;20966:9;21035:6;20991:71;;;21073;21140:2;21129:9;21125:18;21116:6;21073:71;;21381:423;21549:2;21534:18;;21563:71;21538:9;21607:6;21563:71;;;21645:72;21713:2;21702:9;21698:18;21689:6;21645:72;;;21728:66;21790:2;21779:9;21775:18;21766:6;21728:66;;21811:209;21927:2;21912:18;;21941:69;21916:9;21983:6;21941:69;;22027:205;22141:2;22126:18;;22155:67;22130:9;22195:6;22155:67;;22240:163;22343:19;;;22392:4;22383:14;;22336:67;22412:145;22548:3;22526:31;-1:-1;22526:31;22565:91;;22627:24;22645:5;22627:24;;22663:85;22729:13;22722:21;;22705:43;22755:72;22817:5;22800:27;22834:113;22907:34;22896:46;;22879:68;22954:121;23027:42;23016:54;;22999:76;23161:88;23233:10;23222:22;;23205:44;23256:81;23327:4;23316:16;;23299:38;23344:108;;23423:24;23441:5;23423:24;;23459:106;;23537:23;23554:5;23537:23;;23734:117;23803:24;23821:5;23803:24;;;23796:5;23793:35;23783:2;;23842:1;23839;23832:12;23858:117;23927:24;23945:5;23927:24;;23982:113;24049:22;24065:5;24049:22;
Swarm Source
bzzr://ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.