Latest 25 from a total of 8,219 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Pause | 21379661 | 329 days ago | IN | 0 ETH | 0.00070673 | ||||
| Delist Token | 21246850 | 348 days ago | IN | 0 ETH | 0.00049463 | ||||
| Disable Auction | 21071516 | 372 days ago | IN | 0 ETH | 0.00126815 | ||||
| Disable Auction | 21071513 | 372 days ago | IN | 0 ETH | 0.00129015 | ||||
| Disable Auction | 21071509 | 372 days ago | IN | 0 ETH | 0.00134243 | ||||
| Disable Auction | 21071506 | 372 days ago | IN | 0 ETH | 0.00131586 | ||||
| Disable Auction | 21071504 | 372 days ago | IN | 0 ETH | 0.00138924 | ||||
| Disable Auction | 21071499 | 372 days ago | IN | 0 ETH | 0.00116586 | ||||
| Disable Auction | 21071497 | 372 days ago | IN | 0 ETH | 0.00125279 | ||||
| Disable Auction | 21071495 | 372 days ago | IN | 0 ETH | 0.00130786 | ||||
| Disable Auction | 21071493 | 372 days ago | IN | 0 ETH | 0.00131574 | ||||
| Disable Auction | 21071491 | 372 days ago | IN | 0 ETH | 0.00131295 | ||||
| Disable Auction | 21071487 | 372 days ago | IN | 0 ETH | 0.00143383 | ||||
| Disable Auction | 21071484 | 372 days ago | IN | 0 ETH | 0.00147288 | ||||
| Disable Auction | 21071482 | 372 days ago | IN | 0 ETH | 0.00140849 | ||||
| Disable Auction | 21071480 | 372 days ago | IN | 0 ETH | 0.00156153 | ||||
| Disable Auction | 21071477 | 372 days ago | IN | 0 ETH | 0.00153942 | ||||
| Disable Auction | 21071472 | 372 days ago | IN | 0 ETH | 0.00159512 | ||||
| Disable Auction | 21071186 | 372 days ago | IN | 0 ETH | 0.00058673 | ||||
| Disable Auction | 21071145 | 372 days ago | IN | 0 ETH | 0.00053207 | ||||
| Disable Auction | 21071139 | 372 days ago | IN | 0 ETH | 0.00053951 | ||||
| Disable Auction | 21071135 | 372 days ago | IN | 0 ETH | 0.00048847 | ||||
| Disable Auction | 21071133 | 372 days ago | IN | 0 ETH | 0.00053832 | ||||
| Disable Auction | 21071130 | 372 days ago | IN | 0 ETH | 0.00052448 | ||||
| Disable Auction | 21071128 | 372 days ago | IN | 0 ETH | 0.00053234 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 21071516 | 372 days ago | 0.03 ETH | ||||
| Transfer | 21071513 | 372 days ago | 0.03 ETH | ||||
| Transfer | 21071509 | 372 days ago | 0.04 ETH | ||||
| Transfer | 21071506 | 372 days ago | 0.04 ETH | ||||
| Transfer | 21071504 | 372 days ago | 0.05 ETH | ||||
| Transfer | 21071499 | 372 days ago | 0.05 ETH | ||||
| Transfer | 21071497 | 372 days ago | 0.066 ETH | ||||
| Transfer | 21071495 | 372 days ago | 0.07 ETH | ||||
| Transfer | 21071493 | 372 days ago | 0.08 ETH | ||||
| Transfer | 21071491 | 372 days ago | 0.085 ETH | ||||
| Transfer | 21071487 | 372 days ago | 0.08 ETH | ||||
| Transfer | 21071484 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071482 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071480 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071477 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071472 | 372 days ago | 0.8 ETH | ||||
| Transfer | 21071186 | 372 days ago | 0.13 ETH | ||||
| Transfer | 21071145 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071139 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071135 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071133 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071130 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071128 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071121 | 372 days ago | 0.1 ETH | ||||
| Transfer | 21071118 | 372 days ago | 0.1 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TokenMarketplaceV2
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-15
*/
// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
pragma solidity ^0.4.24;
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipRenounced(address indexed previousOwner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to relinquish control of the contract.
* @notice Renouncing to ownership will leave the contract without an owner.
* It will not be possible to call the functions with the `onlyOwner`
* modifier anymore.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function transferOwnership(address _newOwner) public onlyOwner {
_transferOwnership(_newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
}
// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol
pragma solidity ^0.4.24;
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() public onlyOwner whenNotPaused {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() public onlyOwner whenPaused {
paused = false;
emit Unpause();
}
}
// File: openzeppelin-solidity/contracts/access/rbac/Roles.sol
pragma solidity ^0.4.24;
/**
* @title Roles
* @author Francisco Giordano (@frangio)
* @dev Library for managing addresses assigned to a Role.
* See RBAC.sol for example usage.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
/**
* @dev give an address access to this role
*/
function add(Role storage _role, address _addr)
internal
{
_role.bearer[_addr] = true;
}
/**
* @dev remove an address' access to this role
*/
function remove(Role storage _role, address _addr)
internal
{
_role.bearer[_addr] = false;
}
/**
* @dev check if an address has this role
* // reverts
*/
function check(Role storage _role, address _addr)
internal
view
{
require(has(_role, _addr));
}
/**
* @dev check if an address has this role
* @return bool
*/
function has(Role storage _role, address _addr)
internal
view
returns (bool)
{
return _role.bearer[_addr];
}
}
// File: openzeppelin-solidity/contracts/access/rbac/RBAC.sol
pragma solidity ^0.4.24;
/**
* @title RBAC (Role-Based Access Control)
* @author Matt Condon (@Shrugs)
* @dev Stores and provides setters and getters for roles and addresses.
* Supports unlimited numbers of roles and addresses.
* See //contracts/mocks/RBACMock.sol for an example of usage.
* This RBAC method uses strings to key roles. It may be beneficial
* for you to write your own implementation of this interface using Enums or similar.
*/
contract RBAC {
using Roles for Roles.Role;
mapping (string => Roles.Role) private roles;
event RoleAdded(address indexed operator, string role);
event RoleRemoved(address indexed operator, string role);
/**
* @dev reverts if addr does not have role
* @param _operator address
* @param _role the name of the role
* // reverts
*/
function checkRole(address _operator, string _role)
public
view
{
roles[_role].check(_operator);
}
/**
* @dev determine if addr has role
* @param _operator address
* @param _role the name of the role
* @return bool
*/
function hasRole(address _operator, string _role)
public
view
returns (bool)
{
return roles[_role].has(_operator);
}
/**
* @dev add a role to an address
* @param _operator address
* @param _role the name of the role
*/
function addRole(address _operator, string _role)
internal
{
roles[_role].add(_operator);
emit RoleAdded(_operator, _role);
}
/**
* @dev remove a role from an address
* @param _operator address
* @param _role the name of the role
*/
function removeRole(address _operator, string _role)
internal
{
roles[_role].remove(_operator);
emit RoleRemoved(_operator, _role);
}
/**
* @dev modifier to scope access to a single role (uses msg.sender as addr)
* @param _role the name of the role
* // reverts
*/
modifier onlyRole(string _role)
{
checkRole(msg.sender, _role);
_;
}
/**
* @dev modifier to scope access to a set of roles (uses msg.sender as addr)
* @param _roles the names of the roles to scope access to
* // reverts
*
* @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this
* see: https://github.com/ethereum/solidity/issues/2467
*/
// modifier onlyRoles(string[] _roles) {
// bool hasAnyRole = false;
// for (uint8 i = 0; i < _roles.length; i++) {
// if (hasRole(msg.sender, _roles[i])) {
// hasAnyRole = true;
// break;
// }
// }
// require(hasAnyRole);
// _;
// }
}
// File: openzeppelin-solidity/contracts/access/Whitelist.sol
pragma solidity ^0.4.24;
/**
* @title Whitelist
* @dev The Whitelist contract has a whitelist of addresses, and provides basic authorization control functions.
* This simplifies the implementation of "user permissions".
*/
contract Whitelist is Ownable, RBAC {
string public constant ROLE_WHITELISTED = "whitelist";
/**
* @dev Throws if operator is not whitelisted.
* @param _operator address
*/
modifier onlyIfWhitelisted(address _operator) {
checkRole(_operator, ROLE_WHITELISTED);
_;
}
/**
* @dev add an address to the whitelist
* @param _operator address
* @return true if the address was added to the whitelist, false if the address was already in the whitelist
*/
function addAddressToWhitelist(address _operator)
public
onlyOwner
{
addRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev getter to determine if address is in whitelist
*/
function whitelist(address _operator)
public
view
returns (bool)
{
return hasRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev add addresses to the whitelist
* @param _operators addresses
* @return true if at least one address was added to the whitelist,
* false if all addresses were already in the whitelist
*/
function addAddressesToWhitelist(address[] _operators)
public
onlyOwner
{
for (uint256 i = 0; i < _operators.length; i++) {
addAddressToWhitelist(_operators[i]);
}
}
/**
* @dev remove an address from the whitelist
* @param _operator address
* @return true if the address was removed from the whitelist,
* false if the address wasn't in the whitelist in the first place
*/
function removeAddressFromWhitelist(address _operator)
public
onlyOwner
{
removeRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev remove addresses from the whitelist
* @param _operators addresses
* @return true if at least one address was removed from the whitelist,
* false if all addresses weren't in the whitelist in the first place
*/
function removeAddressesFromWhitelist(address[] _operators)
public
onlyOwner
{
for (uint256 i = 0; i < _operators.length; i++) {
removeAddressFromWhitelist(_operators[i]);
}
}
}
// File: openzeppelin-solidity/contracts/math/SafeMath.sol
pragma solidity ^0.4.24;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
// Gas optimization: this is cheaper than asserting 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (_a == 0) {
return 0;
}
c = _a * _b;
assert(c / _a == _b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
// assert(_b > 0); // Solidity automatically throws when dividing by 0
// uint256 c = _a / _b;
// assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold
return _a / _b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
assert(_b <= _a);
return _a - _b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
c = _a + _b;
assert(c >= _a);
return c;
}
}
// File: contracts/v2/ReentrancyGuard.sol
pragma solidity ^0.4.24;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
contract ReentrancyGuard {
bool private _notEntered = true;
/**
* @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 make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_notEntered = false;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
}
// File: contracts/v2/marketplace/TokenMarketplaceV2.sol
pragma solidity ^0.4.24;
interface IKODAV2Methods {
function ownerOf(uint256 _tokenId) external view returns (address _owner);
function exists(uint256 _tokenId) external view returns (bool _exists);
function editionOfTokenId(uint256 _tokenId) external view returns (uint256 tokenId);
function artistCommission(uint256 _tokenId) external view returns (address _artistAccount, uint256 _artistCommission);
function editionOptionalCommission(uint256 _tokenId) external view returns (uint256 _rate, address _recipient);
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;
}
// Based on ITokenMarketplace.sol
contract TokenMarketplaceV2 is Whitelist, Pausable, ReentrancyGuard {
using SafeMath for uint256;
event UpdatePlatformPercentageFee(uint256 _oldPercentage, uint256 _newPercentage);
event UpdateRoyaltyPercentageFee(uint256 _oldPercentage, uint256 _newPercentage);
event UpdateMinBidAmount(uint256 minBidAmount);
event TokenListed(
uint256 indexed _tokenId,
address indexed _seller,
uint256 _price
);
event TokenDeListed(
uint256 indexed _tokenId
);
event TokenPurchased(
uint256 indexed _tokenId,
address indexed _buyer,
address indexed _seller,
uint256 _price
);
event BidPlaced(
uint256 indexed _tokenId,
address indexed _currentOwner,
address indexed _bidder,
uint256 _amount
);
event BidWithdrawn(
uint256 indexed _tokenId,
address indexed _bidder
);
event BidAccepted(
uint256 indexed _tokenId,
address indexed _currentOwner,
address indexed _bidder,
uint256 _amount
);
event BidRejected(
uint256 indexed _tokenId,
address indexed _currentOwner,
address indexed _bidder,
uint256 _amount
);
event AuctionEnabled(
uint256 indexed _tokenId,
address indexed _auctioneer
);
event AuctionDisabled(
uint256 indexed _tokenId,
address indexed _auctioneer
);
event ListingEnabled(
uint256 indexed _tokenId
);
event ListingDisabled(
uint256 indexed _tokenId
);
struct Offer {
address bidder;
uint256 offer;
}
struct Listing {
uint256 price;
address seller;
}
// Min increase in bid/list amount
uint256 public minBidAmount = 0.04 ether;
// Interface into the KODA world
IKODAV2Methods public kodaAddress;
// KO account which can receive commission
address public koCommissionAccount;
uint256 public artistRoyaltyPercentage = 100;
uint256 public platformFeePercentage = 25;
// Token ID to Offer mapping
mapping(uint256 => Offer) public offers;
// Token ID to Listing
mapping(uint256 => Listing) public listings;
// Explicitly disable sales for specific tokens
mapping(uint256 => bool) public disabledTokens;
// Explicitly disable listings for specific tokens
mapping(uint256 => bool) public disabledListings;
///////////////
// Modifiers //
///////////////
modifier onlyWhenOfferOwner(uint256 _tokenId) {
require(offers[_tokenId].bidder == msg.sender, "Not offer maker");
_;
}
modifier onlyWhenTokenExists(uint256 _tokenId) {
require(kodaAddress.exists(_tokenId), "Token does not exist");
_;
}
modifier onlyWhenBidOverMinAmount(uint256 _tokenId) {
require(msg.value >= offers[_tokenId].offer.add(minBidAmount), "Offer not enough");
_;
}
modifier onlyWhenTokenAuctionEnabled(uint256 _tokenId) {
require(!disabledTokens[_tokenId], "Token not enabled for offers");
_;
}
/////////////////
// Constructor //
/////////////////
// Set the caller as the default KO account
constructor(IKODAV2Methods _kodaAddress, address _koCommissionAccount) public {
kodaAddress = _kodaAddress;
koCommissionAccount = _koCommissionAccount;
super.addAddressToWhitelist(msg.sender);
}
//////////////////////////
// User Bidding Actions //
//////////////////////////
function placeBid(uint256 _tokenId)
public
payable
whenNotPaused
nonReentrant
onlyWhenTokenExists(_tokenId)
onlyWhenBidOverMinAmount(_tokenId)
onlyWhenTokenAuctionEnabled(_tokenId)
{
require(!isContract(msg.sender), "Unable to place a bid as a contract");
_refundHighestBidder(_tokenId);
offers[_tokenId] = Offer({bidder : msg.sender, offer : msg.value});
address currentOwner = kodaAddress.ownerOf(_tokenId);
emit BidPlaced(_tokenId, currentOwner, msg.sender, msg.value);
}
function withdrawBid(uint256 _tokenId)
public
whenNotPaused
nonReentrant
onlyWhenTokenExists(_tokenId)
onlyWhenOfferOwner(_tokenId)
{
_refundHighestBidder(_tokenId);
emit BidWithdrawn(_tokenId, msg.sender);
}
function rejectBid(uint256 _tokenId)
public
whenNotPaused
nonReentrant
{
address currentOwner = kodaAddress.ownerOf(_tokenId);
require(currentOwner == msg.sender, "Not token owner");
uint256 currentHighestBiddersAmount = offers[_tokenId].offer;
require(currentHighestBiddersAmount > 0, "No offer open");
address currentHighestBidder = offers[_tokenId].bidder;
_refundHighestBidder(_tokenId);
emit BidRejected(_tokenId, currentOwner, currentHighestBidder, currentHighestBiddersAmount);
}
function acceptBid(uint256 _tokenId, uint256 _acceptedAmount)
public
whenNotPaused
nonReentrant
{
address currentOwner = kodaAddress.ownerOf(_tokenId);
require(currentOwner == msg.sender, "Not token owner");
Offer storage offer = offers[_tokenId];
uint256 winningOffer = offer.offer;
// Check valid offer and offer not replaced whilst inflight
require(winningOffer > 0 && _acceptedAmount >= winningOffer, "Offer amount not satisfied");
address winningBidder = offer.bidder;
delete offers[_tokenId];
// Get edition no.
uint256 editionNumber = kodaAddress.editionOfTokenId(_tokenId);
_handleFunds(editionNumber, winningOffer, currentOwner);
kodaAddress.safeTransferFrom(msg.sender, winningBidder, _tokenId);
emit BidAccepted(_tokenId, currentOwner, winningBidder, winningOffer);
}
function _refundHighestBidder(uint256 _tokenId) internal {
// Get current highest bidder
address currentHighestBidder = offers[_tokenId].bidder;
if (currentHighestBidder != address(0)) {
// Get current highest bid amount
uint256 currentHighestBiddersAmount = offers[_tokenId].offer;
if (currentHighestBiddersAmount > 0) {
// Clear out highest bidder
delete offers[_tokenId];
// Refund it
currentHighestBidder.transfer(currentHighestBiddersAmount);
}
}
}
//////////////////////////
// User Listing Actions //
//////////////////////////
function listToken(uint256 _tokenId, uint256 _listingPrice)
public
whenNotPaused {
require(!disabledListings[_tokenId], "Listing disabled");
// Check ownership before listing
address tokenOwner = kodaAddress.ownerOf(_tokenId);
require(tokenOwner == msg.sender, "Not token owner");
// Check price over min bid
require(_listingPrice >= minBidAmount, "Listing price not enough");
// List the token
listings[_tokenId] = Listing({
price : _listingPrice,
seller : msg.sender
});
emit TokenListed(_tokenId, msg.sender, _listingPrice);
}
function delistToken(uint256 _tokenId)
public
whenNotPaused {
// check listing found
require(listings[_tokenId].seller != address(0), "No listing found");
// check owner is msg.sender
require(kodaAddress.ownerOf(_tokenId) == msg.sender, "Only the current owner can delist");
_delistToken(_tokenId);
}
function buyToken(uint256 _tokenId)
public
payable
nonReentrant
whenNotPaused {
Listing storage listing = listings[_tokenId];
// check token is listed
require(listing.seller != address(0), "No listing found");
// check current owner is the lister as it may have changed hands
address currentOwner = kodaAddress.ownerOf(_tokenId);
require(listing.seller == currentOwner, "Listing not valid, token owner has changed");
// check listing satisfied
uint256 listingPrice = listing.price;
require(msg.value == listingPrice, "List price not satisfied");
// Get edition no.
uint256 editionNumber = kodaAddress.editionOfTokenId(_tokenId);
// refund any open offers on it
Offer storage offer = offers[_tokenId];
_refundHighestBidder(_tokenId);
// split funds
_handleFunds(editionNumber, listingPrice, currentOwner);
// transfer token to buyer
kodaAddress.safeTransferFrom(currentOwner, msg.sender, _tokenId);
// de-list the token
_delistToken(_tokenId);
// Fire confirmation event
emit TokenPurchased(_tokenId, msg.sender, currentOwner, listingPrice);
}
function _delistToken(uint256 _tokenId) private {
delete listings[_tokenId];
emit TokenDeListed(_tokenId);
}
////////////////////
// Funds handling //
////////////////////
function _handleFunds(uint256 _editionNumber, uint256 _offer, address _currentOwner) internal {
// Get existing artist commission
(address artistAccount, uint256 artistCommissionRate) = kodaAddress.artistCommission(_editionNumber);
// Get existing optional commission
(uint256 optionalCommissionRate, address optionalCommissionRecipient) = kodaAddress.editionOptionalCommission(_editionNumber);
_splitFunds(artistAccount, artistCommissionRate, optionalCommissionRecipient, optionalCommissionRate, _offer, _currentOwner);
}
function _splitFunds(
address _artistAccount,
uint256 _artistCommissionRate,
address _optionalCommissionRecipient,
uint256 _optionalCommissionRate,
uint256 _offer,
address _currentOwner
) internal {
// Work out total % of royalties to payout = creator royalties + KO commission
uint256 totalCommissionPercentageToPay = platformFeePercentage.add(artistRoyaltyPercentage);
// Send current owner majority share of the offer
uint256 totalToSendToOwner = _offer.sub(
_offer.div(1000).mul(totalCommissionPercentageToPay)
);
_currentOwner.transfer(totalToSendToOwner);
// Send % to KO
uint256 koCommission = _offer.div(1000).mul(platformFeePercentage);
koCommissionAccount.transfer(koCommission);
// Send to seller minus royalties and commission
uint256 remainingRoyalties = _offer.sub(koCommission).sub(totalToSendToOwner);
if (_optionalCommissionRecipient == address(0)) {
// After KO and Seller - send the rest to the original artist
_artistAccount.transfer(remainingRoyalties);
} else {
_handleOptionalSplits(_artistAccount, _artistCommissionRate, _optionalCommissionRecipient, _optionalCommissionRate, remainingRoyalties);
}
}
function _handleOptionalSplits(
address _artistAccount,
uint256 _artistCommissionRate,
address _optionalCommissionRecipient,
uint256 _optionalCommissionRate,
uint256 _remainingRoyalties
) internal {
uint256 _totalCollaboratorsRate = _artistCommissionRate.add(_optionalCommissionRate);
uint256 _scaledUpCommission = _artistCommissionRate.mul(10 ** 18);
// work out % of royalties total to split e.g. 43 / 85 = 50.5882353%
uint256 primaryArtistPercentage = _scaledUpCommission.div(_totalCollaboratorsRate);
uint256 totalPrimaryRoyaltiesToArtist = _remainingRoyalties.mul(primaryArtistPercentage).div(10 ** 18);
_artistAccount.transfer(totalPrimaryRoyaltiesToArtist);
uint256 remainingRoyaltiesToCollaborator = _remainingRoyalties.sub(totalPrimaryRoyaltiesToArtist);
_optionalCommissionRecipient.transfer(remainingRoyaltiesToCollaborator);
}
///////////////////
// Query Methods //
///////////////////
function tokenOffer(uint256 _tokenId) external view returns (address _bidder, uint256 _offer, address _owner, bool _enabled, bool _paused) {
Offer memory offer = offers[_tokenId];
return (
offer.bidder,
offer.offer,
kodaAddress.ownerOf(_tokenId),
!disabledTokens[_tokenId],
paused
);
}
function determineSaleValues(uint256 _tokenId) external view returns (uint256 _sellerTotal, uint256 _platformFee, uint256 _royaltyFee) {
Offer memory offer = offers[_tokenId];
uint256 offerValue = offer.offer;
uint256 fee = offerValue.div(1000).mul(platformFeePercentage);
uint256 royalties = offerValue.div(1000).mul(artistRoyaltyPercentage);
return (
offer.offer.sub(fee).sub(royalties),
fee,
royalties
);
}
function tokenListingDetails(uint256 _tokenId) external view returns (uint256 _price, address _lister, address _currentOwner) {
Listing memory listing = listings[_tokenId];
return (
listing.price,
listing.seller,
kodaAddress.ownerOf(_tokenId)
);
}
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly {size := extcodesize(account)}
return size > 0;
}
///////////////////
// Admin Actions //
///////////////////
function disableAuction(uint256 _tokenId)
public
onlyIfWhitelisted(msg.sender)
{
_refundHighestBidder(_tokenId);
disabledTokens[_tokenId] = true;
emit AuctionDisabled(_tokenId, msg.sender);
}
function enableAuction(uint256 _tokenId)
public
onlyIfWhitelisted(msg.sender)
{
_refundHighestBidder(_tokenId);
disabledTokens[_tokenId] = false;
emit AuctionEnabled(_tokenId, msg.sender);
}
function disableListing(uint256 _tokenId)
public
onlyIfWhitelisted(msg.sender)
{
_delistToken(_tokenId);
disabledListings[_tokenId] = true;
emit ListingDisabled(_tokenId);
}
function enableListing(uint256 _tokenId)
public
onlyIfWhitelisted(msg.sender)
{
disabledListings[_tokenId] = false;
emit ListingEnabled(_tokenId);
}
function setMinBidAmount(uint256 _minBidAmount) onlyIfWhitelisted(msg.sender) public {
minBidAmount = _minBidAmount;
emit UpdateMinBidAmount(minBidAmount);
}
function setKodavV2(IKODAV2Methods _kodaAddress) onlyIfWhitelisted(msg.sender) public {
kodaAddress = _kodaAddress;
}
function setKoCommissionAccount(address _koCommissionAccount) public onlyIfWhitelisted(msg.sender) {
require(_koCommissionAccount != address(0), "Invalid address");
koCommissionAccount = _koCommissionAccount;
}
function setArtistRoyaltyPercentage(uint256 _artistRoyaltyPercentage) public onlyIfWhitelisted(msg.sender) {
emit UpdateRoyaltyPercentageFee(artistRoyaltyPercentage, _artistRoyaltyPercentage);
artistRoyaltyPercentage = _artistRoyaltyPercentage;
}
function setPlatformPercentage(uint256 _platformFeePercentage) public onlyIfWhitelisted(msg.sender) {
emit UpdatePlatformPercentageFee(platformFeePercentage, _platformFeePercentage);
platformFeePercentage = _platformFeePercentage;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_acceptedAmount","type":"uint256"}],"name":"acceptBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"enableAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"withdrawBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_platformFeePercentage","type":"uint256"}],"name":"setPlatformPercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_WHITELISTED","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"disabledTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operators","type":"address[]"}],"name":"removeAddressesFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"determineSaleValues","outputs":[{"name":"_sellerTotal","type":"uint256"},{"name":"_platformFee","type":"uint256"},{"name":"_royaltyFee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"removeAddressFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"buyToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_minBidAmount","type":"uint256"}],"name":"setMinBidAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minBidAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"artistRoyaltyPercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"disableListing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"rejectBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"koCommissionAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_listingPrice","type":"uint256"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"addAddressToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"enableListing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenOffer","outputs":[{"name":"_bidder","type":"address"},{"name":"_offer","type":"uint256"},{"name":"_owner","type":"address"},{"name":"_enabled","type":"bool"},{"name":"_paused","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"offers","outputs":[{"name":"bidder","type":"address"},{"name":"offer","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_koCommissionAccount","type":"address"}],"name":"setKoCommissionAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_artistRoyaltyPercentage","type":"uint256"}],"name":"setArtistRoyaltyPercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"placeBid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"disabledListings","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"disableAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kodaAddress","type":"address"}],"name":"setKodavV2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"delistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"platformFeePercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenListingDetails","outputs":[{"name":"_price","type":"uint256"},{"name":"_lister","type":"address"},{"name":"_currentOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"listings","outputs":[{"name":"price","type":"uint256"},{"name":"seller","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kodaAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operators","type":"address[]"}],"name":"addAddressesToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_kodaAddress","type":"address"},{"name":"_koCommissionAccount","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldPercentage","type":"uint256"},{"indexed":false,"name":"_newPercentage","type":"uint256"}],"name":"UpdatePlatformPercentageFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldPercentage","type":"uint256"},{"indexed":false,"name":"_newPercentage","type":"uint256"}],"name":"UpdateRoyaltyPercentageFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minBidAmount","type":"uint256"}],"name":"UpdateMinBidAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_seller","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"TokenListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"TokenDeListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_buyer","type":"address"},{"indexed":true,"name":"_seller","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"TokenPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_currentOwner","type":"address"},{"indexed":true,"name":"_bidder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"BidPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_bidder","type":"address"}],"name":"BidWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_currentOwner","type":"address"},{"indexed":true,"name":"_bidder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"BidAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_currentOwner","type":"address"},{"indexed":true,"name":"_bidder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"BidRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_auctioneer","type":"address"}],"name":"AuctionEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_auctioneer","type":"address"}],"name":"AuctionDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"ListingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"ListingDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040526002805461ffff1916610100179055668e1bc9bf040000600355606460065560196007553480156200003557600080fd5b50604051604080620031828339810160405280516020909101516000805433600160a060020a03199182168117909255600480548216600160a060020a038087169190911790915560058054909216908416179055620000a390640100000000620000ab810262001ba81704565b505062000261565b600054600160a060020a03163314620000c357600080fd5b62000113816040805190810160405280600981526020017f77686974656c697374000000000000000000000000000000000000000000000081525062000116640100000000026401000000009004565b50565b62000192826001836040518082805190602001908083835b602083106200014f5780518252601f1990920191602091820191016200012e565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506401000000006200023c810262002d6d1704565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001fd578181015183820152602001620001e3565b50505050905090810190601f1680156200022b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b612f1180620002716000396000f3006080604052600436106102035763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302e9d5e481146102085780630872ef6e146102255780630988ca8c1461023d5780630eaaf4c8146102a457806314d39bad146102bc57806318b919e9146102d4578063210d61011461035e578063217fe6c61461038a57806324953eaa146103f157806326aa594214610446578063286dd3f51461047c5780632d296bf11461049d5780633f4ba83a146104a8578063417fd6b6146104bd57806349751788146104d55780635c06d0e0146104fc5780635c3fec1e146105115780635c975abb146105295780636e3341b31461053e5780636e93dbdc14610556578063715018a61461058757806375c1631d1461059c5780637b9417c8146105b7578063811adfbe146105d85780638456cb59146105f05780638795dcff146106055780638a72ea6a146106595780638da5cb5b14610694578063953e474a146106a95780639841ee39146106ca5780639979ef45146106e25780639b19251a146106ed578063baea69441461070e578063bb435c8d14610726578063bbee17a31461073e578063bed659bc1461075f578063cdd78cfc14610777578063cfc307381461078c578063de74e57b146107cc578063e0758c9d14610805578063e2ec6ec31461081a578063f2fde38b1461086f575b600080fd5b34801561021457600080fd5b50610223600435602435610890565b005b34801561023157600080fd5b50610223600435610c15565b34801561024957600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610223958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c909650505050505050565b3480156102b057600080fd5b50610223600435610cfe565b3480156102c857600080fd5b50610223600435610f0b565b3480156102e057600080fd5b506102e9610f7c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036a57600080fd5b50610376600435610fa1565b604080519115158252519081900360200190f35b34801561039657600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610376958335600160a060020a0316953695604494919390910191908190840183828082843750949750610fb69650505050505050565b3480156103fd57600080fd5b50604080516020600480358082013583810280860185019096528085526102239536959394602494938501929182918501908490808284375094975061102b9650505050505050565b34801561045257600080fd5b5061045e600435611078565b60408051938452602084019290925282820152519081900360600190f35b34801561048857600080fd5b50610223600160a060020a0360043516611132565b610223600435611179565b3480156104b457600080fd5b50610223611575565b3480156104c957600080fd5b506102236004356115d2565b3480156104e157600080fd5b506104ea61163c565b60408051918252519081900360200190f35b34801561050857600080fd5b506104ea611642565b34801561051d57600080fd5b50610223600435611648565b34801561053557600080fd5b506103766116c3565b34801561054a57600080fd5b506102236004356116cc565b34801561056257600080fd5b5061056b611907565b60408051600160a060020a039092168252519081900360200190f35b34801561059357600080fd5b50610223611916565b3480156105a857600080fd5b50610223600435602435611975565b3480156105c357600080fd5b50610223600160a060020a0360043516611ba8565b3480156105e457600080fd5b50610223600435611bec565b3480156105fc57600080fd5b50610223611c5b565b34801561061157600080fd5b5061061d600435611cba565b60408051600160a060020a0396871681526020810195909552929094168383015215156060830152911515608082015290519081900360a00190f35b34801561066557600080fd5b50610671600435611da1565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156106a057600080fd5b5061056b611dc6565b3480156106b557600080fd5b50610223600160a060020a0360043516611dd5565b3480156106d657600080fd5b50610223600435611e86565b610223600435611ef7565b3480156106f957600080fd5b50610376600160a060020a03600435166122d2565b34801561071a57600080fd5b50610376600435612301565b34801561073257600080fd5b50610223600435612316565b34801561074a57600080fd5b50610223600160a060020a0360043516612394565b34801561076b57600080fd5b506102236004356123e5565b34801561078357600080fd5b506104ea612570565b34801561079857600080fd5b506107a4600435612576565b60408051938452600160a060020a039283166020850152911682820152519081900360600190f35b3480156107d857600080fd5b506107e460043561263c565b60408051928352600160a060020a0390911660208301528051918290030190f35b34801561081157600080fd5b5061056b61265e565b34801561082657600080fd5b50604080516020600480358082013583810280860185019096528085526102239536959394602494938501929182918501908490808284375094975061266d9650505050505050565b34801561087b57600080fd5b50610223600160a060020a03600435166126ba565b600254600090819081908190819060ff16156108ab57600080fd5b600254610100900460ff1615156108fa576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019169055600480546040805160e160020a6331a9108f0281529283018a905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b505050506040513d602081101561097e57600080fd5b50519450600160a060020a03851633146109e2576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b60008781526008602052604081206001810154909550935083118015610a085750828610155b1515610a5e576040805160e560020a62461bcd02815260206004820152601a60248201527f4f6666657220616d6f756e74206e6f7420736174697366696564000000000000604482015290519081900360640190fd5b835460008881526008602090815260408083208054600160a060020a03191681556001018390556004805482517f824eec3b0000000000000000000000000000000000000000000000000000000081529182018d90529151600160a060020a039586169750949091169363824eec3b93602480840194938390030190829087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d6020811015610b1557600080fd5b50519050610b248184876126da565b60048054604080517f42842e0e0000000000000000000000000000000000000000000000000000000081523393810193909352600160a060020a038581166024850152604484018b905290519116916342842e0e91606480830192600092919082900301818387803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b5050505081600160a060020a031685600160a060020a0316887fe6d56779a392535d3a591e92b65ba36f2ecc424bbf5220d0176a7da29385b504866040518082815260200191505060405180910390a450506002805461ff0019166101001790555050505050565b33610c4381604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b610c4c8261282e565b6000828152600a6020526040808220805460ff1916905551339184917fdeb115d202a55795fb5e47cee9ce6c0bd792a016a2d1251f937b1bb24e92332e9190a35050565b610cfa826001836040518082805190602001908083835b60208310610cc65780518252601f199092019160209182019101610ca7565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506128c4565b5050565b60025460ff1615610d0e57600080fd5b600254610100900460ff161515610d5d576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff001916905560048054604080517f4f558e79000000000000000000000000000000000000000000000000000000008152928301849052518392600160a060020a0390921691634f558e799160248083019260209291908290030181600087803b158015610dcf57600080fd5b505af1158015610de3573d6000803e3d6000fd5b505050506040513d6020811015610df957600080fd5b50511515610e51576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e20646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000828152600860205260409020548290600160a060020a03163314610ec1576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f74206f66666572206d616b65720000000000000000000000000000000000604482015290519081900360640190fd5b610eca8361282e565b604051339084907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a90600090a350506002805461ff00191661010017905550565b33610f3981604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600754604080519182526020820184905280517feacf709830352fe1a96d6837caea6476163d682a42a64eb621b34d9b901b50009281900390910190a150600755565b6040805180820190915260098152600080516020612ea6833981519152602082015281565b600a6020526000908152604090205460ff1681565b6000611022836001846040518082805190602001908083835b60208310610fee5780518252601f199092019160209182019101610fcf565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506128d9565b90505b92915050565b60008054600160a060020a0316331461104357600080fd5b5060005b8151811015610cfa57611070828281518110151561106157fe5b90602001906020020151611132565b600101611047565b6000806000611085612e8e565b50600084815260086020908152604080832081518083019092528054600160a060020a031682526001015491810182905260075490929081906110e0906110d4856103e863ffffffff6128f816565b9063ffffffff61290d16565b6006549092506110fc906110d4856103e863ffffffff6128f816565b90506111258161111984876020015161293690919063ffffffff16565b9063ffffffff61293616565b9891975095509350505050565b600054600160a060020a0316331461114957600080fd5b61117681604080519081016040528060098152602001600080516020612ea6833981519152815250612948565b50565b6000806000806000600260019054906101000a900460ff1615156111d5576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019811690915560ff16156111ef57600080fd5b60008681526009602052604090206001810154909550600160a060020a03161515611264576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f206c697374696e6720666f756e6400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f02815292830189905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b505050506040513d60208110156112dd57600080fd5b50516001860154909450600160a060020a0380861691161461136f576040805160e560020a62461bcd02815260206004820152602a60248201527f4c697374696e67206e6f742076616c69642c20746f6b656e206f776e6572206860448201527f6173206368616e67656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b845492503483146113ca576040805160e560020a62461bcd02815260206004820152601860248201527f4c697374207072696365206e6f74207361746973666965640000000000000000604482015290519081900360640190fd5b60048054604080517f824eec3b00000000000000000000000000000000000000000000000000000000815292830189905251600160a060020a039091169163824eec3b9160248083019260209291908290030181600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050506040513d602081101561145957600080fd5b5051600087815260086020526040902090925090506114778661282e565b6114828284866126da565b60048054604080517f42842e0e000000000000000000000000000000000000000000000000000000008152600160a060020a0388811694820194909452336024820152604481018a9052905192909116916342842e0e9160648082019260009290919082900301818387803b1580156114fa57600080fd5b505af115801561150e573d6000803e3d6000fd5b5050505061151b86612a59565b604080518481529051600160a060020a03861691339189917f704cf6cb1221490022185412a0f82fd80ca9ccf7b5f84482727d0f6924265bd8919081900360200190a450506002805461ff00191661010017905550505050565b600054600160a060020a0316331461158c57600080fd5b60025460ff16151561159d57600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3361160081604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b60038290556040805183815290517f2bc4b9fa5449471c716310263f78104dee5bcb66018bcdb48fd1f61f5de81a1b9181900360200190a15050565b60035481565b60065481565b3361167681604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b61167f82612a59565b6000828152600b6020526040808220805460ff191660011790555183917ff50274e1c6256cf77899d9c47b15ab288f85c61c6582acb8ffc3af541eac10a391a25050565b60025460ff1681565b6002546000908190819060ff16156116e357600080fd5b600254610100900460ff161515611732576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019169055600480546040805160e160020a6331a9108f02815292830187905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d60208110156117b657600080fd5b50519250600160a060020a038316331461181a576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b60008481526008602052604081206001015492508211611884576040805160e560020a62461bcd02815260206004820152600d60248201527f4e6f206f66666572206f70656e00000000000000000000000000000000000000604482015290519081900360640190fd5b50600083815260086020526040902054600160a060020a03166118a68461282e565b80600160a060020a031683600160a060020a0316857f6d699e170cc72516120ba19fe48e744504798d1afc2ffb65ff1154a6f4fa4d15856040518082815260200191505060405180910390a450506002805461ff0019166101001790555050565b600554600160a060020a031681565b600054600160a060020a0316331461192d57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b60025460009060ff161561198857600080fd5b6000838152600b602052604090205460ff16156119ef576040805160e560020a62461bcd02815260206004820152601060248201527f4c697374696e672064697361626c656400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f02815292830186905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050506040513d6020811015611a6857600080fd5b50519050600160a060020a0381163314611acc576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b600354821015611b26576040805160e560020a62461bcd02815260206004820152601860248201527f4c697374696e67207072696365206e6f7420656e6f7567680000000000000000604482015290519081900360640190fd5b604080518082018252838152336020808301828152600088815260098352859020935184555160019093018054600160a060020a031916600160a060020a039094169390931790925582518581529251909286927f7765a1c07bdce3390c521eaeb86030b188b77cbaba2d76bd7c9c32d906bfbcba92918290030190a3505050565b600054600160a060020a03163314611bbf57600080fd5b61117681604080519081016040528060098152602001600080516020612ea6833981519152815250612aa5565b33611c1a81604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b6000828152600b6020526040808220805460ff191690555183917f1e0a714b72e06f5169923cf6ffd0cd8a38954de64e275012265e0e5150d280cf91a25050565b600054600160a060020a03163314611c7257600080fd5b60025460ff1615611c8257600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000806000806000611cca612e8e565b506000868152600860209081526040808320815180830183528154600160a060020a0390811680835260019093015482860181905260048054865160e160020a6331a9108f0281529182018f9052955193979496919590921693636352211e936024808501949192918390030190829087803b158015611d4957600080fd5b505af1158015611d5d573d6000803e3d6000fd5b505050506040513d6020811015611d7357600080fd5b50516000998a52600a602052604090992054600254929a9199985060ff908116159750909116945092505050565b60086020526000908152604090208054600190910154600160a060020a039091169082565b600054600160a060020a031681565b33611e0381604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600160a060020a0382161515611e63576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b5060058054600160a060020a031916600160a060020a0392909216919091179055565b33611eb481604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600654604080519182526020820184905280517f3d843ef224be86afeee7f914f0fa9ddae84d6d9df67ca5edcb781900ee88bff49281900390910190a150600655565b60025460009060ff1615611f0a57600080fd5b600254610100900460ff161515611f59576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff001916905560048054604080517f4f558e79000000000000000000000000000000000000000000000000000000008152928301859052518492600160a060020a0390921691634f558e799160248083019260209291908290030181600087803b158015611fcb57600080fd5b505af1158015611fdf573d6000803e3d6000fd5b505050506040513d6020811015611ff557600080fd5b5051151561204d576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e20646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6003546000848152600860205260409020600101548491612074919063ffffffff612b7716565b3410156120cb576040805160e560020a62461bcd02815260206004820152601060248201527f4f66666572206e6f7420656e6f75676800000000000000000000000000000000604482015290519081900360640190fd5b6000848152600a6020526040902054849060ff1615612134576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e206e6f7420656e61626c656420666f72206f666665727300000000604482015290519081900360640190fd5b61213d33612b84565b156121b8576040805160e560020a62461bcd02815260206004820152602360248201527f556e61626c6520746f20706c616365206120626964206173206120636f6e747260448201527f6163740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6121c18561282e565b60408051808201825233815234602080830191825260008981526008825284812093518454600160a060020a031916600160a060020a03918216178555925160019094019390935560048054855160e160020a6331a9108f0281529182018b905294519490921693636352211e936024808501948390030190829087803b15801561224b57600080fd5b505af115801561225f573d6000803e3d6000fd5b505050506040513d602081101561227557600080fd5b50516040805134815290519195503391600160a060020a0387169188917f3d87e1d02e187b9fe1095bc12567b7485b6cf54c47eea3dc9b5fd64d03cb67509181900360200190a450506002805461ff001916610100179055505050565b600061102582604080519081016040528060098152602001600080516020612ea6833981519152815250610fb6565b600b6020526000908152604090205460ff1681565b3361234481604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b61234d8261282e565b6000828152600a6020526040808220805460ff1916600117905551339184917fe0c56951f00a75f5139f9af608a2ae603fe7c340a8f4b4b3125e9a7018041b609190a35050565b336123c281604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b5060048054600160a060020a031916600160a060020a0392909216919091179055565b60025460ff16156123f557600080fd5b600081815260096020526040902060010154600160a060020a03161515612466576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f206c697374696e6720666f756e6400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f028152928301849052513392600160a060020a0390921691636352211e9160248083019260209291908290030181600087803b1580156124b757600080fd5b505af11580156124cb573d6000803e3d6000fd5b505050506040513d60208110156124e157600080fd5b5051600160a060020a031614612567576040805160e560020a62461bcd02815260206004820152602160248201527f4f6e6c79207468652063757272656e74206f776e65722063616e2064656c697360448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61117681612a59565b60075481565b6000806000612583612e8e565b506000848152600960209081526040808320815180830183528154808252600190920154600160a060020a0390811682860181905260048054865160e160020a6331a9108f0281529182018d9052955193979496919590921693636352211e936024808501949192918390030190829087803b15801561260257600080fd5b505af1158015612616573d6000803e3d6000fd5b505050506040513d602081101561262c57600080fd5b5051919790965090945092505050565b60096020526000908152604090208054600190910154600160a060020a031682565b600454600160a060020a031681565b60008054600160a060020a0316331461268557600080fd5b5060005b8151811015610cfa576126b282828151811015156126a357fe5b90602001906020020151611ba8565b600101612689565b600054600160a060020a031633146126d157600080fd5b61117681612b8c565b60048054604080517f32fd84780000000000000000000000000000000000000000000000000000000081529283018690528051600093849384938493600160a060020a03909216926332fd8478926024808301939282900301818787803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050506040513d604081101561276e57600080fd5b50805160209091015160048054604080517fde56a2450000000000000000000000000000000000000000000000000000000081529283018c90528051949850929650600160a060020a03169263de56a245926024808401939192918290030181600087803b1580156127df57600080fd5b505af11580156127f3573d6000803e3d6000fd5b505050506040513d604081101561280957600080fd5b5080516020909101519092509050612825848483858a8a612bfc565b50505050505050565b600081815260086020526040812054600160a060020a03169081156128bf5750600082815260086020526040812060010154908111156128bf576000838152600860205260408082208054600160a060020a031916815560010182905551600160a060020a0384169183156108fc02918491818181858888f193505050501580156128bd573d6000803e3d6000fd5b505b505050565b6128ce82826128d9565b1515610cfa57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b6000818381151561290557fe5b049392505050565b600082151561291e57506000611025565b5081810281838281151561292e57fe5b041461102557fe5b60008282111561294257fe5b50900390565b6129b2826001836040518082805190602001908083835b6020831061297e5780518252601f19909201916020918201910161295f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612d4b565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612a1b578181015183820152602001612a03565b50505050905090810190601f168015612a485780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000818152600960205260408082208281556001018054600160a060020a03191690555182917f6caa49919a8c0059b871ec5c8b81a13a285b53cd92216d310fcdcf9c893e5a4591a250565b612b0f826001836040518082805190602001908083835b60208310612adb5780518252601f199092019160209182019101612abc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612d6d565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898260405180806020018281038252838181518152602001915080519060200190808383600083811015612a1b578181015183820152602001612a03565b8181018281101561102557fe5b6000903b1190565b600160a060020a0381161515612ba157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600080600080612c19600654600754612b7790919063ffffffff16565b9350612c41612c34856110d4896103e863ffffffff6128f816565b879063ffffffff61293616565b604051909350600160a060020a0386169084156108fc029085906000818181858888f19350505050158015612c7a573d6000803e3d6000fd5b50600754612c94906110d4886103e863ffffffff6128f816565b600554604051919350600160a060020a03169083156108fc029084906000818181858888f19350505050158015612ccf573d6000803e3d6000fd5b50612ce483611119888563ffffffff61293616565b9050600160a060020a0388161515612d3257604051600160a060020a038b169082156108fc029083906000818181858888f19350505050158015612d2c573d6000803e3d6000fd5b50612d3f565b612d3f8a8a8a8a85612d92565b50505050505050505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600080808080612da8898863ffffffff612b7716565b9450612dc289670de0b6b3a764000063ffffffff61290d16565b9350612dd4848663ffffffff6128f816565b9250612dfe670de0b6b3a7640000612df2888663ffffffff61290d16565b9063ffffffff6128f816565b604051909250600160a060020a038b169083156108fc029084906000818181858888f19350505050158015612e37573d6000803e3d6000fd5b50612e48868363ffffffff61293616565b604051909150600160a060020a0389169082156108fc029083906000818181858888f19350505050158015612e81573d6000803e3d6000fd5b5050505050505050505050565b604080518082019091526000808252602082015290560077686974656c69737400000000000000000000000000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c00a165627a7a72305820dc7bca7fc1bcc57fe46f1f5be14011e066bfac45dffb58a4a34d57e2296a6a610029000000000000000000000000fbeef911dc5821886e1dda71586d90ed28174b7d0000000000000000000000003f8c962eb167ad2f80c72b5f933511ccdf0719d4
Deployed Bytecode
0x6080604052600436106102035763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302e9d5e481146102085780630872ef6e146102255780630988ca8c1461023d5780630eaaf4c8146102a457806314d39bad146102bc57806318b919e9146102d4578063210d61011461035e578063217fe6c61461038a57806324953eaa146103f157806326aa594214610446578063286dd3f51461047c5780632d296bf11461049d5780633f4ba83a146104a8578063417fd6b6146104bd57806349751788146104d55780635c06d0e0146104fc5780635c3fec1e146105115780635c975abb146105295780636e3341b31461053e5780636e93dbdc14610556578063715018a61461058757806375c1631d1461059c5780637b9417c8146105b7578063811adfbe146105d85780638456cb59146105f05780638795dcff146106055780638a72ea6a146106595780638da5cb5b14610694578063953e474a146106a95780639841ee39146106ca5780639979ef45146106e25780639b19251a146106ed578063baea69441461070e578063bb435c8d14610726578063bbee17a31461073e578063bed659bc1461075f578063cdd78cfc14610777578063cfc307381461078c578063de74e57b146107cc578063e0758c9d14610805578063e2ec6ec31461081a578063f2fde38b1461086f575b600080fd5b34801561021457600080fd5b50610223600435602435610890565b005b34801561023157600080fd5b50610223600435610c15565b34801561024957600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610223958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c909650505050505050565b3480156102b057600080fd5b50610223600435610cfe565b3480156102c857600080fd5b50610223600435610f0b565b3480156102e057600080fd5b506102e9610f7c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036a57600080fd5b50610376600435610fa1565b604080519115158252519081900360200190f35b34801561039657600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610376958335600160a060020a0316953695604494919390910191908190840183828082843750949750610fb69650505050505050565b3480156103fd57600080fd5b50604080516020600480358082013583810280860185019096528085526102239536959394602494938501929182918501908490808284375094975061102b9650505050505050565b34801561045257600080fd5b5061045e600435611078565b60408051938452602084019290925282820152519081900360600190f35b34801561048857600080fd5b50610223600160a060020a0360043516611132565b610223600435611179565b3480156104b457600080fd5b50610223611575565b3480156104c957600080fd5b506102236004356115d2565b3480156104e157600080fd5b506104ea61163c565b60408051918252519081900360200190f35b34801561050857600080fd5b506104ea611642565b34801561051d57600080fd5b50610223600435611648565b34801561053557600080fd5b506103766116c3565b34801561054a57600080fd5b506102236004356116cc565b34801561056257600080fd5b5061056b611907565b60408051600160a060020a039092168252519081900360200190f35b34801561059357600080fd5b50610223611916565b3480156105a857600080fd5b50610223600435602435611975565b3480156105c357600080fd5b50610223600160a060020a0360043516611ba8565b3480156105e457600080fd5b50610223600435611bec565b3480156105fc57600080fd5b50610223611c5b565b34801561061157600080fd5b5061061d600435611cba565b60408051600160a060020a0396871681526020810195909552929094168383015215156060830152911515608082015290519081900360a00190f35b34801561066557600080fd5b50610671600435611da1565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156106a057600080fd5b5061056b611dc6565b3480156106b557600080fd5b50610223600160a060020a0360043516611dd5565b3480156106d657600080fd5b50610223600435611e86565b610223600435611ef7565b3480156106f957600080fd5b50610376600160a060020a03600435166122d2565b34801561071a57600080fd5b50610376600435612301565b34801561073257600080fd5b50610223600435612316565b34801561074a57600080fd5b50610223600160a060020a0360043516612394565b34801561076b57600080fd5b506102236004356123e5565b34801561078357600080fd5b506104ea612570565b34801561079857600080fd5b506107a4600435612576565b60408051938452600160a060020a039283166020850152911682820152519081900360600190f35b3480156107d857600080fd5b506107e460043561263c565b60408051928352600160a060020a0390911660208301528051918290030190f35b34801561081157600080fd5b5061056b61265e565b34801561082657600080fd5b50604080516020600480358082013583810280860185019096528085526102239536959394602494938501929182918501908490808284375094975061266d9650505050505050565b34801561087b57600080fd5b50610223600160a060020a03600435166126ba565b600254600090819081908190819060ff16156108ab57600080fd5b600254610100900460ff1615156108fa576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019169055600480546040805160e160020a6331a9108f0281529283018a905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b505050506040513d602081101561097e57600080fd5b50519450600160a060020a03851633146109e2576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b60008781526008602052604081206001810154909550935083118015610a085750828610155b1515610a5e576040805160e560020a62461bcd02815260206004820152601a60248201527f4f6666657220616d6f756e74206e6f7420736174697366696564000000000000604482015290519081900360640190fd5b835460008881526008602090815260408083208054600160a060020a03191681556001018390556004805482517f824eec3b0000000000000000000000000000000000000000000000000000000081529182018d90529151600160a060020a039586169750949091169363824eec3b93602480840194938390030190829087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d6020811015610b1557600080fd5b50519050610b248184876126da565b60048054604080517f42842e0e0000000000000000000000000000000000000000000000000000000081523393810193909352600160a060020a038581166024850152604484018b905290519116916342842e0e91606480830192600092919082900301818387803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b5050505081600160a060020a031685600160a060020a0316887fe6d56779a392535d3a591e92b65ba36f2ecc424bbf5220d0176a7da29385b504866040518082815260200191505060405180910390a450506002805461ff0019166101001790555050505050565b33610c4381604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b610c4c8261282e565b6000828152600a6020526040808220805460ff1916905551339184917fdeb115d202a55795fb5e47cee9ce6c0bd792a016a2d1251f937b1bb24e92332e9190a35050565b610cfa826001836040518082805190602001908083835b60208310610cc65780518252601f199092019160209182019101610ca7565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506128c4565b5050565b60025460ff1615610d0e57600080fd5b600254610100900460ff161515610d5d576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff001916905560048054604080517f4f558e79000000000000000000000000000000000000000000000000000000008152928301849052518392600160a060020a0390921691634f558e799160248083019260209291908290030181600087803b158015610dcf57600080fd5b505af1158015610de3573d6000803e3d6000fd5b505050506040513d6020811015610df957600080fd5b50511515610e51576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e20646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000828152600860205260409020548290600160a060020a03163314610ec1576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f74206f66666572206d616b65720000000000000000000000000000000000604482015290519081900360640190fd5b610eca8361282e565b604051339084907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a90600090a350506002805461ff00191661010017905550565b33610f3981604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600754604080519182526020820184905280517feacf709830352fe1a96d6837caea6476163d682a42a64eb621b34d9b901b50009281900390910190a150600755565b6040805180820190915260098152600080516020612ea6833981519152602082015281565b600a6020526000908152604090205460ff1681565b6000611022836001846040518082805190602001908083835b60208310610fee5780518252601f199092019160209182019101610fcf565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506128d9565b90505b92915050565b60008054600160a060020a0316331461104357600080fd5b5060005b8151811015610cfa57611070828281518110151561106157fe5b90602001906020020151611132565b600101611047565b6000806000611085612e8e565b50600084815260086020908152604080832081518083019092528054600160a060020a031682526001015491810182905260075490929081906110e0906110d4856103e863ffffffff6128f816565b9063ffffffff61290d16565b6006549092506110fc906110d4856103e863ffffffff6128f816565b90506111258161111984876020015161293690919063ffffffff16565b9063ffffffff61293616565b9891975095509350505050565b600054600160a060020a0316331461114957600080fd5b61117681604080519081016040528060098152602001600080516020612ea6833981519152815250612948565b50565b6000806000806000600260019054906101000a900460ff1615156111d5576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019811690915560ff16156111ef57600080fd5b60008681526009602052604090206001810154909550600160a060020a03161515611264576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f206c697374696e6720666f756e6400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f02815292830189905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b505050506040513d60208110156112dd57600080fd5b50516001860154909450600160a060020a0380861691161461136f576040805160e560020a62461bcd02815260206004820152602a60248201527f4c697374696e67206e6f742076616c69642c20746f6b656e206f776e6572206860448201527f6173206368616e67656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b845492503483146113ca576040805160e560020a62461bcd02815260206004820152601860248201527f4c697374207072696365206e6f74207361746973666965640000000000000000604482015290519081900360640190fd5b60048054604080517f824eec3b00000000000000000000000000000000000000000000000000000000815292830189905251600160a060020a039091169163824eec3b9160248083019260209291908290030181600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050506040513d602081101561145957600080fd5b5051600087815260086020526040902090925090506114778661282e565b6114828284866126da565b60048054604080517f42842e0e000000000000000000000000000000000000000000000000000000008152600160a060020a0388811694820194909452336024820152604481018a9052905192909116916342842e0e9160648082019260009290919082900301818387803b1580156114fa57600080fd5b505af115801561150e573d6000803e3d6000fd5b5050505061151b86612a59565b604080518481529051600160a060020a03861691339189917f704cf6cb1221490022185412a0f82fd80ca9ccf7b5f84482727d0f6924265bd8919081900360200190a450506002805461ff00191661010017905550505050565b600054600160a060020a0316331461158c57600080fd5b60025460ff16151561159d57600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3361160081604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b60038290556040805183815290517f2bc4b9fa5449471c716310263f78104dee5bcb66018bcdb48fd1f61f5de81a1b9181900360200190a15050565b60035481565b60065481565b3361167681604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b61167f82612a59565b6000828152600b6020526040808220805460ff191660011790555183917ff50274e1c6256cf77899d9c47b15ab288f85c61c6582acb8ffc3af541eac10a391a25050565b60025460ff1681565b6002546000908190819060ff16156116e357600080fd5b600254610100900460ff161515611732576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff0019169055600480546040805160e160020a6331a9108f02815292830187905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d60208110156117b657600080fd5b50519250600160a060020a038316331461181a576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b60008481526008602052604081206001015492508211611884576040805160e560020a62461bcd02815260206004820152600d60248201527f4e6f206f66666572206f70656e00000000000000000000000000000000000000604482015290519081900360640190fd5b50600083815260086020526040902054600160a060020a03166118a68461282e565b80600160a060020a031683600160a060020a0316857f6d699e170cc72516120ba19fe48e744504798d1afc2ffb65ff1154a6f4fa4d15856040518082815260200191505060405180910390a450506002805461ff0019166101001790555050565b600554600160a060020a031681565b600054600160a060020a0316331461192d57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b60025460009060ff161561198857600080fd5b6000838152600b602052604090205460ff16156119ef576040805160e560020a62461bcd02815260206004820152601060248201527f4c697374696e672064697361626c656400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f02815292830186905251600160a060020a0390911691636352211e9160248083019260209291908290030181600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050506040513d6020811015611a6857600080fd5b50519050600160a060020a0381163314611acc576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746f6b656e206f776e65720000000000000000000000000000000000604482015290519081900360640190fd5b600354821015611b26576040805160e560020a62461bcd02815260206004820152601860248201527f4c697374696e67207072696365206e6f7420656e6f7567680000000000000000604482015290519081900360640190fd5b604080518082018252838152336020808301828152600088815260098352859020935184555160019093018054600160a060020a031916600160a060020a039094169390931790925582518581529251909286927f7765a1c07bdce3390c521eaeb86030b188b77cbaba2d76bd7c9c32d906bfbcba92918290030190a3505050565b600054600160a060020a03163314611bbf57600080fd5b61117681604080519081016040528060098152602001600080516020612ea6833981519152815250612aa5565b33611c1a81604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b6000828152600b6020526040808220805460ff191690555183917f1e0a714b72e06f5169923cf6ffd0cd8a38954de64e275012265e0e5150d280cf91a25050565b600054600160a060020a03163314611c7257600080fd5b60025460ff1615611c8257600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000806000806000611cca612e8e565b506000868152600860209081526040808320815180830183528154600160a060020a0390811680835260019093015482860181905260048054865160e160020a6331a9108f0281529182018f9052955193979496919590921693636352211e936024808501949192918390030190829087803b158015611d4957600080fd5b505af1158015611d5d573d6000803e3d6000fd5b505050506040513d6020811015611d7357600080fd5b50516000998a52600a602052604090992054600254929a9199985060ff908116159750909116945092505050565b60086020526000908152604090208054600190910154600160a060020a039091169082565b600054600160a060020a031681565b33611e0381604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600160a060020a0382161515611e63576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b5060058054600160a060020a031916600160a060020a0392909216919091179055565b33611eb481604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b600654604080519182526020820184905280517f3d843ef224be86afeee7f914f0fa9ddae84d6d9df67ca5edcb781900ee88bff49281900390910190a150600655565b60025460009060ff1615611f0a57600080fd5b600254610100900460ff161515611f59576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612ec6833981519152604482015290519081900360640190fd5b6002805461ff001916905560048054604080517f4f558e79000000000000000000000000000000000000000000000000000000008152928301859052518492600160a060020a0390921691634f558e799160248083019260209291908290030181600087803b158015611fcb57600080fd5b505af1158015611fdf573d6000803e3d6000fd5b505050506040513d6020811015611ff557600080fd5b5051151561204d576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e20646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6003546000848152600860205260409020600101548491612074919063ffffffff612b7716565b3410156120cb576040805160e560020a62461bcd02815260206004820152601060248201527f4f66666572206e6f7420656e6f75676800000000000000000000000000000000604482015290519081900360640190fd5b6000848152600a6020526040902054849060ff1615612134576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e206e6f7420656e61626c656420666f72206f666665727300000000604482015290519081900360640190fd5b61213d33612b84565b156121b8576040805160e560020a62461bcd02815260206004820152602360248201527f556e61626c6520746f20706c616365206120626964206173206120636f6e747260448201527f6163740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6121c18561282e565b60408051808201825233815234602080830191825260008981526008825284812093518454600160a060020a031916600160a060020a03918216178555925160019094019390935560048054855160e160020a6331a9108f0281529182018b905294519490921693636352211e936024808501948390030190829087803b15801561224b57600080fd5b505af115801561225f573d6000803e3d6000fd5b505050506040513d602081101561227557600080fd5b50516040805134815290519195503391600160a060020a0387169188917f3d87e1d02e187b9fe1095bc12567b7485b6cf54c47eea3dc9b5fd64d03cb67509181900360200190a450506002805461ff001916610100179055505050565b600061102582604080519081016040528060098152602001600080516020612ea6833981519152815250610fb6565b600b6020526000908152604090205460ff1681565b3361234481604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b61234d8261282e565b6000828152600a6020526040808220805460ff1916600117905551339184917fe0c56951f00a75f5139f9af608a2ae603fe7c340a8f4b4b3125e9a7018041b609190a35050565b336123c281604080519081016040528060098152602001600080516020612ea6833981519152815250610c90565b5060048054600160a060020a031916600160a060020a0392909216919091179055565b60025460ff16156123f557600080fd5b600081815260096020526040902060010154600160a060020a03161515612466576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f206c697374696e6720666f756e6400000000000000000000000000000000604482015290519081900360640190fd5b600480546040805160e160020a6331a9108f028152928301849052513392600160a060020a0390921691636352211e9160248083019260209291908290030181600087803b1580156124b757600080fd5b505af11580156124cb573d6000803e3d6000fd5b505050506040513d60208110156124e157600080fd5b5051600160a060020a031614612567576040805160e560020a62461bcd02815260206004820152602160248201527f4f6e6c79207468652063757272656e74206f776e65722063616e2064656c697360448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61117681612a59565b60075481565b6000806000612583612e8e565b506000848152600960209081526040808320815180830183528154808252600190920154600160a060020a0390811682860181905260048054865160e160020a6331a9108f0281529182018d9052955193979496919590921693636352211e936024808501949192918390030190829087803b15801561260257600080fd5b505af1158015612616573d6000803e3d6000fd5b505050506040513d602081101561262c57600080fd5b5051919790965090945092505050565b60096020526000908152604090208054600190910154600160a060020a031682565b600454600160a060020a031681565b60008054600160a060020a0316331461268557600080fd5b5060005b8151811015610cfa576126b282828151811015156126a357fe5b90602001906020020151611ba8565b600101612689565b600054600160a060020a031633146126d157600080fd5b61117681612b8c565b60048054604080517f32fd84780000000000000000000000000000000000000000000000000000000081529283018690528051600093849384938493600160a060020a03909216926332fd8478926024808301939282900301818787803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050506040513d604081101561276e57600080fd5b50805160209091015160048054604080517fde56a2450000000000000000000000000000000000000000000000000000000081529283018c90528051949850929650600160a060020a03169263de56a245926024808401939192918290030181600087803b1580156127df57600080fd5b505af11580156127f3573d6000803e3d6000fd5b505050506040513d604081101561280957600080fd5b5080516020909101519092509050612825848483858a8a612bfc565b50505050505050565b600081815260086020526040812054600160a060020a03169081156128bf5750600082815260086020526040812060010154908111156128bf576000838152600860205260408082208054600160a060020a031916815560010182905551600160a060020a0384169183156108fc02918491818181858888f193505050501580156128bd573d6000803e3d6000fd5b505b505050565b6128ce82826128d9565b1515610cfa57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b6000818381151561290557fe5b049392505050565b600082151561291e57506000611025565b5081810281838281151561292e57fe5b041461102557fe5b60008282111561294257fe5b50900390565b6129b2826001836040518082805190602001908083835b6020831061297e5780518252601f19909201916020918201910161295f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612d4b565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612a1b578181015183820152602001612a03565b50505050905090810190601f168015612a485780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000818152600960205260408082208281556001018054600160a060020a03191690555182917f6caa49919a8c0059b871ec5c8b81a13a285b53cd92216d310fcdcf9c893e5a4591a250565b612b0f826001836040518082805190602001908083835b60208310612adb5780518252601f199092019160209182019101612abc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612d6d565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898260405180806020018281038252838181518152602001915080519060200190808383600083811015612a1b578181015183820152602001612a03565b8181018281101561102557fe5b6000903b1190565b600160a060020a0381161515612ba157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600080600080612c19600654600754612b7790919063ffffffff16565b9350612c41612c34856110d4896103e863ffffffff6128f816565b879063ffffffff61293616565b604051909350600160a060020a0386169084156108fc029085906000818181858888f19350505050158015612c7a573d6000803e3d6000fd5b50600754612c94906110d4886103e863ffffffff6128f816565b600554604051919350600160a060020a03169083156108fc029084906000818181858888f19350505050158015612ccf573d6000803e3d6000fd5b50612ce483611119888563ffffffff61293616565b9050600160a060020a0388161515612d3257604051600160a060020a038b169082156108fc029083906000818181858888f19350505050158015612d2c573d6000803e3d6000fd5b50612d3f565b612d3f8a8a8a8a85612d92565b50505050505050505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600080808080612da8898863ffffffff612b7716565b9450612dc289670de0b6b3a764000063ffffffff61290d16565b9350612dd4848663ffffffff6128f816565b9250612dfe670de0b6b3a7640000612df2888663ffffffff61290d16565b9063ffffffff6128f816565b604051909250600160a060020a038b169083156108fc029084906000818181858888f19350505050158015612e37573d6000803e3d6000fd5b50612e48868363ffffffff61293616565b604051909150600160a060020a0389169082156108fc029083906000818181858888f19350505050158015612e81573d6000803e3d6000fd5b5050505050505050505050565b604080518082019091526000808252602082015290560077686974656c69737400000000000000000000000000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c00a165627a7a72305820dc7bca7fc1bcc57fe46f1f5be14011e066bfac45dffb58a4a34d57e2296a6a610029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fbeef911dc5821886e1dda71586d90ed28174b7d0000000000000000000000003f8c962eb167ad2f80c72b5f933511ccdf0719d4
-----Decoded View---------------
Arg [0] : _kodaAddress (address): 0xFBeef911Dc5821886e1dda71586d90eD28174B7d
Arg [1] : _koCommissionAccount (address): 0x3f8C962eb167aD2f80C72b5F933511CcDF0719D4
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fbeef911dc5821886e1dda71586d90ed28174b7d
Arg [1] : 0000000000000000000000003f8c962eb167ad2f80c72b5f933511ccdf0719d4
Deployed Bytecode Sourcemap
13059:14897:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17804:876;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17804:876:0;;;;;;;;;26292:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26292:221:0;;;;;4847:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4847:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4847:119:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4847:119:0;;-1:-1:-1;4847:119:0;;-1:-1:-1;;;;;;;4847:119:0;17007:241;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17007:241:0;;;;;27708:245;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27708:245:0;;;;;7074:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7074:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7074:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15244:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15244:46:0;;;;;;;;;;;;;;;;;;;;;;;5114:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5114:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5114:142:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5114:142:0;;-1:-1:-1;5114:142:0;;-1:-1:-1;;;;;;;5114:142:0;8931:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8931:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8931:208:0;;-1:-1:-1;8931:208:0;;-1:-1:-1;;;;;;;8931:208:0;24848:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24848:459:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8545:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8545:137:0;-1:-1:-1;;;;;8545:137:0;;;;;20292:1185;;;;;;2729:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2729:95:0;;;;26907:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26907:170:0;;;;;14732:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14732:40:0;;;;;;;;;;;;;;;;;;;;14942:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14942:44:0;;;;26519:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26519:204:0;;;;;2108:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2108:26:0;;;;17254:544;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17254:544:0;;;;;14901:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14901:34:0;;;;;;;;-1:-1:-1;;;;;14901:34:0;;;;;;;;;;;;;;1108:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1108:114:0;;;;19334:606;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19334:606:0;;;;;;;7540:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7540:129:0;-1:-1:-1;;;;;7540:129:0;;;;;26729:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26729:172:0;;;;;2549:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2549:93:0;;;;24514:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24514:328:0;;;;;;;;;-1:-1:-1;;;;;24514:328:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15071:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15071:39:0;;;;;;;;;-1:-1:-1;;;;;15071:39:0;;;;;;;;;;;;;;;;;;;;;313:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;313:20:0;;;;27214:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27214:223:0;-1:-1:-1;;;;;27214:223:0;;;;;27443:259;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27443:259:0;;;;;16469:532;;;;;;7747:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7747:139:0;-1:-1:-1;;;;;7747:139:0;;;;;15351:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15351:48:0;;;;;26064:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26064:222:0;;;;;27083:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27083:125:0;-1:-1:-1;;;;;27083:125:0;;;;;19946:340;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19946:340:0;;;;;14991:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14991:41:0;;;;25313:280;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25313:280:0;;;;;;;;;;;;-1:-1:-1;;;;;25313:280:0;;;;;;;;;;;;;;;;;;;;;;15143:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15143:43:0;;;;;;;;;;;;-1:-1:-1;;;;;15143:43:0;;;;;;;;;;;;;;;;14815:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14815:33:0;;;;8112:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8112:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8112:198:0;;-1:-1:-1;8112:198:0;;-1:-1:-1;;;;;;;8112:198:0;1390:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1390:105:0;-1:-1:-1;;;;;1390:105:0;;;;;17804:876;2284:6;;17919:20;;;;;;;;;;2284:6;;2283:7;2275:16;;;;;;12010:11;;;;;;;12002:55;;;;;;;-1:-1:-1;;;;;12002:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12002:55:0;;;;;;;;;;;;;;;12127:11;:19;;-1:-1:-1;;12127:19:0;;;17942:11;;;:29;;;-1:-1:-1;;;;;17942:29:0;;;;;;;;;-1:-1:-1;;;;;17942:11:0;;;;:19;;:29;;;;;;;;;;;;;;12141:5;17942:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;17942:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17942:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17942:29:0;;-1:-1:-1;;;;;;17986:26:0;;18002:10;17986:26;17978:54;;;;;-1:-1:-1;;;;;17978:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18063:16;;;;:6;:16;;;;;18111:11;;;;18063:16;;-1:-1:-1;18111:11:0;-1:-1:-1;18204:16:0;;:51;;;;;18243:12;18224:15;:31;;18204:51;18196:90;;;;;;;-1:-1:-1;;;;;18196:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18319:12;;;18347:16;;;:6;:16;;;;;;;;18340:23;;-1:-1:-1;;;;;;18340:23:0;;;-1:-1:-1;18340:23:0;;;;18420:11;;;:38;;;;;;;;;;;;;-1:-1:-1;;;;;18319:12:0;;;;-1:-1:-1;18420:11:0;;;;;:28;;:38;;;;;18347:16;18420:38;;;;;;;:11;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;18420:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18420:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18420:38:0;;-1:-1:-1;18467:55:0;18420:38;18495:12;18509;18467;:55::i;:::-;18531:11;;;:65;;;;;;18560:10;18531:65;;;;;;;-1:-1:-1;;;;;18531:65:0;;;;;;;;;;;;;;;:11;;;:28;;:65;;;;;:11;;:65;;;;;;;:11;;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;18531:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18531:65:0;;;;18646:13;-1:-1:-1;;;;;18610:64:0;18632:12;-1:-1:-1;;;;;18610:64:0;18622:8;18610:64;18661:12;18610:64;;;;;;;;;;;;;;;;;;-1:-1:-1;;12291:11:0;:18;;-1:-1:-1;;12291:18:0;;;;;-1:-1:-1;;;;;17804:876:0:o;26292:221::-;26364:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;26386:30;26407:8;26386:20;:30::i;:::-;26452:5;26425:24;;;:14;:24;;;;;;:32;;-1:-1:-1;;26425:32:0;;;26471:36;26496:10;;26440:8;;26471:36;;26452:5;26471:36;26292:221;;:::o;4847:119::-;4931:29;4950:9;4931:5;4937;4931:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4931:12:0;;;;;-1:-1:-1;4931:12:0;;;;;;;;;;;;-1:-1:-1;;4931:18:0;:29::i;:::-;4847:119;;:::o;17007:241::-;2284:6;;;;2283:7;2275:16;;;;;;12010:11;;;;;;;12002:55;;;;;;;-1:-1:-1;;;;;12002:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12002:55:0;;;;;;;;;;;;;;;12127:11;:19;;-1:-1:-1;;12127:19:0;;;15665:11;;;:28;;;;;;;;;;;;;17112:8;;-1:-1:-1;;;;;15665:11:0;;;;:18;;:28;;;;;;;;;;;;;;12141:5;15665:11;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;15665:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15665:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15665:28:0;15657:61;;;;;;;-1:-1:-1;;;;;15657:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15526:16;;;;:6;:16;;;;;:23;17144:8;;-1:-1:-1;;;;;15526:23:0;15553:10;15526:37;15518:65;;;;;-1:-1:-1;;;;;15518:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17164:30;17185:8;17164:20;:30::i;:::-;17208:34;;17231:10;;17221:8;;17208:34;;;;;-1:-1:-1;;12291:11:0;:18;;-1:-1:-1;;12291:18:0;;;;;-1:-1:-1;17007:241:0:o;27708:245::-;27796:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;27848:21;;27820:74;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27901:21:0;:46;27708:245::o;7074:53::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7074:53:0;;;;;:::o;15244:46::-;;;;;;;;;;;;;;;:::o;5114:142::-;5200:4;5223:27;5240:9;5223:5;5229;5223:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5223:12:0;;;;;-1:-1:-1;5223:12:0;;;;;;;;;;;;-1:-1:-1;;5223:16:0;:27::i;:::-;5216:34;;5114:142;;;;;:::o;8931:208::-;9033:9;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;-1:-1:-1;9045:1:0;9028:106;9052:10;:17;9048:1;:21;9028:106;;;9085:41;9112:10;9123:1;9112:13;;;;;;;;;;;;;;;;;;9085:26;:41::i;:::-;9071:3;;9028:106;;24848:459;24918:20;24940;24962:19;24990:18;;:::i;:::-;-1:-1:-1;25034:18:0;25011:16;;;:6;:16;;;;;;;;24990:37;;;;;;;;;;-1:-1:-1;;;;;24990:37:0;;;;;;;;;;;;25112:21;;24990:37;;25034:18;;;25087:47;;:20;24990:37;25102:4;25087:20;:14;:20;:::i;:::-;:24;:47;:24;:47;:::i;:::-;25186:23;;25073:61;;-1:-1:-1;25161:49:0;;:20;:10;25176:4;25161:20;:14;:20;:::i;:49::-;25141:69;;25233:35;25258:9;25233:20;25249:3;25233:5;:11;;;:15;;:20;;;;:::i;:::-;:24;:35;:24;:35;:::i;:::-;25219:82;25275:3;;-1:-1:-1;25285:9:0;-1:-1:-1;24848:459:0;-1:-1:-1;;;;24848:459:0:o;8545:137::-;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;8637:39;8648:9;8659:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8659:16:0;;;8637:10;:39::i;:::-;8545:137;:::o;20292:1185::-;20389:23;20609:20;20794;20932:21;21040:19;12010:11;;;;;;;;;;;12002:55;;;;;;;-1:-1:-1;;;;;12002:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12002:55:0;;;;;;;;;;;;;;;12127:11;:19;;-1:-1:-1;;12127:19:0;;;;;;2284:6;2283:7;2275:16;;;;;;20415:18;;;;:8;:18;;;;;20480:14;;;;20415:18;;-1:-1:-1;;;;;;20480:14:0;:28;;20472:57;;;;;-1:-1:-1;;;;;20472:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20632:11;;;:29;;;-1:-1:-1;;;;;20632:29:0;;;;;;;;;-1:-1:-1;;;;;20632:11:0;;;;:19;;:29;;;;;;;;;;;;;;:11;;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;20632:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20632:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20632:29:0;20676:14;;;;20632:29;;-1:-1:-1;;;;;;20676:30:0;;;:14;;:30;20668:85;;;;;-1:-1:-1;;;;;20668:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20817:13;;;-1:-1:-1;20845:9:0;:25;;20837:62;;;;;-1:-1:-1;;;;;20837:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20956:11;;;:38;;;;;;;;;;;;;-1:-1:-1;;;;;20956:11:0;;;;:28;;:38;;;;;;;;;;;;;;:11;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;20956:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20956:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20956:38:0;21062:16;;;;:6;20956:38;21062:16;;;;20956:38;;-1:-1:-1;21062:16:0;-1:-1:-1;21085:30:0;21069:8;21085:20;:30::i;:::-;21144:55;21157:13;21172:12;21186;21144;:55::i;:::-;21240:11;;;:64;;;;;;-1:-1:-1;;;;;21240:64:0;;;;;;;;;;21283:10;21240:64;;;;;;;;;;;;:11;;;;;:28;;:64;;;;;:11;;:64;;;;;;;;:11;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;21240:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21240:64:0;;;;21339:22;21352:8;21339:12;:22::i;:::-;21407:64;;;;;;;;-1:-1:-1;;;;;21407:64:0;;;21432:10;;21422:8;;21407:64;;;;;;;;;;-1:-1:-1;;12291:11:0;:18;;-1:-1:-1;;12291:18:0;;;;;-1:-1:-1;;;;20292:1185:0:o;2729:95::-;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;2444:6;;;;2436:15;;;;;;;;2783:6;:14;;-1:-1:-1;;2783:14:0;;;2809:9;;;;2792:5;;2809:9;2729:95::o;26907:170::-;26973:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;26999:12;:28;;;27039:32;;;;;;;;;;;;;;;;;26907:170;;:::o;14732:40::-;;;;:::o;14942:44::-;;;;:::o;26519:204::-;26592:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;26614:22;26627:8;26614:12;:22::i;:::-;26645:26;;;;:16;:26;;;;;;:33;;-1:-1:-1;;26645:33:0;26674:4;26645:33;;;26692:25;26662:8;;26692:25;;;26519:204;;:::o;2108:26::-;;;;;;:::o;17254:544::-;2284:6;;17344:20;;;;;;2284:6;;2283:7;2275:16;;;;;;12010:11;;;;;;;12002:55;;;;;;;-1:-1:-1;;;;;12002:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12002:55:0;;;;;;;;;;;;;;;12127:11;:19;;-1:-1:-1;;12127:19:0;;;17367:11;;;:29;;;-1:-1:-1;;;;;17367:29:0;;;;;;;;;-1:-1:-1;;;;;17367:11:0;;;;:19;;:29;;;;;;;;;;;;;;12141:5;17367:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;17367:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17367:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17367:29:0;;-1:-1:-1;;;;;;17411:26:0;;17427:10;17411:26;17403:54;;;;;-1:-1:-1;;;;;17403:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:16;;;;:6;:16;;;;;:22;;;;-1:-1:-1;17541:31:0;;17533:57;;;;;-1:-1:-1;;;;;17533:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17630:16:0;;;;:6;:16;;;;;:23;-1:-1:-1;;;;;17630:23:0;17662:30;17637:8;17662:20;:30::i;:::-;17742:20;-1:-1:-1;;;;;17706:86:0;17728:12;-1:-1:-1;;;;;17706:86:0;17718:8;17706:86;17764:27;17706:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;12291:11:0;:18;;-1:-1:-1;;12291:18:0;;;;;-1:-1:-1;;17254:544:0:o;14901:34::-;;;-1:-1:-1;;;;;14901:34:0;;:::o;1108:114::-;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;1185:5;;;1166:25;;-1:-1:-1;;;;;1185:5:0;;;;1166:25;;;1214:1;1198:18;;-1:-1:-1;;;;;;1198:18:0;;;1108:114::o;19334:606::-;2284:6;;19532:18;;2284:6;;2283:7;2275:16;;;;;;19437:26;;;;:16;:26;;;;;;;;19436:27;19428:56;;;;;-1:-1:-1;;;;;19428:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19553:11;;;:29;;;-1:-1:-1;;;;;19553:29:0;;;;;;;;;-1:-1:-1;;;;;19553:11:0;;;;:19;;:29;;;;;;;;;;;;;;:11;;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;19553:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19553:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19553:29:0;;-1:-1:-1;;;;;;19597:24:0;;19611:10;19597:24;19589:52;;;;;-1:-1:-1;;;;;19589:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19708:12;;19691:29;;;19683:66;;;;;-1:-1:-1;;;;;19683:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19802:70;;;;;;;;;;;19854:10;19802:70;;;;;;;-1:-1:-1;19781:18:0;;;:8;:18;;;;;:91;;;;;;;;;;;-1:-1:-1;;;;;;19781:91:0;-1:-1:-1;;;;;19781:91:0;;;;;;;;;;19886:48;;;;;;;19854:10;;19781:18;;19886:48;;;;;;;;;19334:606;;;:::o;7540:129::-;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;7627:36;7635:9;7646:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7646:16:0;;;7627:7;:36::i;26729:172::-;26801:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;26852:5;26823:26;;;:16;:26;;;;;;:34;;-1:-1:-1;;26823:34:0;;;26871:24;26840:8;;26871:24;;;26729:172;;:::o;2549:93::-;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;2284:6;;;;2283:7;2275:16;;;;;;2604:6;:13;;-1:-1:-1;;2604:13:0;2613:4;2604:13;;;2629:7;;;;2604:6;;2629:7;2549:93::o;24514:328::-;24575:15;24592:14;24608;24624:13;24639:12;24660:18;;:::i;:::-;-1:-1:-1;24681:16:0;;;;:6;:16;;;;;;;;24660:37;;;;;;;;;-1:-1:-1;;;;;24660:37:0;;;;;;;;;;;;;;;;;24755:11;;;:29;;-1:-1:-1;;;;;24755:29:0;;;;;;;;;;24660:37;;;;;;24755:11;;;;:19;;:29;;;;;;;;;;;;;;;:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;24755:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24755:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24755:29:0;24792:24;;;;:14;24755:29;24792:24;;;;;;24823:6;;24704:132;;;;24755:29;-1:-1:-1;24792:24:0;;;;24791:25;;-1:-1:-1;24823:6:0;;;;-1:-1:-1;24514:328:0;-1:-1:-1;;;24514:328:0:o;15071:39::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15071:39:0;;;;;:::o;313:20::-;;;-1:-1:-1;;;;;313:20:0;;:::o;27214:223::-;27301:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;-1:-1:-1;;;;;27328:34:0;;;;27320:62;;;;;-1:-1:-1;;;;;27320:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27389:19:0;:42;;-1:-1:-1;;;;;;27389:42:0;-1:-1:-1;;;;;27389:42:0;;;;;;;;;;27214:223::o;27443:259::-;27538:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;27589:23;;27562:77;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27646:23:0;:50;27443:259::o;16469:532::-;2284:6;;16873:20;;2284:6;;2283:7;2275:16;;;;;;12010:11;;;;;;;12002:55;;;;;;;-1:-1:-1;;;;;12002:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12002:55:0;;;;;;;;;;;;;;;12127:11;:19;;-1:-1:-1;;12127:19:0;;;15665:11;;;:28;;;;;;;;;;;;;16582:8;;-1:-1:-1;;;;;15665:11:0;;;;:18;;:28;;;;;;;;;;;;;;12141:5;15665:11;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;15665:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15665:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15665:28:0;15657:61;;;;;;;-1:-1:-1;;;;;15657:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15845:12;;15818:16;;;;:6;:16;;;;;:22;;;16620:8;;15818:40;;:22;:40;:26;:40;:::i;:::-;15805:9;:53;;15797:82;;;;;-1:-1:-1;;;;;15797:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15970:24;;;;:14;:24;;;;;;16661:8;;15970:24;;15969:25;15961:66;;;;;-1:-1:-1;;;;;15961:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16690:22;16701:10;16690;:22::i;:::-;16689:23;16681:71;;;;;-1:-1:-1;;;;;16681:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16759:30;16780:8;16759:20;:30::i;:::-;16817:47;;;;;;;;16833:10;16817:47;;16853:9;16817:47;;;;;;;-1:-1:-1;16798:16:0;;;:6;:16;;;;;:66;;;;-1:-1:-1;;;;;;16798:66:0;-1:-1:-1;;;;;16798:66:0;;;;;;;;-1:-1:-1;16798:66:0;;;;;;;16896:11;;;:29;;-1:-1:-1;;;;;16896:29:0;;;;;;;;;;:11;;;;;:19;;:29;;;;;;;;;;;;:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;16896:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16896:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16896:29:0;16939:56;;;16985:9;16939:56;;;;16896:29;;-1:-1:-1;16973:10:0;;-1:-1:-1;;;;;16939:56:0;;;16949:8;;16939:56;;;;;16896:29;16939:56;;;-1:-1:-1;;12291:11:0;:18;;-1:-1:-1;;12291:18:0;;;;;-1:-1:-1;;;16469:532:0:o;7747:139::-;7821:4;7844:36;7852:9;7863:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7863:16:0;;;7844:7;:36::i;15351:48::-;;;;;;;;;;;;;;;:::o;26064:222::-;26137:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;26159:30;26180:8;26159:20;:30::i;:::-;26198:24;;;;:14;:24;;;;;;:31;;-1:-1:-1;;26198:31:0;26225:4;26198:31;;;26243:37;26269:10;;26213:8;;26243:37;;26198:24;26243:37;26064:222;;:::o;27083:125::-;27150:10;7282:38;7292:9;7303:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7303:16:0;;;7282:9;:38::i;:::-;-1:-1:-1;27176:11:0;:26;;-1:-1:-1;;;;;;27176:26:0;-1:-1:-1;;;;;27176:26:0;;;;;;;;;;27083:125::o;19946:340::-;2284:6;;;;2283:7;2275:16;;;;;;20094:1;20057:18;;;:8;:18;;;;;:25;;;-1:-1:-1;;;;;20057:25:0;:39;;20049:68;;;;;-1:-1:-1;;;;;20049:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20168:11;;;:29;;;-1:-1:-1;;;;;20168:29:0;;;;;;;;;20201:10;;-1:-1:-1;;;;;20168:11:0;;;;:19;;:29;;;;;;;;;;;;;;-1:-1:-1;20168:11:0;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;20168:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20168:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20168:29:0;-1:-1:-1;;;;;20168:43:0;;20160:89;;;;;-1:-1:-1;;;;;20160:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20258:22;20271:8;20258:12;:22::i;14991:41::-;;;;:::o;25313:280::-;25383:14;25399:15;25416:21;25446:22;;:::i;:::-;-1:-1:-1;25471:18:0;;;;:8;:18;;;;;;;;25446:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25446:43:0;;;;;;;;;25551:11;;;:29;;-1:-1:-1;;;;;25551:29:0;;;;;;;;;;25446:43;;;;;;25551:11;;;;:19;;:29;;;;;;;;;;;;;;;:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;25551:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25551:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25551:29:0;25496:91;;;;-1:-1:-1;25551:29:0;;-1:-1:-1;25313:280:0;-1:-1:-1;;;25313:280:0:o;15143:43::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15143:43:0;;:::o;14815:33::-;;;-1:-1:-1;;;;;14815:33:0;;:::o;8112:198::-;8209:9;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;-1:-1:-1;8221:1:0;8204:101;8228:10;:17;8224:1;:21;8204:101;;;8261:36;8283:10;8294:1;8283:13;;;;;;;;;;;;;;;;;;8261:21;:36::i;:::-;8247:3;;8204:101;;1390:105;816:5;;-1:-1:-1;;;;;816:5:0;802:10;:19;794:28;;;;;;1460:29;1479:9;1460:18;:29::i;21686:556::-;21884:11;;;:44;;;;;;;;;;;;;;21829:21;;;;;;;;-1:-1:-1;;;;;21884:11:0;;;;:28;;:44;;;;;;;;;;;21829:21;21884:11;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;21884:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21884:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21884:44:0;;;;;;;22050:11;;;21884:44;22050:53;;;;;;;;;;;;;21884:44;;-1:-1:-1;21884:44:0;;-1:-1:-1;;;;;;22050:11:0;;:37;;:53;;;;;21884:44;;22050:53;;;;;;:11;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;22050:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22050:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22050:53:0;;;;;;;;;-1:-1:-1;22050:53:0;-1:-1:-1;22112:124:0;22124:13;22139:20;22050:53;;22214:6;22222:13;22112:11;:124::i;:::-;21686:556;;;;;;;:::o;18686:550::-;18785:28;18816:16;;;:6;:16;;;;;:23;-1:-1:-1;;;;;18816:23:0;;18852:34;;18848:383;;-1:-1:-1;18978:16:0;;;;:6;:16;;;;;:22;;;;19015:31;;19011:213;;;19105:16;;;;:6;:16;;;;;;19098:23;;-1:-1:-1;;;;;;19098:23:0;;;;;;;;19156:58;-1:-1:-1;;;;;19156:29:0;;;:58;;;;;19186:27;;19156:58;19105:16;19156:58;19186:27;19156:29;:58;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19156:58:0;19011:213;18686:550;;;:::o;3599:116::-;3691:17;3695:5;3702;3691:3;:17::i;:::-;3683:26;;;;;;;3799:134;-1:-1:-1;;;;;3908:19:0;3885:4;3908:19;;;;;;;;;;;;;;;3799:134::o;9903:288::-;9963:7;10183:2;10178;:7;;;;;;;;;9903:288;-1:-1:-1;;;9903:288:0:o;9425:391::-;9485:9;9715:7;;9711:38;;;-1:-1:-1;9740:1:0;9733:8;;9711:38;-1:-1:-1;9761:7:0;;;9766:2;9761;:7;9782:6;;;;;;;;:12;9775:20;;;10308:119;10368:7;10391:8;;;;10384:16;;;;-1:-1:-1;10414:7:0;;;10308:119::o;5661:154::-;5738:30;5758:9;5738:5;5744;5738:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5738:12:0;;;;;-1:-1:-1;5738:12:0;;;;;;;;;;;;-1:-1:-1;;5738:19:0;:30::i;:::-;5792:9;-1:-1:-1;;;;;5780:29:0;;5803:5;5780:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5780:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:154;;:::o;21483:123::-;21545:18;;;;:8;:18;;;;;;21538:25;;;;;;;-1:-1:-1;;;;;;21538:25:0;;;21577:23;21554:8;;21577:23;;;21483:123;:::o;5383:146::-;5457:27;5474:9;5457:5;5463;5457:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5457:12:0;;;;;-1:-1:-1;5457:12:0;;;;;;;;;;;;-1:-1:-1;;5457:16:0;:27::i;:::-;5506:9;-1:-1:-1;;;;;5496:27:0;;5517:5;5496:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10494:132:0;10576:7;;;10597;;;;10590:15;;;25599:388;25659:4;25939:20;;25973:8;;25599:388::o;1636:175::-;-1:-1:-1;;;;;1707:23:0;;;;1699:32;;;;;;1764:5;;;1743:38;;-1:-1:-1;;;;;1743:38:0;;;;1764:5;;;1743:38;;;1788:5;:17;;-1:-1:-1;;;;;;1788:17:0;-1:-1:-1;;;;;1788:17:0;;;;;;;;;;1636:175::o;22248:1268::-;22571:38;22726:26;22912:20;23090:26;22612:50;22638:23;;22612:21;;:25;;:50;;;;:::i;:::-;22571:91;-1:-1:-1;22755:78:0;22774:52;22571:91;22774:16;:6;22785:4;22774:16;:10;:16;:::i;:52::-;22755:6;;:78;:10;:78;:::i;:::-;22840:42;;22726:107;;-1:-1:-1;;;;;;22840:22:0;;;:42;;;;;22726:107;;22840:42;;;;22726:107;22840:22;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;22956:21:0;;22935:43;;:16;:6;22946:4;22935:16;:10;:16;:::i;:43::-;22985:19;;:42;;22912:66;;-1:-1:-1;;;;;;22985:19:0;;:42;;;;;22912:66;;22985:19;:42;:19;:42;22912:66;22985:19;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;23119:48:0;23148:18;23119:24;:6;23130:12;23119:24;:10;:24;:::i;:48::-;23090:77;-1:-1:-1;;;;;;23180:42:0;;;23176:335;;;23302:43;;-1:-1:-1;;;;;23302:23:0;;;:43;;;;;23326:18;;23302:43;;;;23326:18;23302:23;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23302:43:0;23176:335;;;23368:135;23390:14;23406:21;23429:28;23459:23;23484:18;23368:21;:135::i;:::-;22248:1268;;;;;;;;;;:::o;3409:108::-;-1:-1:-1;;;;;3484:19:0;3506:5;3484:19;;;;;;;;;;;:27;;-1:-1:-1;;3484:27:0;;;3409:108::o;3235:104::-;-1:-1:-1;;;;;3307:19:0;:12;:19;;;;;;;;;;;:26;;-1:-1:-1;;3307:26:0;3329:4;3307:26;;;3235:104::o;23522:915::-;23754:31;;;;;23788:50;:21;23814:23;23788:50;:25;:50;:::i;:::-;23754:84;-1:-1:-1;23875:35:0;:21;23901:8;23875:35;:25;:35;:::i;:::-;23845:65;-1:-1:-1;24027:48:0;23845:65;24051:23;24027:48;:23;:48;:::i;:::-;23993:82;-1:-1:-1;24124:62:0;24177:8;24124:48;:19;23993:82;24124:48;:23;:48;:::i;:::-;:52;:62;:52;:62;:::i;:::-;24193:54;;24084:102;;-1:-1:-1;;;;;;24193:23:0;;;:54;;;;;24084:102;;24193:54;;;;24084:102;24193:23;:54;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;24299:54:0;:19;24323:29;24299:54;:23;:54;:::i;:::-;24360:71;;24256:97;;-1:-1:-1;;;;;;24360:37:0;;;:71;;;;;24256:97;;24360:71;;;;24256:97;24360:37;:71;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24360:71:0;23522:915;;;;;;;;;;:::o;13059:14897::-;;;;;;;;;;-1:-1:-1;13059:14897:0;;;;;;;;:::o
Swarm Source
bzzr://dc7bca7fc1bcc57fe46f1f5be14011e066bfac45dffb58a4a34d57e2296a6a61
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $3,439.79 | 0.252 | $866.83 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.