Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 39 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Sweep | 6960774 | 2623 days ago | IN | 0 ETH | 0.00009145 | ||||
| Withdraw | 6627385 | 2678 days ago | IN | 0 ETH | 0.00127099 | ||||
| Withdraw | 6611198 | 2681 days ago | IN | 0 ETH | 0.00053593 | ||||
| Withdraw | 6609565 | 2681 days ago | IN | 0 ETH | 0.00033072 | ||||
| Withdraw | 6609561 | 2681 days ago | IN | 0 ETH | 0.00033072 | ||||
| Withdraw | 6609556 | 2681 days ago | IN | 0 ETH | 0.00055611 | ||||
| Withdraw | 6609472 | 2681 days ago | IN | 0 ETH | 0.00113599 | ||||
| Withdraw | 6609465 | 2681 days ago | IN | 0 ETH | 0.00050488 | ||||
| Withdraw | 6609450 | 2681 days ago | IN | 0 ETH | 0.00056488 | ||||
| Withdraw | 6609437 | 2681 days ago | IN | 0 ETH | 0.00084733 | ||||
| Withdraw | 6609434 | 2681 days ago | IN | 0 ETH | 0.00063111 | ||||
| Withdraw | 6609417 | 2681 days ago | IN | 0 ETH | 0.00055578 | ||||
| Buy From Wallet | 6609411 | 2681 days ago | IN | 0.1 ETH | 0.00033824 | ||||
| Buy From Wallet | 6608723 | 2681 days ago | IN | 1.5 ETH | 0.00434025 | ||||
| Buy From Wallet | 6605936 | 2681 days ago | IN | 2.3 ETH | 0.00151474 | ||||
| Reg Refcode | 6605274 | 2681 days ago | IN | 0.01 ETH | 0.0001545 | ||||
| Buy From Wallet | 6605055 | 2682 days ago | IN | 1 ETH | 0.00199733 | ||||
| Reg Refcode | 6604678 | 2682 days ago | IN | 0.01 ETH | 0.00074347 | ||||
| Buy From Wallet | 6604301 | 2682 days ago | IN | 0.5 ETH | 0.00196272 | ||||
| Buy From Wallet | 6604296 | 2682 days ago | IN | 0.5 ETH | 0.003536 | ||||
| Buy From Wallet | 6604275 | 2682 days ago | IN | 0.1 ETH | 0.00168 | ||||
| Reg Refcode | 6604117 | 2682 days ago | IN | 0.01 ETH | 0.00042342 | ||||
| Buy From Wallet | 6604116 | 2682 days ago | IN | 0.1 ETH | 0.00273141 | ||||
| Reg Refcode | 6604073 | 2682 days ago | IN | 0.01 ETH | 0.0006826 | ||||
| Reg Refcode | 6604009 | 2682 days ago | IN | 0.01 ETH | 0.00027753 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 6960774 | 2623 days ago | 0.13548748 ETH | ||||
| Transfer | 6627385 | 2678 days ago | 0.14862293 ETH | ||||
| Transfer | 6611198 | 2681 days ago | 0.5405155 ETH | ||||
| Transfer | 6609556 | 2681 days ago | 0.33319457 ETH | ||||
| Transfer | 6609472 | 2681 days ago | 1.79614456 ETH | ||||
| Transfer | 6609465 | 2681 days ago | 0.59966664 ETH | ||||
| Transfer | 6609450 | 2681 days ago | 5.09607956 ETH | ||||
| Transfer | 6609437 | 2681 days ago | 0.06297161 ETH | ||||
| Transfer | 6609434 | 2681 days ago | 0.89962947 ETH | ||||
| Transfer | 6609417 | 2681 days ago | 0.63568764 ETH | ||||
| Transfer | 6608723 | 2681 days ago | 0.165 ETH | ||||
| Transfer | 6605936 | 2681 days ago | 0.46 ETH | ||||
| Transfer | 6605274 | 2681 days ago | 0.01 ETH | ||||
| Transfer | 6605055 | 2682 days ago | 0.08 ETH | ||||
| Transfer | 6604678 | 2682 days ago | 0.01 ETH | ||||
| Transfer | 6604301 | 2682 days ago | 0.04 ETH | ||||
| Transfer | 6604296 | 2682 days ago | 0.04 ETH | ||||
| Transfer | 6604116 | 2682 days ago | 0.011 ETH | ||||
| Transfer | 6604009 | 2682 days ago | 0.01 ETH | ||||
| Transfer | 6603957 | 2682 days ago | 0.11 ETH | ||||
| Transfer | 6603942 | 2682 days ago | 0.022 ETH | ||||
| Transfer | 6603920 | 2682 days ago | 0.011 ETH | ||||
| Transfer | 6603843 | 2682 days ago | 0.011 ETH | ||||
| Transfer | 6603717 | 2682 days ago | 0.011 ETH | ||||
| Transfer | 6603683 | 2682 days ago | 0.44 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x19CB2f6F...7D5Bd13A8 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Game
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-10-24
*/
pragma solidity ^0.4.24;
contract Game{
using ShareCalc for uint256;
using SafeMath for *;
uint256 constant private weight0 = 1;
uint256 constant private weight1 = 1;
uint256 constant private refcodeFee = 1e16;
uint256 constant private phasePerStage = 4;
uint256 constant private maxStage = 10;
Entrepreneur.Company public gameState;
mapping (bytes32 => address) public refcode2Addr;
mapping (address => Entrepreneur.Player) public players;
address foundationAddr = 0x52E9e51e2519e9D8e5D68D992958e7D1bD4e5899;
uint256 constant private phaseLen = 11 hours;
uint256 constant private growthTarget = 110;
uint256 constant private lockup = 2 ;
uint256 constant private sweepDelay = 30 days;
Entrepreneur.Allocation rate = Entrepreneur.Allocation(50,9,3,2,6,30);
mapping (uint256 => Entrepreneur.Phase) public phases;
mapping (uint256 => mapping (address => uint256)) public phase_player_origShare;
mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_origShare;
mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_cdps;
mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_cbps;
mapping (uint256 =>mapping (uint256 => uint256)) public phase_prod_Share;
mapping (uint256 =>mapping (uint256 => uint256)) public stage_prod_currShare;
mapping (uint256 =>mapping (uint256 => uint256)) public stage_prod_origShare;
mapping (uint256 =>mapping (uint256 => uint256)) public stage_prod_cdps;
mapping (uint256 =>mapping (uint256 => uint256)) public stage_prod_cbps;
mapping (address =>mapping (uint256=> bytes32)) public player_id_refCode;
modifier isHuman() {
require(msg.sender == tx.origin, "Humans only");
_;
}
modifier ethLimit(uint256 _eth) {
require(_eth >= 1e16, "0.01ETH min");
require(_eth <= 1e20, "100ETH max");
_;
}
constructor () public {
gameState.stage=1;
gameState.phase=1;
phases[gameState.phase].ethGoal=10*1e18;
phases[gameState.phase].shareGoal=(gameState.eth).sharesRec(phases[gameState.phase].ethGoal);
phases[gameState.phase].stage=1;
}
string public gameName = "Entrepreneur";
function checkRefcode(address playerAddr,uint256 id)
public
view
returns(bytes32)
{
return player_id_refCode[playerAddr][id];
}
function accruedDiv (address playerAddr)
public
view
returns (uint256)
{
uint256 div=0;
for(uint i=1;i<=gameState.stage;i++){
for(uint j=0;j<2;j++){
div=(stage_prod_cdps[i][j].sub(stage_prod_player_cdps[i][j][playerAddr]).mul(stage_prod_player_origShare[i][j][playerAddr])/1e18).add(div);
}
}
return div;
}
function accruedBuyout (address playerAddr)
public
view
returns (uint256)
{
if(gameState.stage<=lockup)
return 0;
uint256 buyoutEth=0;
for(uint i=1;i<=gameState.stage.sub(lockup);i++){
buyoutEth=buyoutEth.add((stage_prod_cbps[i][0].sub(stage_prod_player_cbps[i][0][playerAddr])).mul(stage_prod_player_origShare[i][0][playerAddr])/1e18);
}
return buyoutEth;
}
function potShare(address playerAddr)
private
view
returns (uint256)
{
uint256 weightedShare=phase_player_origShare[gameState.phase][playerAddr].mul(weight0);
if(gameState.phase>1){
weightedShare=weightedShare.add(phase_player_origShare[gameState.phase-1][playerAddr].mul(weight1));
}
return weightedShare;
}
function accruedLiq(address playerAddr)
private
view
returns (uint256)
{
if(gameState.ended>0 && !players[playerAddr].redeemed )
{
return (gameState.lps).mul(potShare(playerAddr))/1e18;
}
return 0;
}
function currShares(address playerAddr)
private
view
returns(uint256)
{
uint256 _shares;
for(uint i=1;i<=gameState.stage;i++){
for(uint j=0;j<2;j++){
if(stage_prod_origShare[i][j]>0)
_shares=_shares.add(stage_prod_player_origShare[i][j][playerAddr].mul(stage_prod_currShare[i][j])/stage_prod_origShare[i][j]);
}
}
return _shares;
}
function getState()
public
view
returns (
uint256,
uint256,
uint256,
uint256,
uint256,
uint256,
uint256,
uint256,
uint256,
uint256
)
{
uint256 phase=gameState.phase;
uint256 end;
uint256 ethGoal;
uint256 eth;
uint256 stage=gameState.stage;
if(phases[phase].end!=0 && now > phases[phase].end && phases[phase].shares>=phases[phase].shareGoal && gameState.ended==0){
end=phases[phase].end.add(phaseLen);
ethGoal=phases[phase].eth.mul(growthTarget)/100;
phase++;
stage=(phase-1)/phasePerStage+1;
}else{
end=phases[phase].end;
ethGoal=phases[phase].ethGoal;
eth=phases[phase].eth;
}
return (
gameState.pot,
gameState.origShares,
gameState.plyrCount,
phase,
end,
ethGoal,
eth,
stage,
gameState.eth,
gameState.currShares
);
}
// function getState2()
// public
// view
// returns (
// uint256 pot,
// uint256 origShares,
// uint256 plyrCount,
// uint256 phase,
// uint256 end,
// uint256 phaseEthGoal,
// uint256 phaseEth,
// uint256 stage,
// uint256 totalEth,
// uint256 totalCurrShares
// )
// {
// phase=gameState.phase;
// stage=gameState.stage;
// if(phases[phase].end!=0 && now > phases[phase].end && phases[phase].shares>=phases[phase].shareGoal && gameState.ended==0){
// end=phases[phase].end.add(phaseLen);
// phaseEthGoal=phases[phase].eth.mul(growthTarget)/100;
// phase++;
// stage=(phase-1)/phasePerStage+1;
// }else{
// end=phases[phase].end;
// phaseEthGoal=phases[phase].ethGoal;
// phaseEth=phases[phase].eth;
// }
// pot=gameState.pot;
// origShares=gameState.origShares;
// plyrCount=gameState.plyrCount;
// totalEth=gameState.eth;
// totalCurrShares=gameState.currShares;
// return (
// pot,
// origShares,
// plyrCount,
// phase,
// end,
// phaseEthGoal,
// phaseEth,
// stage,
// totalEth,
// totalCurrShares
// );
// }
function phaseAddtlInfo(uint256 phase)
public
view
returns(
uint256,
uint256,
uint256,
uint256
)
{
uint256 growth;
if(phase==1)
growth=0;
else
growth=phases[phase].eth.mul(10000)/phases[phase.sub(1)].eth;
uint256 stage;
uint256 ethGoal;
if(phase == gameState.phase + 1 && phases[gameState.phase].end!=0 && phases[gameState.phase].shares>=phases[gameState.phase].shareGoal && now > phases[gameState.phase].end){
stage=(phase-1)/phasePerStage+1;
ethGoal=phases[gameState.phase].eth.mul(growthTarget)/100;
}else{
stage=phases[phase].stage;
ethGoal=phases[phase].ethGoal;
}
return(
stage,
phases[phase].eth,
ethGoal,
growth
);
}
function getPlayerIncome(address playerAddr)
public
view
returns (
uint256,
uint256,
uint256,
uint256
)
{
return (
players[playerAddr].redeemedDiv.add(accruedDiv(playerAddr)),
players[playerAddr].redeemedRef,
players[playerAddr].redeemedBuyout.add(accruedBuyout(playerAddr)),
players[playerAddr].redeemedLiq.add(accruedLiq(playerAddr)));
}
function getPlayerVault(address playerAddr)
public
view
returns (
uint256,
uint256,
uint256,
uint256
)
{
uint256 shares=currShares(playerAddr);
return (
totalBal(playerAddr),
shares,
potShare(playerAddr),
(gameState.origShares).ethRec(shares));
}
function totalBal(address playerAddr)
public
view
returns(uint256)
{
uint256 div = accruedDiv(playerAddr);
uint256 liq = accruedLiq(playerAddr);
uint256 buyout=accruedBuyout(playerAddr);
return players[playerAddr].bal.add(div).add(liq).add(buyout);
}
function _register(address playerAddr,address ref)
private
{
if(players[playerAddr].id>0)
return;
if(players[ref].id==0 || ref==playerAddr)
ref=address(0);
players[playerAddr].id=++gameState.plyrCount;
players[playerAddr].ref=ref;
players[ref].apprentice1++;
address ref2=players[ref].ref;
if(ref2 != address(0)){
players[ref2].apprentice2++;
address ref3=players[ref2].ref;
if(ref3 != address(0)){
players[ref3].apprentice3++;
}
}
}
function _register2(address playerAddr,bytes32 refcode)
private
{
_register(playerAddr,refcode2Addr[refcode]);
}
function endGame()
private
returns (uint256)
{
if(gameState.ended>0){
return gameState.ended;
}
if(now > phases[gameState.phase].end){
if(phases[gameState.phase].shares>=phases[gameState.phase].shareGoal)
{
uint256 nextPhase=gameState.phase+1;
if(gameState.phase % phasePerStage == 0){
if(gameState.stage+1>maxStage){
gameState.ended=2;
}else{
gameState.stage++;
}
}
if(gameState.ended==0){
phases[nextPhase].stage=gameState.stage;
phases[nextPhase].end=phases[gameState.phase].end.add(phaseLen);
phases[nextPhase].ethGoal=phases[gameState.phase].eth.mul(growthTarget)/100;
phases[nextPhase].shareGoal=(gameState.eth).sharesRec(phases[nextPhase].ethGoal);
gameState.phase=nextPhase;
if(now > phases[gameState.phase].end){
gameState.ended=1;
}
}
}else{
gameState.ended=1;
}
}
if(gameState.ended>0){
uint256 weightedShare=phases[gameState.phase].shares.mul(weight0);
if(gameState.phase>1){
weightedShare=weightedShare.add(phases[gameState.phase-1].shares.mul(weight1));
}
gameState.lps=(gameState.pot).mul(1e18)/weightedShare;
gameState.pot=0;
}
return gameState.ended;
}
function calcBuyout(uint256 shares)
public
view
returns(uint256)
{
if(gameState.stage<=lockup)
return 0;
uint256 buyoutShares;
if(phases[gameState.phase].shares.add(shares)>phases[gameState.phase].shareGoal){
buyoutShares=phases[gameState.phase].shares.add(shares).sub(phases[gameState.phase].shareGoal);
}
if(buyoutShares>shares){
buyoutShares=shares;
}
if(buyoutShares > stage_prod_currShare[gameState.stage.sub(lockup)][0]){
buyoutShares= stage_prod_currShare[gameState.stage.sub(lockup)][0];
}
return buyoutShares;
}
function minRedeem(address playerAddr,uint256 stage,uint256 prodId)
public
{
uint256 div= (stage_prod_cdps[stage][prodId].sub(stage_prod_player_cdps[stage][prodId][playerAddr])).mul(stage_prod_player_origShare[stage][prodId][playerAddr])/1e18;
stage_prod_player_cdps[stage][prodId][playerAddr]=stage_prod_cdps[stage][prodId];
players[playerAddr].bal=div.add(players[playerAddr].bal);
players[playerAddr].redeemedDiv=div.add(players[playerAddr].redeemedDiv);
}
function redeem(address playerAddr)
public
{
uint256 liq=0;
if(gameState.ended>0 && !players[playerAddr].redeemed){
liq=accruedLiq(playerAddr);
players[playerAddr].redeemed=true;
}
uint256 div=0;
for(uint i=1;i<=gameState.stage;i++){
for(uint j=0;j<2;j++){
div=div.add((stage_prod_cdps[i][j].sub(stage_prod_player_cdps[i][j][playerAddr])).mul(stage_prod_player_origShare[i][j][playerAddr])/1e18);
stage_prod_player_cdps[i][j][playerAddr]=stage_prod_cdps[i][j];
}
}
uint256 buyoutEth=0;
if(gameState.stage>lockup){
for(i=1;i<=gameState.stage.sub(lockup);i++){
buyoutEth=buyoutEth.add((stage_prod_cbps[i][0].sub(stage_prod_player_cbps[i][0][playerAddr])).mul(stage_prod_player_origShare[i][0][playerAddr])/1e18);
stage_prod_player_cbps[i][0][playerAddr]=stage_prod_cbps[i][0];
}
}
players[playerAddr].bal=liq.add(div).add(buyoutEth).add(players[playerAddr].bal);
players[playerAddr].redeemedLiq=players[playerAddr].redeemedLiq.add(liq);
players[playerAddr].redeemedDiv=players[playerAddr].redeemedDiv.add(div);
players[playerAddr].redeemedBuyout=players[playerAddr].redeemedBuyout.add(buyoutEth);
}
function payRef(address playerAddr,uint256 eth)
private
{
uint256 foundationAmt=eth.mul(rate.foundation)/100;
uint256 ref1Amt=eth.mul(rate.ref1)/100;
uint256 ref2Amt=eth.mul(rate.ref2)/100;
uint256 ref3Amt=eth.mul(rate.ref3)/100;
address ref1= players[playerAddr].ref;
if(ref1 != address(0)){
players[ref1].bal=ref1Amt.add(players[ref1].bal);
players[ref1].redeemedRef=ref1Amt.add(players[ref1].redeemedRef);
address ref2=players[ref1].ref;
if(ref2 != address(0)){
players[ref2].bal=ref2Amt.add(players[ref2].bal);
players[ref2].redeemedRef=ref2Amt.add(players[ref2].redeemedRef);
address ref3=players[ref2].ref;
if(ref3 != address(0)){
players[ref3].bal=ref3Amt.add(players[ref3].bal);
players[ref3].redeemedRef=ref3Amt.add(players[ref3].redeemedRef);
}else{
foundationAmt=foundationAmt.add(ref3Amt);
}
}else{
foundationAmt=foundationAmt.add(ref3Amt).add(ref2Amt);
}
}else{
foundationAmt=foundationAmt.add(ref3Amt).add(ref2Amt).add(ref1Amt);
}
foundationAddr.transfer(foundationAmt);
}
function updateDps(uint256 div)
private
{
uint256 dps=div.mul(1e18)/gameState.currShares;
for(uint i = 1; i <= gameState.stage; i++){
for(uint j=0;j<=1;j++){
if(stage_prod_origShare[i][j]>0){
stage_prod_cdps[i][j]=(dps.mul(stage_prod_currShare[i][j])/stage_prod_origShare[i][j]).add(stage_prod_cdps[i][j]);
}
}
}
}
function _buy(address playerAddr, uint256 eth, uint256 prodId)
ethLimit(eth)
private
{
if(prodId>1)
prodId=1;
if(players[playerAddr].id==0)
_register(playerAddr,address(0));
minRedeem(playerAddr,gameState.stage,prodId);
require(players[playerAddr].bal >= eth,"insufficient fund");
if(eth>0 && phases[gameState.phase].end==0)
phases[gameState.phase].end=now.add(phaseLen);
if(endGame()>0)
return;
uint256 stage=gameState.stage;
uint256 phase=gameState.phase;
players[playerAddr].bal=(players[playerAddr].bal).sub(eth);
uint256 shares=(gameState.eth).sharesRec(eth);
uint256 buyout = calcBuyout(shares);
uint256 newShare=shares.sub(buyout);
uint256 newShareEth=(gameState.origShares).ethRec(newShare);
uint256 buyoutEth=eth.sub(newShareEth);
if(buyout>0){
uint256 buyoutStage=stage.sub(lockup);
stage_prod_currShare[buyoutStage][0]=stage_prod_currShare[buyoutStage][0].sub(buyout);
stage_prod_cbps[buyoutStage][0]=(stage_prod_cbps[buyoutStage][0]).add(buyoutEth.mul(rate.pot).mul(1e18)/100/stage_prod_origShare[buyoutStage][0]);
}
gameState.origShares = shares.add(gameState.origShares);
gameState.currShares=newShare.add(gameState.currShares);
gameState.eth = eth.add(gameState.eth);
phases[phase].shares=shares.add(phases[phase].shares);
phases[phase].eth=eth.add(phases[phase].eth);
stage_prod_origShare[stage][prodId]=shares.add(stage_prod_origShare[stage][prodId]);
stage_prod_currShare[stage][prodId]=stage_prod_origShare[stage][prodId];
players[playerAddr].origShares=shares.add(players[playerAddr].origShares);
stage_prod_player_origShare[stage][prodId][playerAddr]=shares.add(stage_prod_player_origShare[stage][prodId][playerAddr]);
phase_player_origShare[phase][playerAddr]=shares.add(phase_player_origShare[phase][playerAddr]);
updateDps(eth.mul(rate.div)/100);
payRef(playerAddr,eth);
gameState.pot=gameState.pot.add(newShareEth.mul(rate.pot)/100);
}
function sweep()
public
{
if(gameState.ended>0 && now > sweepDelay + phases[gameState.phase].end)
foundationAddr.transfer(address(this).balance);
}
function register(address ref)
isHuman()
public
{
_register(msg.sender,ref);
}
function recharge()
public
payable
{
players[msg.sender].bal=(players[msg.sender].bal).add(msg.value);
}
function withdraw()
isHuman()
public
{
redeem(msg.sender);
uint256 _bal = players[msg.sender].bal;
players[msg.sender].bal=0;
msg.sender.transfer(_bal);
}
function buyFromWallet(uint256 prodId,bytes32 refCode)
isHuman()
public
payable
{
_register2(msg.sender, refCode);
players[msg.sender].bal=(players[msg.sender].bal).add(msg.value);
_buy(msg.sender,msg.value,prodId);
}
function regRefcode(bytes32 refcode)
public
payable
returns (bool)
{
_register2(msg.sender, "");
if(msg.value<refcodeFee || refcode2Addr[refcode]!=address(0)){
msg.sender.transfer(msg.value);
return false;
}
refcode2Addr[refcode]=msg.sender;
players[msg.sender].numRefcodes=players[msg.sender].numRefcodes.add(1);
player_id_refCode[msg.sender][players[msg.sender].numRefcodes]=refcode;
return true;
}
function buyFromBal(uint256 eth,uint256 prodId,bytes32 refCode)
isHuman()
public
{
_register2(msg.sender, refCode);
redeem(msg.sender);
_buy(msg.sender,eth,prodId);
}
function getEthNeeded(uint256 keysCount) public view returns(uint256) {
uint256 ethCount=(gameState.origShares).ethRec(keysCount);
return ethCount;
}
}
library Entrepreneur {
struct Player {
uint256 origShares;
uint256 bal;
bool redeemed;
uint256 id;
address ref;
uint256 redeemedDiv;
uint256 redeemedRef;
uint256 redeemedBuyout;
uint256 redeemedLiq;
uint256 apprentice1;
uint256 apprentice2;
uint256 apprentice3;
uint256 numRefcodes;
}
struct Company {
uint256 eth;
uint256 pot;
uint256 origShares;
uint256 currShares;
uint256 lps;
uint256 ended;
uint256 plyrCount;
uint256 phase;
uint256 stage;
}
struct Phase{
uint256 stage;
uint256 end;
uint256 shareGoal;
uint256 shares;
uint256 eth;
uint256 ethGoal;
}
struct Allocation {
uint256 div;
uint256 ref1;
uint256 ref2;
uint256 ref3;
uint256 foundation;
uint256 pot;
}
}
library ShareCalc {
using SafeMath for *;
/**
* @dev calculates number of share received given X eth
* @param _curEth current amount of eth in contract
* @param _newEth eth being spent
* @return amount of Share purchased
*/
function sharesRec(uint256 _curEth, uint256 _newEth)
internal
pure
returns (uint256)
{
return(shares((_curEth).add(_newEth)).sub(shares(_curEth)));
}
/**
* @dev calculates amount of eth received if you sold X share
* @param _curShares current amount of shares that exist
* @param _sellShares amount of shares you wish to sell
* @return amount of eth received
*/
function ethRec(uint256 _curShares, uint256 _sellShares)
internal
pure
returns (uint256)
{
return(eth(_curShares.add(_sellShares)).sub(eth(_curShares)));
}
/**
* @dev calculates how many shares would exist with given an amount of eth
* @param _eth eth "in contract"
* @return number of shares that would exist
*/
function shares(uint256 _eth)
internal
pure
returns(uint256)
{
// old
// return ((((((_eth).mul(1000000000000000000)).mul(46675600000000000000000000)).add(49018761795600000000000000000000000000000000000000000000000000)).sqrt()).sub(7001340000000000000000000000000)) / (23337800);
// new
return ((((((_eth).mul(1000000000000000000)).mul(466756000000000000000000)).add(49018761795600000000000000000000000000000000000000000000000000)).sqrt()).sub(7001340000000000000000000000000)) / (233378);
}
/**
* @dev calculates how much eth would be in contract given a number of shares
* @param _shares number of shares "in contract"
* @return eth that would exists
*/
function eth(uint256 _shares)
internal
pure
returns(uint256)
{
// old
// return ((11668900).mul(_shares.sq()).add(((14002680000000).mul(_shares.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
// new
return ((116689).mul(_shares.sq()).add(((14002680000000).mul(_shares.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
}
}
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
if (a == 0) {
return 0;
}
c = a * b;
require(c / a == b, "SafeMath mul failed");
return c;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b)
internal
pure
returns (uint256)
{
require(b <= a, "SafeMath sub failed");
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
c = a + b;
require(c >= a, "SafeMath add failed");
return c;
}
/**
* @dev gives square root of given x.
*/
function sqrt(uint256 x)
internal
pure
returns (uint256 y)
{
uint256 z = ((add(x,1)) / 2);
y = x;
while (z < y)
{
y = z;
z = ((add((x / z),z)) / 2);
}
}
/**
* @dev gives square. multiplies x by x
*/
function sq(uint256 x)
internal
pure
returns (uint256)
{
return (mul(x,x));
}
/**
* @dev x to the power of y
*/
function pwr(uint256 x, uint256 y)
internal
pure
returns (uint256)
{
if (x==0)
return (0);
else if (y==0)
return (1);
else
{
uint256 z = x;
for (uint256 i = 1; i < y; i++)
z = mul(z,x);
return (z);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"accruedDiv","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"accruedBuyout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"phases","outputs":[{"name":"stage","type":"uint256"},{"name":"end","type":"uint256"},{"name":"shareGoal","type":"uint256"},{"name":"shares","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"ethGoal","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"refcode2Addr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"player_id_refCode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"getPlayerVault","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"shares","type":"uint256"}],"name":"calcBuyout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sweep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"totalBal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"phase","type":"uint256"}],"name":"phaseAddtlInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ref","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gameName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"recharge","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"refcode","type":"bytes32"}],"name":"regRefcode","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_cdps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"phase_player_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"},{"name":"id","type":"uint256"}],"name":"checkRefcode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"phase_prod_Share","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"playerAddr","type":"address"},{"name":"stage","type":"uint256"},{"name":"prodId","type":"uint256"}],"name":"minRedeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_currShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"keysCount","type":"uint256"}],"name":"getEthNeeded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_cdps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"playerAddr","type":"address"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_cbps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameState","outputs":[{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"},{"name":"origShares","type":"uint256"},{"name":"currShares","type":"uint256"},{"name":"lps","type":"uint256"},{"name":"ended","type":"uint256"},{"name":"plyrCount","type":"uint256"},{"name":"phase","type":"uint256"},{"name":"stage","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"prodId","type":"uint256"},{"name":"refCode","type":"bytes32"}],"name":"buyFromWallet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_cbps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"players","outputs":[{"name":"origShares","type":"uint256"},{"name":"bal","type":"uint256"},{"name":"redeemed","type":"bool"},{"name":"id","type":"uint256"},{"name":"ref","type":"address"},{"name":"redeemedDiv","type":"uint256"},{"name":"redeemedRef","type":"uint256"},{"name":"redeemedBuyout","type":"uint256"},{"name":"redeemedLiq","type":"uint256"},{"name":"apprentice1","type":"uint256"},{"name":"apprentice2","type":"uint256"},{"name":"apprentice3","type":"uint256"},{"name":"numRefcodes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"eth","type":"uint256"},{"name":"prodId","type":"uint256"},{"name":"refCode","type":"bytes32"}],"name":"buyFromBal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"getPlayerIncome","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
0x60806040527352e9e51e2519e9d8e5d68d992958e7d1bd4e5899600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0604051908101604052806032815260200160098152602001600381526020016002815260200160068152602001601e815250600c600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015550506040805190810160405280600c81526020017f456e7472657072656e6575720000000000000000000000000000000000000000815250601d90805190602001906200011a9291906200059b565b503480156200012857600080fd5b5060016000600801819055506001600060070181905550678ac7230489e80000601260008060070154815260200190815260200160002060050181905550620001a76012600080600701548152602001908152602001600020600501546000800154620001eb6401000000000262004428179091906401000000009004565b60126000806007015481526020019081526020016000206002018190555060016012600080600701548152602001908152602001600020600001819055506200064a565b6000620002646200020b846200026c640100000000026401000000009004565b62000247620002328587620003646401000000000262002f2b179091906401000000009004565b6200026c640100000000026401000000009004565b620003ed6401000000000262002e02179091906401000000009004565b905092915050565b600062038fa2620003526c585e8cb5bb7bab2d3e7c000000620003356200031b791e8123a893b1fa92b99695340490aca0aed84c10000000000000620002fe6962d6e4b9dcb992900000620002e1670de0b6b3a76400008b620004736401000000000262002e87179091906401000000009004565b620004736401000000000262002e87179091906401000000009004565b620003646401000000000262002f2b179091906401000000009004565b6200051b6401000000000262004d91176401000000009004565b620003ed6401000000000262002e02179091906401000000009004565b8115156200035c57fe5b049050919050565b60008183019050828110151515620003e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600082821115151562000468576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008083141562000488576000905062000515565b81830290508183828115156200049a57fe5b0414151562000511576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008060026200053c84600162000364640100000000026401000000009004565b8115156200054657fe5b0490508291505b81811015620005955780915060026200058282858115156200056b57fe5b048362000364640100000000026401000000009004565b8115156200058c57fe5b0490506200054d565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005de57805160ff19168380011785556200060f565b828001600101855582156200060f579182015b828111156200060e578251825591602001919060010190620005f1565b5b5090506200061e919062000622565b5090565b6200064791905b808211156200064357600081600090555060010162000629565b5090565b90565b614e16806200065a6000396000f3006080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630641d812146101b15780631865c57d14610208578063253515d5146102725780632e37eef6146102c95780632f19c2c11461032d5780632fae38491461039e57806330e73c7614610407578063358fa6c61461047357806335faa416146104b45780633658964c146104cb5780633ccfd60b146105225780633ed4c4c8146105395780634420e4861461058f578063473bc223146105d25780634cddae28146106625780635b48c11b1461066c5780635e0e5b9f146106a8578063773c6dfa146106f35780637a070cba1461075457806380ecc02c146107bd5780638916cbc6146108085780638f56054d1461085f5780639248d4ec146108aa5780639530311e146108eb57806395a2251f14610956578063b1ec676214610999578063bbb0729614610a04578063d1f9c24d14610a4f578063d500f86114610ab2578063d85ef95e14610ae0578063e2eb41ff14610b4b578063e8a915ad14610c26578063fe2506a414610c71578063feca4ef114610cb6575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d22565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061021d610ea4565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561027e57600080fd5b506102b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106d565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102f4600480360381019080803590602001909291905050506111fe565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561033957600080fd5b5061035c600480360381019080803560001916906020019092919050505061123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103aa57600080fd5b506103e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126d565b60405180826000191660001916815260200191505060405180910390f35b34801561041357600080fd5b50610448600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611292565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561047f57600080fd5b5061049e600480360381019080803590602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c961143f565b005b3480156104d757600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376115a3565b005b34801561054557600080fd5b5061056460048036038101908080359060200190929190505050611728565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561059b57600080fd5b506105d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f8565b005b3480156105de57600080fd5b506105e76119a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062757808201518184015260208101905061060c565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066a611a46565b005b61068e6004803603810190808035600019169060200190929190505050611ae3565b604051808215151515815260200191505060405180910390f35b3480156106b457600080fd5b506106dd6004803603810190808035906020019092919080359060200190929190505050611d5d565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b5061073e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d82565b6040518082815260200191505060405180910390f35b34801561076057600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611da7565b60405180826000191660001916815260200191505060405180910390f35b3480156107c957600080fd5b506107f26004803603810190808035906020019092919080359060200190929190505050611e02565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061085d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e27565b005b34801561086b57600080fd5b50610894600480360381019080803590602001909291908035906020019092919050505061210f565b6040518082815260200191505060405180910390f35b3480156108b657600080fd5b506108d560048036038101908080359060200190929190505050612134565b6040518082815260200191505060405180910390f35b3480156108f757600080fd5b506109406004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061215a565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218c565b005b3480156109a557600080fd5b506109ee6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f9565b6040518082815260200191505060405180910390f35b348015610a1057600080fd5b50610a39600480360381019080803590602001909291908035906020019092919050505061292b565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612950565b604051808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b610ade60048036038101908080359060200190929190803560001916906020019092919050505061298c565b005b348015610aec57600080fd5b50610b356004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b6040518082815260200191505060405180910390f35b348015610b5757600080fd5b50610b8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b15565b604051808e81526020018d81526020018c1515151581526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390f35b348015610c3257600080fd5b50610c5b6004803603810190808035906020019092919080359060200190929190505050612ba8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb460048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050612bcd565b005b348015610cc257600080fd5b50610cf7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c93565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b60008060008060009250600191505b60006008015482111515610e9957600090505b6002811015610e8c57610e7d83670de0b6b3a7640000610e6560146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5760156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515610e6e57fe5b04612f2b90919063ffffffff16565b92508080600101915050610d44565b8180600101925050610d31565b829350505050919050565b60008060008060008060008060008060008060008060008060070154945060006008015490506000601260008781526020019081526020016000206001015414158015610f065750601260008681526020019081526020016000206001015442115b8015610f3e57506012600086815260200190815260200160002060020154601260008781526020019081526020016000206003015410155b8015610f4e575060008060050154145b15610fda57610f7e619ab06012600088815260200190815260200160002060010154612f2b90919063ffffffff16565b93506064610fac606e6012600089815260200190815260200160002060040154612e8790919063ffffffff16565b811515610fb557fe5b04925084806001019550506001600460018703811515610fd157fe5b04019050611026565b6012600086815260200190815260200160002060010154935060126000868152602001908152602001600020600501549250601260008681526020019081526020016000206004015491505b600060010154600060020154600060060154878787878760008001546000600301549e509e509e509e509e509e509e509e509e509e50505050505090919293949596979899565b6000806000600260006008015411151561108a57600092506111f7565b60009150600190505b6110ac6002600060080154612e0290919063ffffffff16565b811115156111f3576111e4670de0b6b3a76400006111cb60146000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bd60166000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b6000888152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156111d457fe5b0483612f2b90919063ffffffff16565b91508080600101915050611093565b8192505b5050919050565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c602052816000526040600020602052806000526040600020600091509150505481565b60008060008060006112a386612fb3565b90506112ae866114f9565b816112b888613108565b6112d08460006002015461320d90919063ffffffff16565b9450945094509450509193509193565b60008060026000600801541115156112fb5760009150611439565b60126000806007015481526020019081526020016000206002015461134384601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b11156113a5576113a260126000806007015481526020019081526020016000206002015461139485601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b612e0290919063ffffffff16565b90505b828111156113b1578290505b601860006113ce6002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205481111561143557601860006114126002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205490505b8091505b50919050565b60008060050154118015611471575060126000806007015481526020019081526020016000206001015462278d000142115b156114f757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156114f5573d6000803e3d6000fd5b505b565b60008060008061150885610d22565b92506115138561324c565b915061151e8561106d565b90506115998161158b8461157d87600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b9350505050919050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116513361218c565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611724573d6000803e3d6000fd5b5050565b6000806000806000806000600188141561174557600092506117a7565b6012600061175d60018b612e0290919063ffffffff16565b81526020019081526020016000206004015461179a612710601260008c815260200190815260200160002060040154612e8790919063ffffffff16565b8115156117a357fe5b0492505b600160006007015401881480156117d95750600060126000806007015481526020019081526020016000206001015414155b8015611819575060126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410155b801561183e575060126000806007015481526020019081526020016000206001015442115b15611899576001600460018a0381151561185457fe5b040191506064611888606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561189157fe5b0490506118cc565b60126000898152602001908152602001600020600001549150601260008981526020019081526020016000206005015490505b81601260008a815260200190815260200160002060040154828596509650965096505050509193509193565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119a533826132f8565b50565b601d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a3e5780601f10611a1357610100808354040283529160200191611a3e565b820191906000526020600020905b815481529060010190602001808311611a2157829003601f168201915b505050505081565b611a9b34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550565b6000611af03360006136df565b662386f26fc10000341080611b6d5750600073ffffffffffffffffffffffffffffffffffffffff1660096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611bc2573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611bb8573d6000803e3d6000fd5b5060009050611d58565b3360096000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c726001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c018190555081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c015481526020019081526020016000208160001916905550600190505b919050565b601a602052816000526040600020602052806000526040600020600091509150505481565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6017602052816000526040600020602052806000526040600020600091509150505481565b6000670de0b6b3a7640000611f3d60146000868152602001908152602001600020600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2f60156000888152602001908152602001600020600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a6000898152602001908152602001600020600088815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515611f4657fe5b049050601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612028600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506120c3600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050565b6018602052816000526040600020602052806000526040600020600091509150505481565b60008061214f8360006002015461320d90919063ffffffff16565b905080915050919050565b601560205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6000806000806000809450600080600501541180156121f85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b15612264576122068661324c565b94506001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60009350600192505b6000600801548311151561245f57600091505b6002821015612452576123b9670de0b6b3a76400006123a060146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239260156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156123a957fe5b0485612f2b90919063ffffffff16565b9350601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508180600101925050612280565b828060010193505061226d565b600090506002600060080154111561266157600192505b61248f6002600060080154612e0290919063ffffffff16565b83111515612660576125c7670de0b6b3a76400006125ae60146000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a060166000898152602001908152602001600020600080815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008a8152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156125b757fe5b0482612f2b90919063ffffffff16565b9050601b600084815260200190815260200160002060008081526020019081526020016000205460166000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050612476565b5b6126da600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546126cc836126be888a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061277585600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555061281084600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506128ab81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550505050505050565b601460205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b601b602052816000526040600020602052806000526040600020600091509150505481565b60008060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612a3933826136df565b612a8e34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612adf333484613728565b5050565b601660205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600a6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b01549080600c015490508d565b6019602052816000526040600020602052806000526040600020600091509150505481565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c7a33826136df565b612c833361218c565b612c8e338484613728565b505050565b600080600080612cf6612ca586610d22565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612d96612d458861106d565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b612df3612da28961324c565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b93509350935093509193509193565b6000828211151515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080831415612e9a5760009050612f25565b8183029050818382811515612eab57fe5b04141515612f21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008183019050828110151515612faa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600080600080600191505b600060080154821115156130fd57600090505b60028110156130f05760006019600084815260200190815260200160002060008381526020019081526020016000205411156130e3576130e0601960008481526020019081526020016000206000838152602001908152602001600020546130c76018600086815260200190815260200160002060008581526020019081526020016000205460146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b8115156130d057fe5b0484612f2b90919063ffffffff16565b92505b8080600101915050612fd1565b8180600101925050612fbe565b829350505050919050565b6000806131736001601360008060070154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b905060016000600701541115613204576132016131f2600160136000600160006007015403815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b80915050919050565b600061324461321b84614080565b6132366132318587612f2b90919063ffffffff16565b614080565b612e0290919063ffffffff16565b905092915050565b6000806000600501541180156132af5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b156132ee57670de0b6b3a76400006132dd6132c984613108565b600060040154612e8790919063ffffffff16565b8115156132e657fe5b0490506132f3565b600090505b919050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154111561334b576136d9565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015414806133c757508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133d157600092505b600060060160008154600101919050819055600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090160008154809291906001019190505550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156136d857600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160008154809291906001019190505550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156136d757600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600081548092919060010191905055505b5b5b50505050565b6137248260096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132f8565b5050565b60008060008060008060008089662386f26fc1000081101515156137b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f302e3031455448206d696e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b68056bc75e2d631000008111151515613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f313030455448206d61780000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018a111561384357600199505b6000600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561389a576138998c60006132f8565b5b6138aa8c6000600801548c611e27565b8a600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410151515613964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e73756666696369656e742066756e6400000000000000000000000000000081525060200191505060405180910390fd5b60008b11801561398e57506000601260008060070154815260200190815260200160002060010154145b156139c7576139a8619ab042612f2b90919063ffffffff16565b6012600080600701548152602001908152602001600020600101819055505b60006139d1614112565b11156139dc57614072565b60006008015498506000600701549750613a418b600a60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612e0290919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613a9e8b600080015461442890919063ffffffff16565b9650613aa9876112e0565b9550613abe8688612e0290919063ffffffff16565b9450613ad88560006002015461320d90919063ffffffff16565b9350613aed848c612e0290919063ffffffff16565b92506000861115613c3957613b0c60028a612e0290919063ffffffff16565b9150613b458660186000858152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b60186000848152602001908152602001600020600080815260200190815260200160002081905550613c10601960008481526020019081526020016000206000808152602001908152602001600020546064613bc9670de0b6b3a7640000613bbb600c6005015489612e8790919063ffffffff16565b612e8790919063ffffffff16565b811515613bd257fe5b04811515613bdc57fe5b04601b6000858152602001908152602001600020600080815260200190815260200160002054612f2b90919063ffffffff16565b601b60008481526020019081526020016000206000808152602001908152602001600020819055505b613c5160006002015488612f2b90919063ffffffff16565b600060020181905550613c7260006003015486612f2b90919063ffffffff16565b600060030181905550613c9260008001548c612f2b90919063ffffffff16565b6000800181905550613cc3601260008a81526020019081526020016000206003015488612f2b90919063ffffffff16565b601260008a815260200190815260200160002060030181905550613d06601260008a8152602001908152602001600020600401548c612f2b90919063ffffffff16565b601260008a815260200190815260200160002060040181905550613d57601960008b815260200190815260200160002060008c81526020019081526020016000205488612f2b90919063ffffffff16565b601960008b815260200190815260200160002060008c815260200190815260200160002081905550601960008a815260200190815260200160002060008b815260200190815260200160002054601860008b815260200190815260200160002060008c815260200190815260200160002081905550613e21600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015488612f2b90919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613edb601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fa3601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140236064614014600c600001548e612e8790919063ffffffff16565b81151561401d57fe5b04614467565b61402d8c8c6145cc565b614068606461404a600c6005015487612e8790919063ffffffff16565b81151561405357fe5b04600060010154612f2b90919063ffffffff16565b6000600101819055505b505050505050505050505050565b6000614093670de0b6b3a7640000614cdd565b61410160026140cb6140b6670de0b6b3a764000087612e8790919063ffffffff16565b650cbc40c46e00612e8790919063ffffffff16565b8115156140d457fe5b046140f36140e186614cdd565b6201c7d1612e8790919063ffffffff16565b612f2b90919063ffffffff16565b81151561410a57fe5b049050919050565b6000806000806000600501541115614131576000600501549250614423565b6012600080600701548152602001908152602001600020600101544211156143495760126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410151561433c576001600060070154019150600060046000600701548115156141ae57fe5b0614156141ed57600a60016000600801540111156141d65760026000600501819055506141ec565b6000600801600081548092919060010191905055505b5b600080600501541415614337576000600801546012600084815260200190815260200160002060000181905550614249619ab0601260008060070154815260200190815260200160002060010154612f2b90919063ffffffff16565b60126000848152602001908152602001600020600101819055506064614293606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561429c57fe5b0460126000848152602001908152602001600020600501819055506142e46012600084815260200190815260200160002060050154600080015461442890919063ffffffff16565b6012600084815260200190815260200160002060020181905550816000600701819055506012600080600701548152602001908152602001600020600101544211156143365760016000600501819055505b5b614348565b60016000600501819055505b5b60008060050154111561441a576143846001601260008060070154815260200190815260200160002060030154612e8790919063ffffffff16565b9050600160006007015411156143db576143d86143c9600160126000600160006007015403815260200190815260200160002060030154612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b806143fc670de0b6b3a7640000600060010154612e8790919063ffffffff16565b81151561440557fe5b04600060040181905550600080600101819055505b60006005015492505b505090565b600061445f61443684614cf0565b61445161444c8587612f2b90919063ffffffff16565b614cf0565b612e0290919063ffffffff16565b905092915050565b6000806000806003015461448c670de0b6b3a764000086612e8790919063ffffffff16565b81151561449557fe5b049250600191505b600060080154821115156145c657600090505b6001811115156145b95760006019600084815260200190815260200160002060008381526020019081526020016000205411156145ac57614583601a60008481526020019081526020016000206000838152602001908152602001600020546019600085815260200190815260200160002060008481526020019081526020016000205461456b6018600087815260200190815260200160002060008681526020019081526020016000205487612e8790919063ffffffff16565b81151561457457fe5b04612f2b90919063ffffffff16565b601a60008481526020019081526020016000206000838152602001908152602001600020819055505b80806001019150506144b0565b818060010192505061449d565b50505050565b600080600080600080600060646145f1600c600401548a612e8790919063ffffffff16565b8115156145fa57fe5b0496506064614617600c600101548a612e8790919063ffffffff16565b81151561462057fe5b049550606461463d600c600201548a612e8790919063ffffffff16565b81151561464657fe5b0494506064614663600c600301548a612e8790919063ffffffff16565b81151561466c57fe5b049350600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614c2f5761475f600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506147fa600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515614c0257614930600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506149cb600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614be757614b01600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550614b9c600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550614bfd565b614bfa8488612f2b90919063ffffffff16565b96505b614c2a565b614c2785614c19868a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b614c69565b614c6686614c5887614c4a888c612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015614cd1573d6000803e3d6000fd5b50505050505050505050565b6000614ce98283612e87565b9050919050565b600062038fa2614d806c585e8cb5bb7bab2d3e7c000000614d72614d6d791e8123a893b1fa92b99695340490aca0aed84c10000000000000614d5f6962d6e4b9dcb992900000614d51670de0b6b3a76400008b612e8790919063ffffffff16565b612e8790919063ffffffff16565b612f2b90919063ffffffff16565b614d91565b612e0290919063ffffffff16565b811515614d8957fe5b049050919050565b6000806002614da1846001612f2b565b811515614daa57fe5b0490508291505b81811015614de4578091506002614dd38285811515614dcc57fe5b0483612f2b565b811515614ddc57fe5b049050614db1565b509190505600a165627a7a723058204c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba0029
Deployed Bytecode
0x6080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630641d812146101b15780631865c57d14610208578063253515d5146102725780632e37eef6146102c95780632f19c2c11461032d5780632fae38491461039e57806330e73c7614610407578063358fa6c61461047357806335faa416146104b45780633658964c146104cb5780633ccfd60b146105225780633ed4c4c8146105395780634420e4861461058f578063473bc223146105d25780634cddae28146106625780635b48c11b1461066c5780635e0e5b9f146106a8578063773c6dfa146106f35780637a070cba1461075457806380ecc02c146107bd5780638916cbc6146108085780638f56054d1461085f5780639248d4ec146108aa5780639530311e146108eb57806395a2251f14610956578063b1ec676214610999578063bbb0729614610a04578063d1f9c24d14610a4f578063d500f86114610ab2578063d85ef95e14610ae0578063e2eb41ff14610b4b578063e8a915ad14610c26578063fe2506a414610c71578063feca4ef114610cb6575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d22565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061021d610ea4565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561027e57600080fd5b506102b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106d565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102f4600480360381019080803590602001909291905050506111fe565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561033957600080fd5b5061035c600480360381019080803560001916906020019092919050505061123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103aa57600080fd5b506103e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126d565b60405180826000191660001916815260200191505060405180910390f35b34801561041357600080fd5b50610448600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611292565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561047f57600080fd5b5061049e600480360381019080803590602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c961143f565b005b3480156104d757600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376115a3565b005b34801561054557600080fd5b5061056460048036038101908080359060200190929190505050611728565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561059b57600080fd5b506105d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f8565b005b3480156105de57600080fd5b506105e76119a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062757808201518184015260208101905061060c565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066a611a46565b005b61068e6004803603810190808035600019169060200190929190505050611ae3565b604051808215151515815260200191505060405180910390f35b3480156106b457600080fd5b506106dd6004803603810190808035906020019092919080359060200190929190505050611d5d565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b5061073e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d82565b6040518082815260200191505060405180910390f35b34801561076057600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611da7565b60405180826000191660001916815260200191505060405180910390f35b3480156107c957600080fd5b506107f26004803603810190808035906020019092919080359060200190929190505050611e02565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061085d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e27565b005b34801561086b57600080fd5b50610894600480360381019080803590602001909291908035906020019092919050505061210f565b6040518082815260200191505060405180910390f35b3480156108b657600080fd5b506108d560048036038101908080359060200190929190505050612134565b6040518082815260200191505060405180910390f35b3480156108f757600080fd5b506109406004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061215a565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218c565b005b3480156109a557600080fd5b506109ee6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f9565b6040518082815260200191505060405180910390f35b348015610a1057600080fd5b50610a39600480360381019080803590602001909291908035906020019092919050505061292b565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612950565b604051808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b610ade60048036038101908080359060200190929190803560001916906020019092919050505061298c565b005b348015610aec57600080fd5b50610b356004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b6040518082815260200191505060405180910390f35b348015610b5757600080fd5b50610b8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b15565b604051808e81526020018d81526020018c1515151581526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390f35b348015610c3257600080fd5b50610c5b6004803603810190808035906020019092919080359060200190929190505050612ba8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb460048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050612bcd565b005b348015610cc257600080fd5b50610cf7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c93565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b60008060008060009250600191505b60006008015482111515610e9957600090505b6002811015610e8c57610e7d83670de0b6b3a7640000610e6560146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5760156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515610e6e57fe5b04612f2b90919063ffffffff16565b92508080600101915050610d44565b8180600101925050610d31565b829350505050919050565b60008060008060008060008060008060008060008060008060070154945060006008015490506000601260008781526020019081526020016000206001015414158015610f065750601260008681526020019081526020016000206001015442115b8015610f3e57506012600086815260200190815260200160002060020154601260008781526020019081526020016000206003015410155b8015610f4e575060008060050154145b15610fda57610f7e619ab06012600088815260200190815260200160002060010154612f2b90919063ffffffff16565b93506064610fac606e6012600089815260200190815260200160002060040154612e8790919063ffffffff16565b811515610fb557fe5b04925084806001019550506001600460018703811515610fd157fe5b04019050611026565b6012600086815260200190815260200160002060010154935060126000868152602001908152602001600020600501549250601260008681526020019081526020016000206004015491505b600060010154600060020154600060060154878787878760008001546000600301549e509e509e509e509e509e509e509e509e509e50505050505090919293949596979899565b6000806000600260006008015411151561108a57600092506111f7565b60009150600190505b6110ac6002600060080154612e0290919063ffffffff16565b811115156111f3576111e4670de0b6b3a76400006111cb60146000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bd60166000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b6000888152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156111d457fe5b0483612f2b90919063ffffffff16565b91508080600101915050611093565b8192505b5050919050565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c602052816000526040600020602052806000526040600020600091509150505481565b60008060008060006112a386612fb3565b90506112ae866114f9565b816112b888613108565b6112d08460006002015461320d90919063ffffffff16565b9450945094509450509193509193565b60008060026000600801541115156112fb5760009150611439565b60126000806007015481526020019081526020016000206002015461134384601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b11156113a5576113a260126000806007015481526020019081526020016000206002015461139485601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b612e0290919063ffffffff16565b90505b828111156113b1578290505b601860006113ce6002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205481111561143557601860006114126002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205490505b8091505b50919050565b60008060050154118015611471575060126000806007015481526020019081526020016000206001015462278d000142115b156114f757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156114f5573d6000803e3d6000fd5b505b565b60008060008061150885610d22565b92506115138561324c565b915061151e8561106d565b90506115998161158b8461157d87600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b9350505050919050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116513361218c565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611724573d6000803e3d6000fd5b5050565b6000806000806000806000600188141561174557600092506117a7565b6012600061175d60018b612e0290919063ffffffff16565b81526020019081526020016000206004015461179a612710601260008c815260200190815260200160002060040154612e8790919063ffffffff16565b8115156117a357fe5b0492505b600160006007015401881480156117d95750600060126000806007015481526020019081526020016000206001015414155b8015611819575060126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410155b801561183e575060126000806007015481526020019081526020016000206001015442115b15611899576001600460018a0381151561185457fe5b040191506064611888606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561189157fe5b0490506118cc565b60126000898152602001908152602001600020600001549150601260008981526020019081526020016000206005015490505b81601260008a815260200190815260200160002060040154828596509650965096505050509193509193565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119a533826132f8565b50565b601d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a3e5780601f10611a1357610100808354040283529160200191611a3e565b820191906000526020600020905b815481529060010190602001808311611a2157829003601f168201915b505050505081565b611a9b34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550565b6000611af03360006136df565b662386f26fc10000341080611b6d5750600073ffffffffffffffffffffffffffffffffffffffff1660096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611bc2573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611bb8573d6000803e3d6000fd5b5060009050611d58565b3360096000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c726001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c018190555081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c015481526020019081526020016000208160001916905550600190505b919050565b601a602052816000526040600020602052806000526040600020600091509150505481565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6017602052816000526040600020602052806000526040600020600091509150505481565b6000670de0b6b3a7640000611f3d60146000868152602001908152602001600020600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2f60156000888152602001908152602001600020600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a6000898152602001908152602001600020600088815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515611f4657fe5b049050601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612028600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506120c3600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050565b6018602052816000526040600020602052806000526040600020600091509150505481565b60008061214f8360006002015461320d90919063ffffffff16565b905080915050919050565b601560205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6000806000806000809450600080600501541180156121f85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b15612264576122068661324c565b94506001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60009350600192505b6000600801548311151561245f57600091505b6002821015612452576123b9670de0b6b3a76400006123a060146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239260156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156123a957fe5b0485612f2b90919063ffffffff16565b9350601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508180600101925050612280565b828060010193505061226d565b600090506002600060080154111561266157600192505b61248f6002600060080154612e0290919063ffffffff16565b83111515612660576125c7670de0b6b3a76400006125ae60146000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a060166000898152602001908152602001600020600080815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008a8152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156125b757fe5b0482612f2b90919063ffffffff16565b9050601b600084815260200190815260200160002060008081526020019081526020016000205460166000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050612476565b5b6126da600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546126cc836126be888a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061277585600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555061281084600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506128ab81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550505050505050565b601460205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b601b602052816000526040600020602052806000526040600020600091509150505481565b60008060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612a3933826136df565b612a8e34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612adf333484613728565b5050565b601660205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600a6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b01549080600c015490508d565b6019602052816000526040600020602052806000526040600020600091509150505481565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c7a33826136df565b612c833361218c565b612c8e338484613728565b505050565b600080600080612cf6612ca586610d22565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612d96612d458861106d565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b612df3612da28961324c565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b93509350935093509193509193565b6000828211151515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080831415612e9a5760009050612f25565b8183029050818382811515612eab57fe5b04141515612f21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008183019050828110151515612faa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600080600080600191505b600060080154821115156130fd57600090505b60028110156130f05760006019600084815260200190815260200160002060008381526020019081526020016000205411156130e3576130e0601960008481526020019081526020016000206000838152602001908152602001600020546130c76018600086815260200190815260200160002060008581526020019081526020016000205460146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b8115156130d057fe5b0484612f2b90919063ffffffff16565b92505b8080600101915050612fd1565b8180600101925050612fbe565b829350505050919050565b6000806131736001601360008060070154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b905060016000600701541115613204576132016131f2600160136000600160006007015403815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b80915050919050565b600061324461321b84614080565b6132366132318587612f2b90919063ffffffff16565b614080565b612e0290919063ffffffff16565b905092915050565b6000806000600501541180156132af5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b156132ee57670de0b6b3a76400006132dd6132c984613108565b600060040154612e8790919063ffffffff16565b8115156132e657fe5b0490506132f3565b600090505b919050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154111561334b576136d9565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015414806133c757508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133d157600092505b600060060160008154600101919050819055600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090160008154809291906001019190505550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156136d857600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160008154809291906001019190505550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156136d757600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600081548092919060010191905055505b5b5b50505050565b6137248260096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132f8565b5050565b60008060008060008060008089662386f26fc1000081101515156137b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f302e3031455448206d696e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b68056bc75e2d631000008111151515613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f313030455448206d61780000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018a111561384357600199505b6000600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561389a576138998c60006132f8565b5b6138aa8c6000600801548c611e27565b8a600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410151515613964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e73756666696369656e742066756e6400000000000000000000000000000081525060200191505060405180910390fd5b60008b11801561398e57506000601260008060070154815260200190815260200160002060010154145b156139c7576139a8619ab042612f2b90919063ffffffff16565b6012600080600701548152602001908152602001600020600101819055505b60006139d1614112565b11156139dc57614072565b60006008015498506000600701549750613a418b600a60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612e0290919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613a9e8b600080015461442890919063ffffffff16565b9650613aa9876112e0565b9550613abe8688612e0290919063ffffffff16565b9450613ad88560006002015461320d90919063ffffffff16565b9350613aed848c612e0290919063ffffffff16565b92506000861115613c3957613b0c60028a612e0290919063ffffffff16565b9150613b458660186000858152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b60186000848152602001908152602001600020600080815260200190815260200160002081905550613c10601960008481526020019081526020016000206000808152602001908152602001600020546064613bc9670de0b6b3a7640000613bbb600c6005015489612e8790919063ffffffff16565b612e8790919063ffffffff16565b811515613bd257fe5b04811515613bdc57fe5b04601b6000858152602001908152602001600020600080815260200190815260200160002054612f2b90919063ffffffff16565b601b60008481526020019081526020016000206000808152602001908152602001600020819055505b613c5160006002015488612f2b90919063ffffffff16565b600060020181905550613c7260006003015486612f2b90919063ffffffff16565b600060030181905550613c9260008001548c612f2b90919063ffffffff16565b6000800181905550613cc3601260008a81526020019081526020016000206003015488612f2b90919063ffffffff16565b601260008a815260200190815260200160002060030181905550613d06601260008a8152602001908152602001600020600401548c612f2b90919063ffffffff16565b601260008a815260200190815260200160002060040181905550613d57601960008b815260200190815260200160002060008c81526020019081526020016000205488612f2b90919063ffffffff16565b601960008b815260200190815260200160002060008c815260200190815260200160002081905550601960008a815260200190815260200160002060008b815260200190815260200160002054601860008b815260200190815260200160002060008c815260200190815260200160002081905550613e21600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015488612f2b90919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613edb601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fa3601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140236064614014600c600001548e612e8790919063ffffffff16565b81151561401d57fe5b04614467565b61402d8c8c6145cc565b614068606461404a600c6005015487612e8790919063ffffffff16565b81151561405357fe5b04600060010154612f2b90919063ffffffff16565b6000600101819055505b505050505050505050505050565b6000614093670de0b6b3a7640000614cdd565b61410160026140cb6140b6670de0b6b3a764000087612e8790919063ffffffff16565b650cbc40c46e00612e8790919063ffffffff16565b8115156140d457fe5b046140f36140e186614cdd565b6201c7d1612e8790919063ffffffff16565b612f2b90919063ffffffff16565b81151561410a57fe5b049050919050565b6000806000806000600501541115614131576000600501549250614423565b6012600080600701548152602001908152602001600020600101544211156143495760126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410151561433c576001600060070154019150600060046000600701548115156141ae57fe5b0614156141ed57600a60016000600801540111156141d65760026000600501819055506141ec565b6000600801600081548092919060010191905055505b5b600080600501541415614337576000600801546012600084815260200190815260200160002060000181905550614249619ab0601260008060070154815260200190815260200160002060010154612f2b90919063ffffffff16565b60126000848152602001908152602001600020600101819055506064614293606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561429c57fe5b0460126000848152602001908152602001600020600501819055506142e46012600084815260200190815260200160002060050154600080015461442890919063ffffffff16565b6012600084815260200190815260200160002060020181905550816000600701819055506012600080600701548152602001908152602001600020600101544211156143365760016000600501819055505b5b614348565b60016000600501819055505b5b60008060050154111561441a576143846001601260008060070154815260200190815260200160002060030154612e8790919063ffffffff16565b9050600160006007015411156143db576143d86143c9600160126000600160006007015403815260200190815260200160002060030154612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b806143fc670de0b6b3a7640000600060010154612e8790919063ffffffff16565b81151561440557fe5b04600060040181905550600080600101819055505b60006005015492505b505090565b600061445f61443684614cf0565b61445161444c8587612f2b90919063ffffffff16565b614cf0565b612e0290919063ffffffff16565b905092915050565b6000806000806003015461448c670de0b6b3a764000086612e8790919063ffffffff16565b81151561449557fe5b049250600191505b600060080154821115156145c657600090505b6001811115156145b95760006019600084815260200190815260200160002060008381526020019081526020016000205411156145ac57614583601a60008481526020019081526020016000206000838152602001908152602001600020546019600085815260200190815260200160002060008481526020019081526020016000205461456b6018600087815260200190815260200160002060008681526020019081526020016000205487612e8790919063ffffffff16565b81151561457457fe5b04612f2b90919063ffffffff16565b601a60008481526020019081526020016000206000838152602001908152602001600020819055505b80806001019150506144b0565b818060010192505061449d565b50505050565b600080600080600080600060646145f1600c600401548a612e8790919063ffffffff16565b8115156145fa57fe5b0496506064614617600c600101548a612e8790919063ffffffff16565b81151561462057fe5b049550606461463d600c600201548a612e8790919063ffffffff16565b81151561464657fe5b0494506064614663600c600301548a612e8790919063ffffffff16565b81151561466c57fe5b049350600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614c2f5761475f600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506147fa600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515614c0257614930600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506149cb600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614be757614b01600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550614b9c600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550614bfd565b614bfa8488612f2b90919063ffffffff16565b96505b614c2a565b614c2785614c19868a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b614c69565b614c6686614c5887614c4a888c612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015614cd1573d6000803e3d6000fd5b50505050505050505050565b6000614ce98283612e87565b9050919050565b600062038fa2614d806c585e8cb5bb7bab2d3e7c000000614d72614d6d791e8123a893b1fa92b99695340490aca0aed84c10000000000000614d5f6962d6e4b9dcb992900000614d51670de0b6b3a76400008b612e8790919063ffffffff16565b612e8790919063ffffffff16565b612f2b90919063ffffffff16565b614d91565b612e0290919063ffffffff16565b811515614d8957fe5b049050919050565b6000806002614da1846001612f2b565b811515614daa57fe5b0490508291505b81811015614de4578091506002614dd38285811515614dcc57fe5b0483612f2b565b811515614ddc57fe5b049050614db1565b509190505600a165627a7a723058204c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba0029
Swarm Source
bzzr://4c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.