Source Code
Overview
ETH Balance
0.024301939112976048 ETH
Eth Value
$48.22 (@ $1,984.10/ETH)Latest 25 from a total of 2,385 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Lottery | 5971396 | 2790 days ago | IN | 0 ETH | 0.00322466 | ||||
| Get Free Miner | 5942086 | 2795 days ago | IN | 0 ETH | 0.00019357 | ||||
| Buy Miner | 5942028 | 2795 days ago | IN | 0 ETH | 0.00053982 | ||||
| Buy Miner | 5932455 | 2797 days ago | IN | 0 ETH | 0.0003649 | ||||
| Buy Miner | 5929555 | 2797 days ago | IN | 0 ETH | 0.00155503 | ||||
| Buy Miner | 5929534 | 2797 days ago | IN | 0 ETH | 0.00149738 | ||||
| Buy Miner | 5929259 | 2797 days ago | IN | 0 ETH | 0.00167973 | ||||
| Withdraw Sell De... | 5929025 | 2797 days ago | IN | 0 ETH | 0.00047452 | ||||
| Buy Crystal | 5929004 | 2797 days ago | IN | 0.00000001 ETH | 0.00081606 | ||||
| Get Free Miner | 5928996 | 2797 days ago | IN | 0 ETH | 0.00085719 | ||||
| Buy Crystal | 5928946 | 2797 days ago | IN | 0.00000001 ETH | 0.00081606 | ||||
| Get Free Miner | 5928937 | 2797 days ago | IN | 0 ETH | 0.00126735 | ||||
| Buy Crystal | 5928902 | 2797 days ago | IN | 0.00000001 ETH | 0.00081606 | ||||
| Get Free Miner | 5928891 | 2797 days ago | IN | 0 ETH | 0.00051075 | ||||
| Buy Crystal | 5928844 | 2797 days ago | IN | 0.00000001 ETH | 0.00081606 | ||||
| Sell Crystal Dem... | 5928836 | 2797 days ago | IN | 0 ETH | 0.00126964 | ||||
| Get Free Miner | 5928828 | 2797 days ago | IN | 0 ETH | 0.0005111 | ||||
| Get Free Miner | 5928815 | 2797 days ago | IN | 0 ETH | 0.0005111 | ||||
| Lottery | 5928762 | 2797 days ago | IN | 0 ETH | 0.0080727 | ||||
| Lottery | 5885853 | 2805 days ago | IN | 0 ETH | 0.02216957 | ||||
| Buy Miner | 5885835 | 2805 days ago | IN | 0 ETH | 0.0109392 | ||||
| Buy Miner | 5885833 | 2805 days ago | IN | 0 ETH | 0.0321464 | ||||
| Buy Miner | 5885833 | 2805 days ago | IN | 0 ETH | 0.02499 | ||||
| Buy Miner | 5885833 | 2805 days ago | IN | 0 ETH | 0.0312898 | ||||
| Buy Miner | 5885833 | 2805 days ago | IN | 0 ETH | 0.0305044 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5971396 | 2790 days ago | 0.00517674 ETH | ||||
| Transfer | 5971396 | 2790 days ago | 0.00647093 ETH | ||||
| Transfer | 5971396 | 2790 days ago | 0.01294186 ETH | ||||
| Transfer | 5971396 | 2790 days ago | 0.01941279 ETH | ||||
| Transfer | 5971396 | 2790 days ago | 0.00359496 ETH | ||||
| Transfer | 5929004 | 2797 days ago | 0 ETH | ||||
| Transfer | 5929004 | 2797 days ago | 0 ETH | ||||
| Transfer | 5929004 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928946 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928946 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928946 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928902 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928902 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928902 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928844 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928844 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928844 | 2797 days ago | 0 ETH | ||||
| Transfer | 5928762 | 2797 days ago | 0.00378416 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.06811504 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.06811504 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.06811504 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.06811504 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.06811504 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.09536106 ETH | ||||
| Transfer | 5885853 | 2805 days ago | 0.10898406 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Minewar
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-06-24
*/
pragma solidity ^0.4.2;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 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 c;
}
/**
* @dev Substracts 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) {
uint256 c = a + b;
assert(c >= a);
return c;
}
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
}
//--------------------------------------------------------------------------
// EtherMinewar
// copyright by mark_hu
// http://www.etherminewar.com/
//--------------------------------------------------------------------------
contract Minewar {
bool public initialized = false;
uint256 public roundNumber = 0;
uint256 public deadline;
uint256 public CRTSTAL_MINING_PERIOD = 86400;
uint256 public HALF_TIME = 8 hours;
uint256 public ROUND_TIME = 86400 * 7;
uint256 BASE_PRICE = 0.005 ether;
uint256 RANK_LIST_LIMIT = 10000;
uint256 MINIMUM_LIMIT_SELL = 5000000;
//miner info
mapping(uint256 => MinerData) private minerData;
uint256 private numberOfMiners;
// plyer info
mapping(address => PlyerData) private players;
//booster info
uint256 private numberOfBoosts;
mapping(uint256 => BoostData) private boostData;
//order info
uint256 private numberOfOrders;
mapping(uint256 => BuyOrderData) private buyOrderData;
mapping(uint256 => SellOrderData) private sellOrderData;
uint256 private numberOfRank;
address[21] rankList;
address public sponsor;
uint256 public sponsorLevel;
address public administrator;
/*** DATATYPES ***/
struct PlyerData {
uint256 roundNumber;
mapping(uint256 => uint256) minerCount;
uint256 hashrate;
uint256 crystals;
uint256 lastUpdateTime;
uint256 referral_count;
}
struct MinerData {
uint256 basePrice;
uint256 baseProduct;
uint256 limit;
}
struct BoostData {
address owner;
uint256 boostRate;
uint256 startingLevel;
uint256 startingTime;
uint256 halfLife;
}
struct BuyOrderData {
address owner;
string title;
string description;
uint256 unitPrice;
uint256 amount;
}
struct SellOrderData {
address owner;
string title;
string description;
uint256 unitPrice;
uint256 amount;
}
modifier isNotOver()
{
require(now <= deadline);
require(tx.origin == msg.sender);
_;
}
modifier isCurrentRound()
{
require(players[msg.sender].roundNumber == roundNumber);
_;
}
modifier limitSell()
{
PlyerData storage p = players[msg.sender];
if(p.hashrate <= MINIMUM_LIMIT_SELL){
_;
}else{
uint256 limit_hashrate = 0;
if(rankList[9] != 0){
PlyerData storage rank_player = players[rankList[9]];
limit_hashrate = SafeMath.mul(rank_player.hashrate, 5);
}
require(p.hashrate <= limit_hashrate);
_;
}
}
function Minewar() public
{
administrator = msg.sender;
numberOfMiners = 8;
numberOfBoosts = 5;
numberOfOrders = 5;
numberOfRank = 21;
//init miner data
// price, prod. limit
minerData[0] = MinerData(10, 10, 10); //lv1
minerData[1] = MinerData(100, 200, 2); //lv2
minerData[2] = MinerData(400, 800, 4); //lv3
minerData[3] = MinerData(1600, 3200, 8); //lv4
minerData[4] = MinerData(6400, 9600, 16); //lv5
minerData[5] = MinerData(25600, 38400, 32); //lv6
minerData[6] = MinerData(204800, 204800, 64); //lv7
minerData[7] = MinerData(1638400, 819200, 65536); //lv8
}
function () public payable
{
}
function startGame() public
{
require(msg.sender == administrator);
require(!initialized);
startNewRound();
initialized = true;
}
function startNewRound() private
{
deadline = SafeMath.add(now, ROUND_TIME);
roundNumber = SafeMath.add(roundNumber, 1);
initData();
}
function initData() private
{
sponsor = administrator;
sponsorLevel = 6;
//init booster data
boostData[0] = BoostData(0, 150, 1, now, HALF_TIME);
boostData[1] = BoostData(0, 175, 1, now, HALF_TIME);
boostData[2] = BoostData(0, 200, 1, now, HALF_TIME);
boostData[3] = BoostData(0, 225, 1, now, HALF_TIME);
boostData[4] = BoostData(msg.sender, 250, 2, now, HALF_TIME);
//init order data
uint256 idx;
for (idx = 0; idx < numberOfOrders; idx++) {
buyOrderData[idx] = BuyOrderData(0, "title", "description", 0, 0);
sellOrderData[idx] = SellOrderData(0, "title", "description", 0, 0);
}
for (idx = 0; idx < numberOfRank; idx++) {
rankList[idx] = 0;
}
}
function lottery() public
{
require(now > deadline);
require(tx.origin == msg.sender);
uint256 balance = SafeMath.div(SafeMath.mul(this.balance, 90), 100);
administrator.send(SafeMath.div(SafeMath.mul(this.balance, 5), 100));
uint8[10] memory profit = [30,20,10,8,7,5,5,5,5,5];
for(uint256 idx = 0; idx < 10; idx++){
if(rankList[idx] != 0){
rankList[idx].send(SafeMath.div(SafeMath.mul(balance,profit[idx]),100));
}
}
startNewRound();
}
function getRankList() public view returns(address[21])
{
return rankList;
}
//sponser
function becomeSponsor() public isNotOver isCurrentRound payable
{
require(msg.value >= getSponsorFee());
sponsor.send(getCurrentPrice(sponsorLevel));
sponsor = msg.sender;
sponsorLevel = SafeMath.add(sponsorLevel, 1);
}
function getSponsorFee() public view returns(uint256 sponsorFee)
{
sponsorFee = getCurrentPrice(SafeMath.add(sponsorLevel, 1));
}
//--------------------------------------------------------------------------
// Miner
//--------------------------------------------------------------------------
function getFreeMiner(address ref) isNotOver public
{
require(players[msg.sender].roundNumber != roundNumber);
PlyerData storage p = players[msg.sender];
//reset player data
if(p.hashrate > 0){
for (uint idx = 1; idx < numberOfMiners; idx++) {
p.minerCount[idx] = 0;
}
}
p.crystals = 0;
p.roundNumber = roundNumber;
//free miner
p.lastUpdateTime = now;
p.referral_count = 0;
p.minerCount[0] = 1;
MinerData storage m0 = minerData[0];
p.hashrate = m0.baseProduct;
//send referral
if (ref != msg.sender) {
PlyerData storage referral = players[ref];
if(referral.roundNumber == roundNumber){
updateCrytal(ref);
p.referral_count = 1;
referral.referral_count = SafeMath.add(referral.referral_count, 1);
}
}
}
function buyMiner(uint256[] minerNumbers) public isNotOver isCurrentRound
{
require(minerNumbers.length == numberOfMiners);
uint256 minerIdx = 0;
MinerData memory m;
for (; minerIdx < numberOfMiners; minerIdx++) {
m = minerData[minerIdx];
if(minerNumbers[minerIdx] > m.limit || minerNumbers[minerIdx] < 0){
revert();
}
}
updateCrytal(msg.sender);
PlyerData storage p = players[msg.sender];
uint256 price = 0;
uint256 minerNumber = 0;
for (minerIdx = 0; minerIdx < numberOfMiners; minerIdx++) {
minerNumber = minerNumbers[minerIdx];
if (minerNumber > 0) {
m = minerData[minerIdx];
price = SafeMath.add(price, SafeMath.mul(m.basePrice, minerNumber));
}
}
price = SafeMath.mul(price, CRTSTAL_MINING_PERIOD);
if(p.crystals < price){
revert();
}
for (minerIdx = 0; minerIdx < numberOfMiners; minerIdx++) {
minerNumber = minerNumbers[minerIdx];
if (minerNumber > 0) {
m = minerData[minerIdx];
p.minerCount[minerIdx] = SafeMath.min(m.limit, SafeMath.add(p.minerCount[minerIdx], minerNumber));
}
}
p.crystals = SafeMath.sub(p.crystals, price);
updateHashrate(msg.sender);
}
function getPlayerData(address addr) public view
returns (uint256 crystals, uint256 lastupdate, uint256 hashratePerDay, uint256[8] miners, uint256 hasBoost, uint256 referral_count)
{
PlyerData storage p = players[addr];
if(p.roundNumber != roundNumber){
p = players[0];
}
crystals = SafeMath.div(p.crystals, CRTSTAL_MINING_PERIOD);
lastupdate = p.lastUpdateTime;
hashratePerDay = addReferralHashrate(addr, p.hashrate);
uint256 i = 0;
for(i = 0; i < numberOfMiners; i++)
{
miners[i] = p.minerCount[i];
}
hasBoost = hasBooster(addr);
referral_count = p.referral_count;
}
function getHashratePerDay(address minerAddr) public view returns (uint256 personalProduction)
{
PlyerData storage p = players[minerAddr];
personalProduction = addReferralHashrate(minerAddr, p.hashrate);
uint256 boosterIdx = hasBooster(minerAddr);
if (boosterIdx != 999) {
BoostData storage b = boostData[boosterIdx];
personalProduction = SafeMath.div(SafeMath.mul(personalProduction, b.boostRate), 100);
}
}
//--------------------------------------------------------------------------
// BOOSTER
//--------------------------------------------------------------------------
function buyBooster(uint256 idx) public isNotOver isCurrentRound payable
{
require(idx < numberOfBoosts);
BoostData storage b = boostData[idx];
if(msg.value < getBoosterPrice(idx) || msg.sender == b.owner){
revert();
}
address beneficiary = b.owner;
sponsor.send(devFee(getBoosterPrice(idx)));
if(beneficiary != 0){
beneficiary.send(SafeMath.div(SafeMath.mul(getBoosterPrice(idx), 55), 100));
}
updateCrytal(msg.sender);
updateCrytal(beneficiary);
uint256 level = getCurrentLevel(b.startingLevel, b.startingTime, b.halfLife);
b.startingLevel = SafeMath.add(level, 1);
b.startingTime = now;
// transfer ownership
b.owner = msg.sender;
}
function getBoosterData(uint256 idx) public view returns (address owner,uint256 boostRate, uint256 startingLevel,
uint256 startingTime, uint256 currentPrice, uint256 halfLife)
{
require(idx < numberOfBoosts);
owner = boostData[idx].owner;
boostRate = boostData[idx].boostRate;
startingLevel = boostData[idx].startingLevel;
startingTime = boostData[idx].startingTime;
currentPrice = getBoosterPrice(idx);
halfLife = boostData[idx].halfLife;
}
function getBoosterPrice(uint256 index) public view returns (uint256)
{
BoostData storage booster = boostData[index];
return getCurrentPrice(getCurrentLevel(booster.startingLevel, booster.startingTime, booster.halfLife));
}
function hasBooster(address addr) public view returns (uint256 boostIdx)
{
boostIdx = 999;
for(uint256 i = 0; i < numberOfBoosts; i++){
uint256 revert_i = numberOfBoosts - i - 1;
if(boostData[revert_i].owner == addr){
boostIdx = revert_i;
break;
}
}
}
//--------------------------------------------------------------------------
// Market
//--------------------------------------------------------------------------
function buyCrystalDemand(uint256 amount, uint256 unitPrice,string title, string description) public isNotOver isCurrentRound payable
{
require(unitPrice > 0);
require(amount >= 1000);
require(amount * unitPrice <= msg.value);
uint256 lowestIdx = getLowestUnitPriceIdxFromBuy();
BuyOrderData storage o = buyOrderData[lowestIdx];
if(o.amount > 10 && unitPrice <= o.unitPrice){
revert();
}
uint256 balance = SafeMath.mul(o.amount, o.unitPrice);
if (o.owner != 0){
o.owner.send(balance);
}
o.owner = msg.sender;
o.unitPrice = unitPrice;
o.title = title;
o.description = description;
o.amount = amount;
}
function sellCrystal(uint256 amount, uint256 index) public isNotOver isCurrentRound limitSell
{
require(index < numberOfOrders);
require(amount > 0);
BuyOrderData storage o = buyOrderData[index];
require(amount <= o.amount);
updateCrytal(msg.sender);
PlyerData storage seller = players[msg.sender];
PlyerData storage buyer = players[o.owner];
require(seller.crystals >= amount * CRTSTAL_MINING_PERIOD);
uint256 price = SafeMath.mul(amount, o.unitPrice);
uint256 fee = devFee(price);
sponsor.send(fee);
administrator.send(fee);
buyer.crystals = SafeMath.add(buyer.crystals, amount * CRTSTAL_MINING_PERIOD);
seller.crystals = SafeMath.sub(seller.crystals, amount * CRTSTAL_MINING_PERIOD);
o.amount = SafeMath.sub(o.amount, amount);
msg.sender.send(SafeMath.div(price, 2));
}
function withdrawBuyDemand(uint256 index) public isNotOver isCurrentRound
{
require(index < numberOfOrders);
BuyOrderData storage o = buyOrderData[index];
require(o.owner == msg.sender);
if(o.amount > 0){
uint256 balance = SafeMath.mul(o.amount, o.unitPrice);
o.owner.send(balance);
}
o.unitPrice = 0;
o.amount = 0;
o.title = "title";
o.description = "description";
o.owner = 0;
}
function getBuyDemand(uint256 index) public view returns(address owner, string title, string description,
uint256 amount, uint256 unitPrice)
{
require(index < numberOfOrders);
BuyOrderData storage o = buyOrderData[index];
owner = o.owner;
title = o.title;
description = o.description;
amount = o.amount;
unitPrice = o.unitPrice;
}
function getLowestUnitPriceIdxFromBuy() public returns(uint256 lowestIdx)
{
uint256 lowestPrice = 2**256 - 1;
for (uint256 idx = 0; idx < numberOfOrders; idx++) {
BuyOrderData storage o = buyOrderData[idx];
//if empty
if (o.unitPrice == 0 || o.amount < 10) {
return idx;
}else if (o.unitPrice < lowestPrice) {
lowestPrice = o.unitPrice;
lowestIdx = idx;
}
}
}
//-------------------------Sell-----------------------------
function sellCrystalDemand(uint256 amount, uint256 unitPrice, string title, string description)
public isNotOver isCurrentRound limitSell
{
require(amount >= 1000);
require(unitPrice > 0);
updateCrytal(msg.sender);
PlyerData storage seller = players[msg.sender];
if(seller.crystals < amount * CRTSTAL_MINING_PERIOD){
revert();
}
uint256 highestIdx = getHighestUnitPriceIdxFromSell();
SellOrderData storage o = sellOrderData[highestIdx];
if(o.amount > 10 && unitPrice >= o.unitPrice){
revert();
}
if (o.owner != 0){
PlyerData storage prev = players[o.owner];
prev.crystals = SafeMath.add(prev.crystals, o.amount * CRTSTAL_MINING_PERIOD);
}
o.owner = msg.sender;
o.unitPrice = unitPrice;
o.title = title;
o.description = description;
o.amount = amount;
//sub crystals
seller.crystals = SafeMath.sub(seller.crystals, amount * CRTSTAL_MINING_PERIOD);
}
function buyCrystal(uint256 amount, uint256 index) public isNotOver isCurrentRound payable
{
require(index < numberOfOrders);
require(amount > 0);
SellOrderData storage o = sellOrderData[index];
require(amount <= o.amount);
require(msg.value >= amount * o.unitPrice);
PlyerData storage buyer = players[msg.sender];
uint256 price = SafeMath.mul(amount, o.unitPrice);
uint256 fee = devFee(price);
sponsor.send(fee);
administrator.transfer(fee);
buyer.crystals = SafeMath.add(buyer.crystals, amount * CRTSTAL_MINING_PERIOD);
o.amount = SafeMath.sub(o.amount, amount);
o.owner.send(SafeMath.div(price, 2));
}
function withdrawSellDemand(uint256 index) public isNotOver isCurrentRound
{
require(index < numberOfOrders);
SellOrderData storage o = sellOrderData[index];
require(o.owner == msg.sender);
if(o.amount > 0){
PlyerData storage p = players[o.owner];
p.crystals = SafeMath.add(p.crystals, o.amount * CRTSTAL_MINING_PERIOD);
}
o.unitPrice = 0;
o.amount = 0;
o.title = "title";
o.description = "description";
o.owner = 0;
}
function getSellDemand(uint256 index) public view returns(address owner, string title, string description,
uint256 amount, uint256 unitPrice)
{
require(index < numberOfOrders);
SellOrderData storage o = sellOrderData[index];
owner = o.owner;
title = o.title;
description = o.description;
amount = o.amount;
unitPrice = o.unitPrice;
}
function getHighestUnitPriceIdxFromSell() public returns(uint256 highestIdx)
{
uint256 highestPrice = 0;
for (uint256 idx = 0; idx < numberOfOrders; idx++) {
SellOrderData storage o = sellOrderData[idx];
//if empty
if (o.unitPrice == 0 || o.amount < 10) {
return idx;
}else if (o.unitPrice > highestPrice) {
highestPrice = o.unitPrice;
highestIdx = idx;
}
}
}
//--------------------------------------------------------------------------
// Other
//--------------------------------------------------------------------------
function devFee(uint256 amount) public view returns(uint256)
{
return SafeMath.div(SafeMath.mul(amount, 5), 100);
}
function getBalance() public view returns(uint256)
{
return this.balance;
}
function upgrade(address addr) public
{
require(msg.sender == administrator);
require(now < deadline - 82800);
uint256 balance = SafeMath.div(SafeMath.mul(this.balance, 90), 100);
administrator.send(SafeMath.div(SafeMath.mul(this.balance, 5), 100));
uint8[10] memory profit = [30,20,10,8,7,5,5,5,5,5];
for(uint256 idx = 0; idx < 10; idx++){
if(rankList[idx] != 0){
rankList[idx].send(SafeMath.div(SafeMath.mul(balance,profit[idx]),100));
}
}
selfdestruct(addr);
}
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
function updateHashrate(address addr) private
{
PlyerData storage p = players[addr];
uint256 hashrate = 0;
for (uint idx = 0; idx < numberOfMiners; idx++) {
MinerData storage m = minerData[idx];
hashrate = SafeMath.add(hashrate, SafeMath.mul(p.minerCount[idx], m.baseProduct));
}
p.hashrate = hashrate;
if(hashrate > RANK_LIST_LIMIT){
updateRankList(addr);
}
}
function updateCrytal(address addr) private
{
require(now > players[addr].lastUpdateTime);
if (players[addr].lastUpdateTime != 0) {
PlyerData storage p = players[addr];
uint256 secondsPassed = SafeMath.sub(now, p.lastUpdateTime);
uint256 revenue = getHashratePerDay(addr);
p.lastUpdateTime = now;
if (revenue > 0) {
revenue = SafeMath.mul(revenue, secondsPassed);
p.crystals = SafeMath.add(p.crystals, revenue);
}
}
}
function addReferralHashrate(address addr, uint256 hashrate) private view returns(uint256 personalProduction)
{
PlyerData storage p = players[addr];
if(p.referral_count < 5){
personalProduction = SafeMath.add(hashrate, p.referral_count * 10);
}else if(p.referral_count < 10){
personalProduction = SafeMath.add(hashrate, 50 + p.referral_count * 10);
}else{
personalProduction = SafeMath.add(hashrate, 200);
}
}
function getCurrentLevel(uint256 startingLevel, uint256 startingTime, uint256 halfLife) private view returns(uint256)
{
uint256 timePassed=SafeMath.sub(now, startingTime);
uint256 levelsPassed=SafeMath.div(timePassed, halfLife);
if (startingLevel < levelsPassed) {
return 0;
}
return SafeMath.sub(startingLevel, levelsPassed);
}
function getCurrentPrice(uint256 currentLevel) private view returns(uint256)
{
return SafeMath.mul(BASE_PRICE, 2**currentLevel);
}
function updateRankList(address addr) private returns(bool)
{
uint256 idx = 0;
PlyerData storage insert = players[addr];
PlyerData storage lastOne = players[rankList[19]];
if(insert.hashrate < lastOne.hashrate) {
return false;
}
address[21] memory tempList = rankList;
if(!inRankList(addr)){
tempList[20] = addr;
quickSort(tempList, 0, 20);
}else{
quickSort(tempList, 0, 19);
}
for(idx = 0;idx < 21; idx++){
if(tempList[idx] != rankList[idx]){
rankList[idx] = tempList[idx];
}
}
return true;
}
function inRankList(address addr) internal returns(bool)
{
for(uint256 idx = 0;idx < 20; idx++){
if(addr == rankList[idx]){
return true;
}
}
return false;
}
function quickSort(address[21] list, int left, int right) internal
{
int i = left;
int j = right;
if(i == j) return;
address addr = list[uint(left + (right - left) / 2)];
PlyerData storage p = players[addr];
while (i <= j) {
while (players[list[uint(i)]].hashrate > p.hashrate) i++;
while (p.hashrate > players[list[uint(j)]].hashrate) j--;
if (i <= j) {
(list[uint(i)], list[uint(j)]) = (list[uint(j)], list[uint(i)]);
i++;
j--;
}
}
if (left < j)
quickSort(list, left, j);
if (i < right)
quickSort(list, i, right);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"index","type":"uint256"}],"name":"sellCrystal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"unitPrice","type":"uint256"},{"name":"title","type":"string"},{"name":"description","type":"string"}],"name":"sellCrystalDemand","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"minerAddr","type":"address"}],"name":"getHashratePerDay","outputs":[{"name":"personalProduction","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getBoosterPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getPlayerData","outputs":[{"name":"crystals","type":"uint256"},{"name":"lastupdate","type":"uint256"},{"name":"hashratePerDay","type":"uint256"},{"name":"miners","type":"uint256[8]"},{"name":"hasBoost","type":"uint256"},{"name":"referral_count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idx","type":"uint256"}],"name":"getBoosterData","outputs":[{"name":"owner","type":"address"},{"name":"boostRate","type":"uint256"},{"name":"startingLevel","type":"uint256"},{"name":"startingTime","type":"uint256"},{"name":"currentPrice","type":"uint256"},{"name":"halfLife","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"devFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"unitPrice","type":"uint256"},{"name":"title","type":"string"},{"name":"description","type":"string"}],"name":"buyCrystalDemand","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"roundNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"minerNumbers","type":"uint256[]"}],"name":"buyMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"HALF_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getHighestUnitPriceIdxFromSell","outputs":[{"name":"highestIdx","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"withdrawBuyDemand","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sponsor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getSellDemand","outputs":[{"name":"owner","type":"address"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"amount","type":"uint256"},{"name":"unitPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROUND_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"withdrawSellDemand","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ref","type":"address"}],"name":"getFreeMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSponsorFee","outputs":[{"name":"sponsorFee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRankList","outputs":[{"name":"","type":"address[21]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"hasBooster","outputs":[{"name":"boostIdx","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"lottery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CRTSTAL_MINING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idx","type":"uint256"}],"name":"buyBooster","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"getLowestUnitPriceIdxFromBuy","outputs":[{"name":"lowestIdx","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"becomeSponsor","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"sponsorLevel","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"administrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getBuyDemand","outputs":[{"name":"owner","type":"address"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"amount","type":"uint256"},{"name":"unitPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"index","type":"uint256"}],"name":"buyCrystal","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]Contract Creation Code
608060405260008060006101000a81548160ff02191690831515021790555060006001556201518060035561708060045562093a806005556611c37937e08000600655612710600755624c4b4060085534801561005b57600080fd5b5033602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a819055506005600c819055506005600e819055506015601181905550606060405190810160405280600a8152602001600a8152602001600a815250600960008081526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506060604051908101604052806064815260200160c881526020016002815250600960006001815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060606040519081016040528061019081526020016103208152602001600481525060096000600281526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506060604051908101604052806106408152602001610c808152602001600881525060096000600381526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506060604051908101604052806119008152602001612580815260200160108152506009600060048152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050606060405190810160405280616400815260200161960081526020016020815250600960006005815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060606040519081016040528062032000815260200162032000815260200160408152506009600060068152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050606060405190810160405280621900008152602001620c800081526020016201000081525060096000600781526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506150658061037d6000396000f3006080604052600436106101b7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806308d317dd146101b95780630900f010146101f05780630dda20d11461023357806312065fe0146102f6578063158ef93e146103215780632243fb1514610350578063294cf912146103a757806329dcb0cf146103e85780632aa531d91461041357806339901be8146104b55780633bc0461a1461054557806341fe0a24146105865780634e2786fb1461063c5780634ec2d0b6146106675780634f9d482a146106cd57806368381b96146106f8578063718b0a321461072357806377c936621461075057806378473485146107a75780637892fd29146108fa5780637a6e9e4114610925578063898644cc146109525780639f8ff91d14610995578063a1a200c5146109c0578063ad5b718914610a13578063ba13a57214610a6a578063cee0b4fe14610a81578063d223926f14610aac578063d60207c714610acc578063d65ab5f214610af7578063e3e9bc3f14610b0e578063ea6f1c4a14610b18578063f53d0a8e14610b43578063f737f27414610b9a578063f9d7020014610ced575b005b3480156101c557600080fd5b506101ee6004803603810190808035906020019092919080359060200190929190505050610d17565b005b3480156101fc57600080fd5b50610231600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d3565b005b34801561023f57600080fd5b506102f46004803603810190808035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611685565b005b34801561030257600080fd5b5061030b611cce565b6040518082815260200191505060405180910390f35b34801561032d57600080fd5b50610336611ced565b604051808215151515815260200191505060405180910390f35b34801561035c57600080fd5b50610391600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cff565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103d260048036038101908080359060200190929190505050611da4565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd611de3565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b50610454600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de9565b6040518087815260200186815260200185815260200184600860200280838360005b83811015610491578082015181840152602081019050610476565b50505050905001838152602001828152602001965050505050505060405180910390f35b3480156104c157600080fd5b506104e060048036038101908080359060200190929190505050611f0b565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561055157600080fd5b5061057060048036038101908080359060200190929190505050611fd5565b6040518082815260200191505060405180910390f35b61063a6004803603810190808035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ff3565b005b34801561064857600080fd5b5061065161224a565b6040518082815260200191505060405180910390f35b34801561067357600080fd5b506106cb60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612250565b005b3480156106d957600080fd5b506106e26125a6565b6040518082815260200191505060405180910390f35b34801561070457600080fd5b5061070d6125ac565b6040518082815260200191505060405180910390f35b34801561072f57600080fd5b5061074e60048036038101908080359060200190929190505050612629565b005b34801561075c57600080fd5b506107656128c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b357600080fd5b506107d2600480360381019080803590602001909291905050506128e7565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610854578082015181840152602081019050610839565b50505050905090810190601f1680156108815780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156108ba57808201518184015260208101905061089f565b50505050905090810190601f1680156108e75780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561090657600080fd5b5061090f612a93565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b5061095060048036038101908080359060200190929190505050612a99565b005b34801561095e57600080fd5b50610993600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d46565b005b3480156109a157600080fd5b506109aa612f8c565b6040518082815260200191505060405180910390f35b3480156109cc57600080fd5b506109d5612fa8565b6040518082601560200280838360005b83811015610a005780820151818401526020810190506109e5565b5050505090500191505060405180910390f35b348015610a1f57600080fd5b50610a54600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613029565b6040518082815260200191505060405180910390f35b348015610a7657600080fd5b50610a7f6130d2565b005b348015610a8d57600080fd5b50610a96613351565b6040518082815260200191505060405180910390f35b610aca60048036038101908080359060200190929190505050613357565b005b348015610ad857600080fd5b50610ae161361f565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c6136bb565b005b610b16613756565b005b348015610b2457600080fd5b50610b2d6138c1565b6040518082815260200191505060405180910390f35b348015610b4f57600080fd5b50610b586138c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ba657600080fd5b50610bc5600480360381019080803590602001909291905050506138ed565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610c47578082015181840152602081019050610c2c565b50505050905090810190601f168015610c745780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015610cad578082015181840152602081019050610c92565b50505050905090810190601f168015610cda5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610d156004803603810190808035906020019092919080359060200190929190505050613a99565b005b60008060008060006002544211151515610d3057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515610d6a57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515610dbc57600080fd5b6000806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600854836002015411151561107857600e5489101515610e2157600080fd5b60008a111515610e3057600080fd5b600f60008a8152602001908152602001600020975087600401548a11151515610e5857600080fd5b610e6133613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650600b60008960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002095506003548a02876003015410151515610f1e57600080fd5b610f2c8a8960030154613e8a565b9450610f3785611fd5565b9350602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050610ffb86600301546003548c02613ec5565b866003018190555061101587600301546003548c02613ee3565b876003018190555061102b88600401548b613ee3565b88600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc611058876002613efc565b9081150290604051600060405180830381858888f19350505050506113c7565b6000915060006012600960158110151561108e57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561115157600b6000601260096015811015156110e157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061114e81600201546005613e8a565b91505b8183600201541115151561116457600080fd5b600e548910151561117457600080fd5b60008a11151561118357600080fd5b600f60008a8152602001908152602001600020975087600401548a111515156111ab57600080fd5b6111b433613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650600b60008960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002095506003548a0287600301541015151561127157600080fd5b61127f8a8960030154613e8a565b945061128a85611fd5565b9350602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050505061134e86600301546003548c02613ec5565b866003018190555061136887600301546003548c02613ee3565b876003018190555061137e88600401548b613ee3565b88600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc6113ab876002613efc565b9081150290604051600060405180830381858888f19350505050505b50505050505050505050565b60006113dd614e86565b6000602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143b57600080fd5b62014370600254034210151561145057600080fd5b61147c6114753073ffffffffffffffffffffffffffffffffffffffff1631605a613e8a565b6064613efc565b9250602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6114e66114df3073ffffffffffffffffffffffffffffffffffffffff16316005613e8a565b6064613efc565b9081150290604051600060405180830381858888f193505050505061014060405190810160405280601e60ff168152602001601460ff168152602001600a60ff168152602001600860ff168152602001600760ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152509150600090505b600a81101561166c57600060128260158110151561159157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561165f576012816015811015156115df57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61164361163c868686600a8110151561162f57fe5b602002015160ff16613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b8080600101915050611577565b8373ffffffffffffffffffffffffffffffffffffffff16ff5b600080600080600254421115151561169c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156116d657600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561172857600080fd5b6000806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060085483600201541115156119ab576103e88b1015151561178e57600080fd5b60008a11151561179d57600080fd5b6117a633613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002096506003548b02876003015410156117fc57600080fd5b6118046125ac565b9550601060008781526020019081526020016000209450600a8560040154118015611833575084600301548a10155b1561183d57600080fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561190557600b60008660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002093506118fc8460030154600354876004015402613ec5565b84600301819055505b338560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089856003018190555088856001019080519060200190611969929190614eaa565b5087856002019080519060200190611982929190614eaa565b508a856004018190555061199e87600301546003548d02613ee3565b8760030181905550611cc1565b600091506000601260096015811015156119c157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a8457600b600060126009601581101515611a1457fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611a8181600201546005613e8a565b91505b81836002015411151515611a9757600080fd5b6103e88b10151515611aa857600080fd5b60008a111515611ab757600080fd5b611ac033613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002096506003548b0287600301541015611b1657600080fd5b611b1e6125ac565b9550601060008781526020019081526020016000209450600a8560040154118015611b4d575084600301548a10155b15611b5757600080fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1f57600b60008660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350611c168460030154600354876004015402613ec5565b84600301819055505b338560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089856003018190555088856001019080519060200190611c83929190614eaa565b5087856002019080519060200190611c9c929190614eaa565b508a8560040181905550611cb887600301546003548d02613ee3565b87600301819055505b5050505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000809054906101000a900460ff1681565b600080600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250611d54858460020154613f17565b9350611d5f85613029565b91506103e782141515611d9c57600d60008381526020019081526020016000209050611d99611d92858360010154613e8a565b6064613efc565b93505b505050919050565b600080600d60008481526020019081526020016000209050611ddb611dd6826002015483600301548460040154613fbe565b614002565b915050919050565b60025481565b6000806000611df6614f2a565b600080600080600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506001548260000154141515611e7857600b60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091505b611e888260030154600354613efc565b975081600401549650611e9f898360020154613f17565b955060009050600090505b600a54811015611eee57816001016000828152602001908152602001600020548582600881101515611ed857fe5b6020020181815250508080600101915050611eaa565b611ef789613029565b935081600501549250505091939550919395565b600080600080600080600c5487101515611f2457600080fd5b600d600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600d6000888152602001908152602001600020600101549450600d6000888152602001908152602001600020600201549350600d6000888152602001908152602001600020600301549250611fb187611da4565b9150600d600088815260200190815260200160002060040154905091939550919395565b6000611fec611fe5836005613e8a565b6064613efc565b9050919050565b6000806000600254421115151561200957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561204357600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561209557600080fd5b6000861115156120a457600080fd5b6103e887101515156120b557600080fd5b34868802111515156120c657600080fd5b6120ce61361f565b9250600f60008481526020019081526020016000209150600a82600401541180156120fd575081600301548611155b1561210757600080fd5b61211982600401548360030154613e8a565b905060008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121ba578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050505b338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508582600301819055508482600101908051906020019061221e929190614eaa565b5083826002019080519060200190612237929190614eaa565b5086826004018190555050505050505050565b60015481565b600061225a614f4e565b6000806000600254421115151561227057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156122aa57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156122fc57600080fd5b600a54865114151561230d57600080fd5b600094505b600a548510156123b2576009600086815260200190815260200160002060606040519081016040529081600082015481526020016001820154815260200160028201548152505093508360400151868681518110151561236e57fe5b90602001906020020151118061239b57506000868681518110151561238f57fe5b90602001906020020151105b156123a557600080fd5b8480600101955050612312565b6123bb33613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000915060009050600094505b600a5485101561249c57858581518110151561242157fe5b906020019060200201519050600081111561248f5760096000868152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050935061248c82612487866000015184613e8a565b613ec5565b91505b8480600101955050612409565b6124a882600354613e8a565b915081836003015410156124bb57600080fd5b600094505b600a5485101561257f5785858151811015156124d857fe5b90602001906020020151905060008111156125725760096000868152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050935061255884604001516125538560010160008981526020019081526020016000205484613ec5565b61401a565b836001016000878152602001908152602001600020819055505b84806001019550506124c0565b61258d836003015483613ee3565b836003018190555061259e33614033565b505050505050565b60045481565b60008060008060009250600091505b600e54821015612622576010600083815260200190815260200160002090506000816003015414806125f15750600a8160040154105b156125fe57819350612623565b828160030154111561261557806003015492508193505b81806001019250506125bb565b5b50505090565b600080600254421115151561263d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561267757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156126c957600080fd5b600e54831015156126d957600080fd5b600f600084815260200190815260200160002091503373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561274c57600080fd5b6000826004015411156127c85761276b82600401548360030154613e8a565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050505b60008260030181905550600082600401819055506040805190810160405280600581526020017f7469746c65000000000000000000000000000000000000000000000000000000815250826001019080519060200190612829929190614eaa565b506040805190810160405280600b81526020017f6465736372697074696f6e000000000000000000000000000000000000000000815250826002019080519060200190612877929190614eaa565b5060008260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000806000600e548710151561290157600080fd5b6010600088815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129d55780601f106129aa576101008083540402835291602001916129d5565b820191906000526020600020905b8154815290600101906020018083116129b857829003601f168201915b50505050509450806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a745780601f10612a4957610100808354040283529160200191612a74565b820191906000526020600020905b815481529060010190602001808311612a5757829003601f168201915b5050505050935080600401549250806003015491505091939590929450565b60055481565b6000806002544211151515612aad57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515612ae757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612b3957600080fd5b600e5483101515612b4957600080fd5b6010600084815260200190815260200160002091503373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612bbc57600080fd5b600082600401541115612c4d57600b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612c448160030154600354846004015402613ec5565b81600301819055505b60008260030181905550600082600401819055506040805190810160405280600581526020017f7469746c65000000000000000000000000000000000000000000000000000000815250826001019080519060200190612cae929190614eaa565b506040805190810160405280600b81526020017f6465736372697074696f6e000000000000000000000000000000000000000000815250826002019080519060200190612cfc929190614eaa565b5060008260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000806000806002544211151515612d5d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515612d9757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515612dea57600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600084600201541115612e7057600192505b600a54831015612e6f576000846001016000858152602001908152602001600020819055508280600101935050612e3d565b5b60008460030181905550600154846000018190555042846004018190555060008460050181905550600184600101600080815260200190815260200160002081905550600960008081526020019081526020016000209150816001015484600201819055503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515612f8557600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060015481600001541415612f8457612f6285613d51565b60018460050181905550612f7b81600501546001613ec5565b81600501819055505b5b5050505050565b6000612fa3612f9e6028546001613ec5565b614002565b905090565b612fb0614f70565b601260158060200260405190810160405280929190826015801561301f576020028201915b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612fd5575b5050505050905090565b60008060006103e79250600091505b600c548210156130cb57600182600c54030390508373ffffffffffffffffffffffffffffffffffffffff16600d600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130be578092506130cb565b8180600101925050613038565b5050919050565b60006130dc614e86565b6000600254421115156130ee57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561312857600080fd5b61315461314d3073ffffffffffffffffffffffffffffffffffffffff1631605a613e8a565b6064613efc565b9250602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6131be6131b73073ffffffffffffffffffffffffffffffffffffffff16316005613e8a565b6064613efc565b9081150290604051600060405180830381858888f193505050505061014060405190810160405280601e60ff168152602001601460ff168152602001600a60ff168152602001600860ff168152602001600760ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152509150600090505b600a81101561334457600060128260158110151561326957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613337576012816015811015156132b757fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61331b613314868686600a8110151561330757fe5b602002015160ff16613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b808060010191505061324f565b61334c614102565b505050565b60035481565b6000806000600254421115151561336d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156133a757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156133f957600080fd5b600c548410151561340957600080fd5b600d6000858152602001908152602001600020925061342784611da4565b34108061348357508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561348d57600080fd5b8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6135016134fc87611da4565b611fd5565b9081150290604051600060405180830381858888f193505050505060008273ffffffffffffffffffffffffffffffffffffffff1614151561358f578173ffffffffffffffffffffffffffffffffffffffff166108fc61357361356c61356588611da4565b6037613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b61359833613d51565b6135a182613d51565b6135b8836002015484600301548560040154613fbe565b90506135c5816001613ec5565b8360020181905550428360030181905550338360000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250600091505b600e548210156136b457600f600083815260200190815260200160002090506000816003015414806136835750600a8160040154105b15613690578193506136b5565b82816003015410156136a757806003015492508193505b818060010192505061364d565b5b50505090565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561371757600080fd5b6000809054906101000a900460ff1615151561373257600080fd5b61373a614102565b60016000806101000a81548160ff021916908315150217905550565b600254421115151561376757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156137a157600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156137f357600080fd5b6137fb612f8c565b341015151561380957600080fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613850602854614002565b9081150290604051600060405180830381858888f193505050505033602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506138b96028546001613ec5565b602881905550565b60285481565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000806000600e548710151561390757600080fd5b600f600088815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156139db5780601f106139b0576101008083540402835291602001916139db565b820191906000526020600020905b8154815290600101906020018083116139be57829003601f168201915b50505050509450806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613a7a5780601f10613a4f57610100808354040283529160200191613a7a565b820191906000526020600020905b815481529060010190602001808311613a5d57829003601f168201915b5050505050935080600401549250806003015491505091939590929450565b6000806000806002544211151515613ab057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515613aea57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515613b3c57600080fd5b600e5485101515613b4c57600080fd5b600086111515613b5b57600080fd5b60106000868152602001908152602001600020935083600401548611151515613b8357600080fd5b836003015486023410151515613b9857600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250613be7868560030154613e8a565b9150613bf282611fd5565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613cb4573d6000803e3d6000fd5b50613cc783600301546003548802613ec5565b8360030181905550613cdd846004015487613ee3565b84600401819055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613d2e846002613efc565b9081150290604051600060405180830381858888f1935050505050505050505050565b6000806000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015442111515613da657600080fd5b6000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141515613e8457600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250613e41428460040154613ee3565b9150613e4c84611cff565b90504283600401819055506000811115613e8357613e6a8183613e8a565b9050613e7a836003015482613ec5565b83600301819055505b5b50505050565b6000806000841415613e9f5760009150613ebe565b8284029050828482811515613eb057fe5b04141515613eba57fe5b8091505b5092915050565b6000808284019050838110151515613ed957fe5b8091505092915050565b6000828211151515613ef157fe5b818303905092915050565b6000808284811515613f0a57fe5b0490508091505092915050565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600581600501541015613f8057613f7983600a836005015402613ec5565b9150613fb7565b600a81600501541015613fa857613fa183600a836005015402603201613ec5565b9150613fb6565b613fb38360c8613ec5565b91505b5b5092915050565b6000806000613fcd4286613ee3565b9150613fd98285613efc565b905080861015613fec5760009250613ff9565b613ff68682613ee3565b92505b50509392505050565b60006140136006548360020a613e8a565b9050919050565b6000818310614029578161402b565b825b905092915050565b600080600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060009250600091505b600a548210156140dd576009600083815260200190815260200160002090506140ce836140c9866001016000868152602001908152602001600020548460010154613e8a565b613ec5565b92508180600101925050614083565b8284600201819055506007548311156140fb576140f985614131565b505b5050505050565b61410e42600554613ec5565b6002819055506141216001546001613ec5565b60018190555061412f6143fd565b565b60008060008061413f614f70565b60009350600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600b60006012601360158110151561419857fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915081600201548360020154101561420f57600094506143f4565b601260158060200260405190810160405280929190826015801561427e576020028201915b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614234575b5050505050905061428e86614b8c565b15156142ed57858160146015811015156142a457fe5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142e88160006014614c22565b6142fb565b6142fa8160006013614c22565b5b600093505b60158410156143ef5760128460158110151561431857fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16818560158110151561435e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff161415156143e257808460158110151561438e57fe5b60200201516012856015811015156143a257fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8380600101945050614300565b600194505b50505050919050565b6000602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660288190555060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016096815260200160018152602001428152602001600454815250600d600080815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160af815260200160018152602001428152602001600454815250600d60006001815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160c8815260200160018152602001428152602001600454815250600d60006002815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160e1815260200160018152602001428152602001600454815250600d60006003815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160fa815260200160028152602001428152602001600454815250600d60006004815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040155905050600090505b600e54811015614b1d5760a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600581526020017f7469746c6500000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600b81526020017f6465736372697074696f6e0000000000000000000000000000000000000000008152508152602001600081526020016000815250600f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190614985929190614f94565b5060408201518160020190805190602001906149a2929190614f94565b50606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600581526020017f7469746c6500000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600b81526020017f6465736372697074696f6e00000000000000000000000000000000000000000081525081526020016000815260200160008152506010600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190614adb929190614f94565b506040820151816002019080519060200190614af8929190614f94565b506060820151816003015560808201518160040155905050808060010191505061485a565b600090505b601154811015614b89576000601282601581101515614b3d57fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050614b22565b50565b600080600090505b6014811015614c1757601281601581101515614bac57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614c0a5760019150614c1c565b8080600101915050614b94565b600091505b50919050565b60008060008085935084925082841415614c3b57614e7d565b866002878703811515614c4a57fe5b058701601581101515614c5957fe5b60200201519150600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090505b8284131515614e54575b8060020154600b60008987601581101515614cc357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115614d19578380600101945050614cac565b5b600b60008885601581101515614d2c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481600201541115614d8857828060019003935050614d1a565b8284131515614e4f578683601581101515614d9f57fe5b60200201518785601581101515614db257fe5b60200201518886601581101515614dc557fe5b602002018986601581101515614dd757fe5b602002018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250505083806001019450508280600190039350505b614ca2565b82861215614e6857614e67878785614c22565b5b84841215614e7c57614e7b878587614c22565b5b5b50505050505050565b61014060405190810160405280600a90602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614eeb57805160ff1916838001178555614f19565b82800160010185558215614f19579182015b82811115614f18578251825591602001919060010190614efd565b5b509050614f269190615014565b5090565b61010060405190810160405280600890602082028038833980820191505090505090565b6060604051908101604052806000815260200160008152602001600081525090565b6102a060405190810160405280601590602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fd557805160ff1916838001178555615003565b82800160010185558215615003579182015b82811115615002578251825591602001919060010190614fe7565b5b5090506150109190615014565b5090565b61503691905b8082111561503257600081600090555060010161501a565b5090565b905600a165627a7a723058208741b017cd7a7acc68438c65607c89c61a01cbfd59575f7d51e634f5f1195a430029
Deployed Bytecode
0x6080604052600436106101b7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806308d317dd146101b95780630900f010146101f05780630dda20d11461023357806312065fe0146102f6578063158ef93e146103215780632243fb1514610350578063294cf912146103a757806329dcb0cf146103e85780632aa531d91461041357806339901be8146104b55780633bc0461a1461054557806341fe0a24146105865780634e2786fb1461063c5780634ec2d0b6146106675780634f9d482a146106cd57806368381b96146106f8578063718b0a321461072357806377c936621461075057806378473485146107a75780637892fd29146108fa5780637a6e9e4114610925578063898644cc146109525780639f8ff91d14610995578063a1a200c5146109c0578063ad5b718914610a13578063ba13a57214610a6a578063cee0b4fe14610a81578063d223926f14610aac578063d60207c714610acc578063d65ab5f214610af7578063e3e9bc3f14610b0e578063ea6f1c4a14610b18578063f53d0a8e14610b43578063f737f27414610b9a578063f9d7020014610ced575b005b3480156101c557600080fd5b506101ee6004803603810190808035906020019092919080359060200190929190505050610d17565b005b3480156101fc57600080fd5b50610231600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d3565b005b34801561023f57600080fd5b506102f46004803603810190808035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611685565b005b34801561030257600080fd5b5061030b611cce565b6040518082815260200191505060405180910390f35b34801561032d57600080fd5b50610336611ced565b604051808215151515815260200191505060405180910390f35b34801561035c57600080fd5b50610391600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cff565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103d260048036038101908080359060200190929190505050611da4565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd611de3565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b50610454600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de9565b6040518087815260200186815260200185815260200184600860200280838360005b83811015610491578082015181840152602081019050610476565b50505050905001838152602001828152602001965050505050505060405180910390f35b3480156104c157600080fd5b506104e060048036038101908080359060200190929190505050611f0b565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561055157600080fd5b5061057060048036038101908080359060200190929190505050611fd5565b6040518082815260200191505060405180910390f35b61063a6004803603810190808035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ff3565b005b34801561064857600080fd5b5061065161224a565b6040518082815260200191505060405180910390f35b34801561067357600080fd5b506106cb60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612250565b005b3480156106d957600080fd5b506106e26125a6565b6040518082815260200191505060405180910390f35b34801561070457600080fd5b5061070d6125ac565b6040518082815260200191505060405180910390f35b34801561072f57600080fd5b5061074e60048036038101908080359060200190929190505050612629565b005b34801561075c57600080fd5b506107656128c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b357600080fd5b506107d2600480360381019080803590602001909291905050506128e7565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610854578082015181840152602081019050610839565b50505050905090810190601f1680156108815780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156108ba57808201518184015260208101905061089f565b50505050905090810190601f1680156108e75780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561090657600080fd5b5061090f612a93565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b5061095060048036038101908080359060200190929190505050612a99565b005b34801561095e57600080fd5b50610993600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d46565b005b3480156109a157600080fd5b506109aa612f8c565b6040518082815260200191505060405180910390f35b3480156109cc57600080fd5b506109d5612fa8565b6040518082601560200280838360005b83811015610a005780820151818401526020810190506109e5565b5050505090500191505060405180910390f35b348015610a1f57600080fd5b50610a54600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613029565b6040518082815260200191505060405180910390f35b348015610a7657600080fd5b50610a7f6130d2565b005b348015610a8d57600080fd5b50610a96613351565b6040518082815260200191505060405180910390f35b610aca60048036038101908080359060200190929190505050613357565b005b348015610ad857600080fd5b50610ae161361f565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c6136bb565b005b610b16613756565b005b348015610b2457600080fd5b50610b2d6138c1565b6040518082815260200191505060405180910390f35b348015610b4f57600080fd5b50610b586138c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ba657600080fd5b50610bc5600480360381019080803590602001909291905050506138ed565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610c47578082015181840152602081019050610c2c565b50505050905090810190601f168015610c745780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015610cad578082015181840152602081019050610c92565b50505050905090810190601f168015610cda5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610d156004803603810190808035906020019092919080359060200190929190505050613a99565b005b60008060008060006002544211151515610d3057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515610d6a57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515610dbc57600080fd5b6000806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600854836002015411151561107857600e5489101515610e2157600080fd5b60008a111515610e3057600080fd5b600f60008a8152602001908152602001600020975087600401548a11151515610e5857600080fd5b610e6133613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650600b60008960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002095506003548a02876003015410151515610f1e57600080fd5b610f2c8a8960030154613e8a565b9450610f3785611fd5565b9350602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050610ffb86600301546003548c02613ec5565b866003018190555061101587600301546003548c02613ee3565b876003018190555061102b88600401548b613ee3565b88600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc611058876002613efc565b9081150290604051600060405180830381858888f19350505050506113c7565b6000915060006012600960158110151561108e57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561115157600b6000601260096015811015156110e157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061114e81600201546005613e8a565b91505b8183600201541115151561116457600080fd5b600e548910151561117457600080fd5b60008a11151561118357600080fd5b600f60008a8152602001908152602001600020975087600401548a111515156111ab57600080fd5b6111b433613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650600b60008960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002095506003548a0287600301541015151561127157600080fd5b61127f8a8960030154613e8a565b945061128a85611fd5565b9350602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050505061134e86600301546003548c02613ec5565b866003018190555061136887600301546003548c02613ee3565b876003018190555061137e88600401548b613ee3565b88600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc6113ab876002613efc565b9081150290604051600060405180830381858888f19350505050505b50505050505050505050565b60006113dd614e86565b6000602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143b57600080fd5b62014370600254034210151561145057600080fd5b61147c6114753073ffffffffffffffffffffffffffffffffffffffff1631605a613e8a565b6064613efc565b9250602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6114e66114df3073ffffffffffffffffffffffffffffffffffffffff16316005613e8a565b6064613efc565b9081150290604051600060405180830381858888f193505050505061014060405190810160405280601e60ff168152602001601460ff168152602001600a60ff168152602001600860ff168152602001600760ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152509150600090505b600a81101561166c57600060128260158110151561159157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561165f576012816015811015156115df57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61164361163c868686600a8110151561162f57fe5b602002015160ff16613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b8080600101915050611577565b8373ffffffffffffffffffffffffffffffffffffffff16ff5b600080600080600254421115151561169c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156116d657600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561172857600080fd5b6000806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060085483600201541115156119ab576103e88b1015151561178e57600080fd5b60008a11151561179d57600080fd5b6117a633613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002096506003548b02876003015410156117fc57600080fd5b6118046125ac565b9550601060008781526020019081526020016000209450600a8560040154118015611833575084600301548a10155b1561183d57600080fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561190557600b60008660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002093506118fc8460030154600354876004015402613ec5565b84600301819055505b338560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089856003018190555088856001019080519060200190611969929190614eaa565b5087856002019080519060200190611982929190614eaa565b508a856004018190555061199e87600301546003548d02613ee3565b8760030181905550611cc1565b600091506000601260096015811015156119c157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a8457600b600060126009601581101515611a1457fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611a8181600201546005613e8a565b91505b81836002015411151515611a9757600080fd5b6103e88b10151515611aa857600080fd5b60008a111515611ab757600080fd5b611ac033613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002096506003548b0287600301541015611b1657600080fd5b611b1e6125ac565b9550601060008781526020019081526020016000209450600a8560040154118015611b4d575084600301548a10155b15611b5757600080fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1f57600b60008660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350611c168460030154600354876004015402613ec5565b84600301819055505b338560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089856003018190555088856001019080519060200190611c83929190614eaa565b5087856002019080519060200190611c9c929190614eaa565b508a8560040181905550611cb887600301546003548d02613ee3565b87600301819055505b5050505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000809054906101000a900460ff1681565b600080600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250611d54858460020154613f17565b9350611d5f85613029565b91506103e782141515611d9c57600d60008381526020019081526020016000209050611d99611d92858360010154613e8a565b6064613efc565b93505b505050919050565b600080600d60008481526020019081526020016000209050611ddb611dd6826002015483600301548460040154613fbe565b614002565b915050919050565b60025481565b6000806000611df6614f2a565b600080600080600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506001548260000154141515611e7857600b60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091505b611e888260030154600354613efc565b975081600401549650611e9f898360020154613f17565b955060009050600090505b600a54811015611eee57816001016000828152602001908152602001600020548582600881101515611ed857fe5b6020020181815250508080600101915050611eaa565b611ef789613029565b935081600501549250505091939550919395565b600080600080600080600c5487101515611f2457600080fd5b600d600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600d6000888152602001908152602001600020600101549450600d6000888152602001908152602001600020600201549350600d6000888152602001908152602001600020600301549250611fb187611da4565b9150600d600088815260200190815260200160002060040154905091939550919395565b6000611fec611fe5836005613e8a565b6064613efc565b9050919050565b6000806000600254421115151561200957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561204357600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561209557600080fd5b6000861115156120a457600080fd5b6103e887101515156120b557600080fd5b34868802111515156120c657600080fd5b6120ce61361f565b9250600f60008481526020019081526020016000209150600a82600401541180156120fd575081600301548611155b1561210757600080fd5b61211982600401548360030154613e8a565b905060008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121ba578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050505b338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508582600301819055508482600101908051906020019061221e929190614eaa565b5083826002019080519060200190612237929190614eaa565b5086826004018190555050505050505050565b60015481565b600061225a614f4e565b6000806000600254421115151561227057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156122aa57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156122fc57600080fd5b600a54865114151561230d57600080fd5b600094505b600a548510156123b2576009600086815260200190815260200160002060606040519081016040529081600082015481526020016001820154815260200160028201548152505093508360400151868681518110151561236e57fe5b90602001906020020151118061239b57506000868681518110151561238f57fe5b90602001906020020151105b156123a557600080fd5b8480600101955050612312565b6123bb33613d51565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000915060009050600094505b600a5485101561249c57858581518110151561242157fe5b906020019060200201519050600081111561248f5760096000868152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050935061248c82612487866000015184613e8a565b613ec5565b91505b8480600101955050612409565b6124a882600354613e8a565b915081836003015410156124bb57600080fd5b600094505b600a5485101561257f5785858151811015156124d857fe5b90602001906020020151905060008111156125725760096000868152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050935061255884604001516125538560010160008981526020019081526020016000205484613ec5565b61401a565b836001016000878152602001908152602001600020819055505b84806001019550506124c0565b61258d836003015483613ee3565b836003018190555061259e33614033565b505050505050565b60045481565b60008060008060009250600091505b600e54821015612622576010600083815260200190815260200160002090506000816003015414806125f15750600a8160040154105b156125fe57819350612623565b828160030154111561261557806003015492508193505b81806001019250506125bb565b5b50505090565b600080600254421115151561263d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561267757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156126c957600080fd5b600e54831015156126d957600080fd5b600f600084815260200190815260200160002091503373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561274c57600080fd5b6000826004015411156127c85761276b82600401548360030154613e8a565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050505b60008260030181905550600082600401819055506040805190810160405280600581526020017f7469746c65000000000000000000000000000000000000000000000000000000815250826001019080519060200190612829929190614eaa565b506040805190810160405280600b81526020017f6465736372697074696f6e000000000000000000000000000000000000000000815250826002019080519060200190612877929190614eaa565b5060008260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000806000600e548710151561290157600080fd5b6010600088815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129d55780601f106129aa576101008083540402835291602001916129d5565b820191906000526020600020905b8154815290600101906020018083116129b857829003601f168201915b50505050509450806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a745780601f10612a4957610100808354040283529160200191612a74565b820191906000526020600020905b815481529060010190602001808311612a5757829003601f168201915b5050505050935080600401549250806003015491505091939590929450565b60055481565b6000806002544211151515612aad57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515612ae757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612b3957600080fd5b600e5483101515612b4957600080fd5b6010600084815260200190815260200160002091503373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612bbc57600080fd5b600082600401541115612c4d57600b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612c448160030154600354846004015402613ec5565b81600301819055505b60008260030181905550600082600401819055506040805190810160405280600581526020017f7469746c65000000000000000000000000000000000000000000000000000000815250826001019080519060200190612cae929190614eaa565b506040805190810160405280600b81526020017f6465736372697074696f6e000000000000000000000000000000000000000000815250826002019080519060200190612cfc929190614eaa565b5060008260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000806000806002544211151515612d5d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515612d9757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515612dea57600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600084600201541115612e7057600192505b600a54831015612e6f576000846001016000858152602001908152602001600020819055508280600101935050612e3d565b5b60008460030181905550600154846000018190555042846004018190555060008460050181905550600184600101600080815260200190815260200160002081905550600960008081526020019081526020016000209150816001015484600201819055503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515612f8557600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060015481600001541415612f8457612f6285613d51565b60018460050181905550612f7b81600501546001613ec5565b81600501819055505b5b5050505050565b6000612fa3612f9e6028546001613ec5565b614002565b905090565b612fb0614f70565b601260158060200260405190810160405280929190826015801561301f576020028201915b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612fd5575b5050505050905090565b60008060006103e79250600091505b600c548210156130cb57600182600c54030390508373ffffffffffffffffffffffffffffffffffffffff16600d600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130be578092506130cb565b8180600101925050613038565b5050919050565b60006130dc614e86565b6000600254421115156130ee57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561312857600080fd5b61315461314d3073ffffffffffffffffffffffffffffffffffffffff1631605a613e8a565b6064613efc565b9250602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6131be6131b73073ffffffffffffffffffffffffffffffffffffffff16316005613e8a565b6064613efc565b9081150290604051600060405180830381858888f193505050505061014060405190810160405280601e60ff168152602001601460ff168152602001600a60ff168152602001600860ff168152602001600760ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152602001600560ff168152509150600090505b600a81101561334457600060128260158110151561326957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613337576012816015811015156132b757fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61331b613314868686600a8110151561330757fe5b602002015160ff16613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b808060010191505061324f565b61334c614102565b505050565b60035481565b6000806000600254421115151561336d57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156133a757600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156133f957600080fd5b600c548410151561340957600080fd5b600d6000858152602001908152602001600020925061342784611da4565b34108061348357508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561348d57600080fd5b8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6135016134fc87611da4565b611fd5565b9081150290604051600060405180830381858888f193505050505060008273ffffffffffffffffffffffffffffffffffffffff1614151561358f578173ffffffffffffffffffffffffffffffffffffffff166108fc61357361356c61356588611da4565b6037613e8a565b6064613efc565b9081150290604051600060405180830381858888f19350505050505b61359833613d51565b6135a182613d51565b6135b8836002015484600301548560040154613fbe565b90506135c5816001613ec5565b8360020181905550428360030181905550338360000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250600091505b600e548210156136b457600f600083815260200190815260200160002090506000816003015414806136835750600a8160040154105b15613690578193506136b5565b82816003015410156136a757806003015492508193505b818060010192505061364d565b5b50505090565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561371757600080fd5b6000809054906101000a900460ff1615151561373257600080fd5b61373a614102565b60016000806101000a81548160ff021916908315150217905550565b600254421115151561376757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156137a157600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156137f357600080fd5b6137fb612f8c565b341015151561380957600080fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613850602854614002565b9081150290604051600060405180830381858888f193505050505033602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506138b96028546001613ec5565b602881905550565b60285481565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000806000600e548710151561390757600080fd5b600f600088815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156139db5780601f106139b0576101008083540402835291602001916139db565b820191906000526020600020905b8154815290600101906020018083116139be57829003601f168201915b50505050509450806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613a7a5780601f10613a4f57610100808354040283529160200191613a7a565b820191906000526020600020905b815481529060010190602001808311613a5d57829003601f168201915b5050505050935080600401549250806003015491505091939590929450565b6000806000806002544211151515613ab057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141515613aea57600080fd5b600154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515613b3c57600080fd5b600e5485101515613b4c57600080fd5b600086111515613b5b57600080fd5b60106000868152602001908152602001600020935083600401548611151515613b8357600080fd5b836003015486023410151515613b9857600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250613be7868560030154613e8a565b9150613bf282611fd5565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613cb4573d6000803e3d6000fd5b50613cc783600301546003548802613ec5565b8360030181905550613cdd846004015487613ee3565b84600401819055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613d2e846002613efc565b9081150290604051600060405180830381858888f1935050505050505050505050565b6000806000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015442111515613da657600080fd5b6000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141515613e8457600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250613e41428460040154613ee3565b9150613e4c84611cff565b90504283600401819055506000811115613e8357613e6a8183613e8a565b9050613e7a836003015482613ec5565b83600301819055505b5b50505050565b6000806000841415613e9f5760009150613ebe565b8284029050828482811515613eb057fe5b04141515613eba57fe5b8091505b5092915050565b6000808284019050838110151515613ed957fe5b8091505092915050565b6000828211151515613ef157fe5b818303905092915050565b6000808284811515613f0a57fe5b0490508091505092915050565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600581600501541015613f8057613f7983600a836005015402613ec5565b9150613fb7565b600a81600501541015613fa857613fa183600a836005015402603201613ec5565b9150613fb6565b613fb38360c8613ec5565b91505b5b5092915050565b6000806000613fcd4286613ee3565b9150613fd98285613efc565b905080861015613fec5760009250613ff9565b613ff68682613ee3565b92505b50509392505050565b60006140136006548360020a613e8a565b9050919050565b6000818310614029578161402b565b825b905092915050565b600080600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060009250600091505b600a548210156140dd576009600083815260200190815260200160002090506140ce836140c9866001016000868152602001908152602001600020548460010154613e8a565b613ec5565b92508180600101925050614083565b8284600201819055506007548311156140fb576140f985614131565b505b5050505050565b61410e42600554613ec5565b6002819055506141216001546001613ec5565b60018190555061412f6143fd565b565b60008060008061413f614f70565b60009350600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600b60006012601360158110151561419857fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915081600201548360020154101561420f57600094506143f4565b601260158060200260405190810160405280929190826015801561427e576020028201915b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614234575b5050505050905061428e86614b8c565b15156142ed57858160146015811015156142a457fe5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142e88160006014614c22565b6142fb565b6142fa8160006013614c22565b5b600093505b60158410156143ef5760128460158110151561431857fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16818560158110151561435e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff161415156143e257808460158110151561438e57fe5b60200201516012856015811015156143a257fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8380600101945050614300565b600194505b50505050919050565b6000602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660288190555060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016096815260200160018152602001428152602001600454815250600d600080815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160af815260200160018152602001428152602001600454815250600d60006001815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160c8815260200160018152602001428152602001600454815250600d60006002815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160e1815260200160018152602001428152602001600454815250600d60006003815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015590505060a0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160fa815260200160028152602001428152602001600454815250600d60006004815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040155905050600090505b600e54811015614b1d5760a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600581526020017f7469746c6500000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600b81526020017f6465736372697074696f6e0000000000000000000000000000000000000000008152508152602001600081526020016000815250600f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190614985929190614f94565b5060408201518160020190805190602001906149a2929190614f94565b50606082015181600301556080820151816004015590505060a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600581526020017f7469746c6500000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600b81526020017f6465736372697074696f6e00000000000000000000000000000000000000000081525081526020016000815260200160008152506010600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190614adb929190614f94565b506040820151816002019080519060200190614af8929190614f94565b506060820151816003015560808201518160040155905050808060010191505061485a565b600090505b601154811015614b89576000601282601581101515614b3d57fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050614b22565b50565b600080600090505b6014811015614c1757601281601581101515614bac57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614c0a5760019150614c1c565b8080600101915050614b94565b600091505b50919050565b60008060008085935084925082841415614c3b57614e7d565b866002878703811515614c4a57fe5b058701601581101515614c5957fe5b60200201519150600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090505b8284131515614e54575b8060020154600b60008987601581101515614cc357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115614d19578380600101945050614cac565b5b600b60008885601581101515614d2c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481600201541115614d8857828060019003935050614d1a565b8284131515614e4f578683601581101515614d9f57fe5b60200201518785601581101515614db257fe5b60200201518886601581101515614dc557fe5b602002018986601581101515614dd757fe5b602002018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250505083806001019450508280600190039350505b614ca2565b82861215614e6857614e67878785614c22565b5b84841215614e7c57614e7b878587614c22565b5b5b50505050505050565b61014060405190810160405280600a90602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614eeb57805160ff1916838001178555614f19565b82800160010185558215614f19579182015b82811115614f18578251825591602001919060010190614efd565b5b509050614f269190615014565b5090565b61010060405190810160405280600890602082028038833980820191505090505090565b6060604051908101604052806000815260200160008152602001600081525090565b6102a060405190810160405280601590602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fd557805160ff1916838001178555615003565b82800160010185558215615003579182015b82811115615002578251825591602001919060010190614fe7565b5b5090506150109190615014565b5090565b61503691905b8082111561503257600081600090555060010161501a565b5090565b905600a165627a7a723058208741b017cd7a7acc68438c65607c89c61a01cbfd59575f7d51e634f5f1195a430029
Swarm Source
bzzr://8741b017cd7a7acc68438c65607c89c61a01cbfd59575f7d51e634f5f1195a43
Loading...
Loading
Loading...
Loading
Net Worth in USD
$48.22
Net Worth in ETH
0.024302
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,984.13 | 0.0243 | $48.22 |
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.