ERC-20
Source Code
Overview
Max Total Supply
17,739,683,980.827762260552181382 PiZZa
Holders
0
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
PiZZa
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-09-21
*/
pragma solidity ^ 0.6.6;
/*
// ""--.._
|| (_) _ "-._
|| _ (_) '-.
|| (_) __..-'
\\__..--""
*/
contract ColorToken{
mapping(address => uint256) public balances;
mapping(address => uint256) public red;
mapping(address => uint256) public green;
mapping(address => uint256) public blue;
uint public _totalSupply;
mapping(address => mapping(address => uint)) approvals;
event Transfer(
address indexed from,
address indexed to,
uint256 amount,
bytes data
);
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
function addColor(address addr, uint color, uint _red, uint _green, uint _blue) internal {
red[addr] += _red * color;
green[addr] += _green * color;
blue[addr] += _blue * color;
}
function RGB_Ratio() public view returns(uint,uint,uint){
return RGB_Ratio(msg.sender);
}
function RGB_Ratio(address addr) public view returns(uint,uint,uint){
uint coloredWeight = balances[addr];
if (coloredWeight==0){
return (0,0,0);
}
return ( red[addr]/coloredWeight, green[addr]/coloredWeight, blue[addr]/coloredWeight);
}
function RGB_scale(address addr, uint numerator, uint denominator) internal view returns(uint,uint,uint){
return (red[addr] * numerator / denominator, green[addr] * numerator / denominator, blue[addr] * numerator / denominator);
}
// Function that is called when a user or another contract wants to transfer funds.
function transfer(address _to, uint _value, bytes memory _data) public virtual returns (bool) {
if( isContract(_to) ){
return transferToContract(_to, _value, _data);
}else{
return transferToAddress(_to, _value, _data);
}
}
// Standard function transfer similar to ERC20 transfer with no _data.
// Added due to backwards compatibility reasons .
function transfer(address _to, uint _value) public virtual returns (bool) {
//standard function transfer similar to ERC20 transfer with no _data
//added due to backwards compatibility reasons
bytes memory empty;
if(isContract(_to)){
return transferToContract(_to, _value, empty);
}else{
return transferToAddress(_to, _value, empty);
}
}
//function that is called when transaction target is an address
function transferToAddress(address _to, uint _value, bytes memory _data) private returns (bool) {
moveTokens(msg.sender, _to, _value);
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
//function that is called when transaction target is a contract
function transferToContract(address _to, uint _value, bytes memory _data) private returns (bool) {
moveTokens(msg.sender, _to, _value);
ERC223ReceivingContract receiver = ERC223ReceivingContract(_to);
receiver.tokenFallback(msg.sender, _value, _data);
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
function moveTokens(address _from, address _to, uint _amount) internal virtual{
(uint red_ratio, uint green_ratio, uint blue_ratio) = RGB_scale( _from, _amount, balances[_from] );
red[_from] -= red_ratio;
green[_from] -= green_ratio;
blue[_from] -= blue_ratio;
red[_to] += red_ratio;
green[_to] += green_ratio;
blue[_to] += blue_ratio;
balances[_from] -= _amount;
balances[_to] += _amount;
}
function allowance(address src, address guy) public view returns (uint) {
return approvals[src][guy];
}
function transferFrom(address src, address dst, uint amount) public returns (bool){
address sender = msg.sender;
require(approvals[src][sender] >= amount);
if (src != sender) {
approvals[src][sender] -= amount;
}
moveTokens(src,dst,amount);
return true;
}
event Approval(address indexed src, address indexed guy, uint amount);
function approve(address guy, uint amount) public returns (bool) {
address sender = msg.sender;
approvals[sender][guy] = amount;
emit Approval( sender, guy, amount );
return true;
}
function isContract(address _addr) public view returns (bool is_contract) {
uint length;
assembly {
//retrieve the size of the code on target address, this needs assembly
length := extcodesize(_addr)
}
if(length>0) {
return true;
}else {
return false;
}
}
}
contract PiZZa is ColorToken{
// scaleFactor is used to convert Ether into bonds and vice-versa: they're of different
// orders of magnitude, hence the need to bridge between the two.
uint256 constant scaleFactor = 0x10000000000000000;
address payable address0 = address(0);
uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;
// Typical values that we have to declare.
string constant public name = "Pizza Token";
string constant public symbol = "PiZZa";
uint8 constant public decimals = 18;
mapping(address => uint256) public average_ethSpent;
// For calculating hodl multiplier that factors into resolves minted
mapping(address => uint256) public average_buyInTimeSum;
// Array between each address and their number of resolves being staked.
mapping(address => uint256) public resolveWeight;
// Array between each address and how much Ether has been paid out to it.
// Note that this is scaled by the scaleFactor variable.
mapping(address => int256) public payouts;
// The total number of resolves being staked in this contract
uint256 public dissolvingResolves;
// For calculating the hodl multiplier. Weighted average release time
uint public sumOfInputETH;
uint public sumOfInputTime;
uint public sumOfOutputETH;
uint public sumOfOutputTime;
// Something about invarience.
int256 public earningsOffset;
// Variable tracking how much Ether each token is currently worth// Note that this is scaled by the scaleFactor variable.
uint256 public earningsPerResolve;
//The resolve token contract
Crust public resolveToken;
constructor() public{
resolveToken = new Crust( address(this) );
}
function fluxFee(uint paidAmount) public view returns (uint fee) {
uint totalResolveSupply = resolveToken.totalSupply() - resolveToken.balanceOf( address(0) );
if ( dissolvingResolves == 0 )
return 0;
return paidAmount * ( totalResolveSupply - dissolvingResolves ) / totalResolveSupply * sumOfOutputETH / sumOfInputETH;
}
// Converts the Ether accrued as resolveEarnings back into bonds without having to
// withdraw it first. Saves on gas and potential price spike loss.
event Reinvest( address indexed addr, uint256 reinvested, uint256 dissolved, uint256 bonds, uint256 resolveTax);
function reinvestEarnings(uint amountFromEarnings) public returns(uint,uint){
address sender = msg.sender;
// Retrieve the resolveEarnings associated with the address the request came from.
uint upScaleDivs = (uint)((int256)( earningsPerResolve * resolveWeight[sender] ) - payouts[sender]);
uint totalEarnings = upScaleDivs / scaleFactor;//resolveEarnings(sender);
require(amountFromEarnings <= totalEarnings, "the amount exceeds total earnings");
uint oldWeight = resolveWeight[sender];
resolveWeight[sender] = oldWeight * (totalEarnings - amountFromEarnings) / totalEarnings;
uint weightDiff = oldWeight - resolveWeight[sender];
resolveToken.transfer( address0, weightDiff );
dissolvingResolves -= weightDiff;
// something about invariance
int withdrawnEarnings = (int)(upScaleDivs * amountFromEarnings / totalEarnings) - (int)(weightDiff*earningsPerResolve);
payouts[sender] += withdrawnEarnings;
// Increase the total amount that's been paid out to maintain invariance.
earningsOffset += withdrawnEarnings;
// Assign balance to a new variable.
uint value_ = (uint) (amountFromEarnings);
// If your resolveEarnings are worth less than 1 szabo, abort.
if (value_ < 0.000001 ether)
revert();
// Calculate the fee
uint fee = fluxFee(value_);
// The amount of Ether used to purchase new bonds for the caller
uint numEther = value_ - fee;
//resolve reward tracking stuff
average_ethSpent[sender] += numEther;
average_buyInTimeSum[sender] += now * scaleFactor * numEther;
sumOfInputETH += numEther;
sumOfInputTime += now * scaleFactor * numEther;
// The number of bonds which can be purchased for numEther.
uint createdBonds = ethereumToTokens_(numEther);
uint[] memory RGB = new uint[](3);
(RGB[0], RGB[1], RGB[2]) = RGB_Ratio(sender);
addColor(sender, createdBonds, RGB[0], RGB[1], RGB[2]);
// the variable stoLOGC the amount to be paid to stakers
uint resolveFee;
// Check if we have bonds in existence
if ( dissolvingResolves > 0 ) {
resolveFee = fee * scaleFactor;
// Fee is distributed to all existing resolve stakers before the new bonds are purchased.
// rewardPerResolve is the amount(ETH) gained per resolve token from this purchase.
uint rewardPerResolve = resolveFee / dissolvingResolves;
// The Ether value per token is increased proportionally.
earningsPerResolve += rewardPerResolve;
}
// Add the createdBonds to the total supply.
_totalSupply += createdBonds;
// Assign the bonds to the balance of the buyer.
balances[sender] += createdBonds;
emit Reinvest(sender, value_, weightDiff, createdBonds, resolveFee);
return (createdBonds, weightDiff);
}
// Sells your bonds for Ether
function sellAllBonds() public returns(uint returned_eth, uint returned_resolves, uint initialInput_ETH){
return sell( balanceOf(msg.sender) );
}
function sellBonds(uint amount) public returns(uint returned_eth, uint returned_resolves, uint initialInput_ETH){
uint balance = balanceOf(msg.sender);
require(balance >= amount, "Amount is more than balance");
( returned_eth, returned_resolves, initialInput_ETH ) = sell(amount);
return (returned_eth, returned_resolves, initialInput_ETH);
}
// Big red exit button to pull all of a holder's Ethereum value from the contract
function getMeOutOfHere() public {
sellAllBonds();
withdraw( resolveEarnings(msg.sender) );
}
// Gatekeeper function to check if the amount of Ether being sent isn't too small
function fund() payable public returns(uint createdBonds){
uint[] memory RGB = new uint[](3);
(RGB[0], RGB[1], RGB[2]) = RGB_Ratio(msg.sender);
return buy(msg.sender, RGB[0], RGB[1], RGB[2]);
}
// Calculate the current resolveEarnings associated with the caller address. This is the net result
// of multiplying the number of resolves held by their current value in Ether and subtracting the
// Ether that has already been paid out.
function resolveEarnings(address _owner) public view returns (uint256 amount) {
return (uint256) ((int256)(earningsPerResolve * resolveWeight[_owner]) - payouts[_owner]) / scaleFactor;
}
event Buy( address indexed addr, uint256 spent, uint256 bonds, uint256 resolveTax);
function buy(address addr, uint _red, uint _green, uint _blue) public payable returns(uint createdBonds){
if(_red>1e18) _red = 1e18;
if(_green>1e18) _green = 1e18;
if(_blue>1e18) _blue = 1e18;
// Any transaction of less than 1 szabo is likely to be worth less than the gas used to send it.
if ( msg.value < 0.000001 ether )
revert();
// Calculate the fee
uint fee = fluxFee(msg.value);
// The amount of Ether used to purchase new bonds for the caller.
uint numEther = msg.value - fee;
//resolve reward tracking stuff
uint currentTime = now;
average_ethSpent[addr] += numEther;
average_buyInTimeSum[addr] += currentTime * scaleFactor * numEther;
sumOfInputETH += numEther;
sumOfInputTime += currentTime * scaleFactor * numEther;
// The number of bonds which can be purchased for numEther.
createdBonds = ethereumToTokens_(numEther);
addColor(addr, createdBonds, _red, _green, _blue);
// Add the createdBonds to the total supply.
_totalSupply += createdBonds;
// Assign the bonds to the balance of the buyer.
balances[addr] += createdBonds;
// Check if we have bonds in existence
uint resolveFee;
if (dissolvingResolves > 0) {
resolveFee = fee * scaleFactor;
// Fee is distributed to all existing resolve holders before the new bonds are purchased.
// rewardPerResolve is the amount gained per resolve token from this purchase.
uint rewardPerResolve = resolveFee/dissolvingResolves;
// The Ether value per resolve is increased proportionally.
earningsPerResolve += rewardPerResolve;
}
emit Buy( addr, msg.value, createdBonds, resolveFee);
return createdBonds;
}
function avgHodl() public view returns(uint hodlTime){
return now - (sumOfInputTime - sumOfOutputTime) / (sumOfInputETH - sumOfOutputETH) / scaleFactor;
}
function getReturnsForBonds(address addr, uint bondsReleased) public view returns(uint etherValue, uint mintedResolves, uint new_releaseTimeSum, uint new_releaseAmount, uint initialInput_ETH){
uint output_ETH = tokensToEthereum_(bondsReleased);
uint input_ETH = average_ethSpent[addr] * bondsReleased / balances[addr];
// hodl multiplier. because if you don't hodl at all, you shouldn't be rewarded resolves.
// and the multiplier you get for hodling needs to be relative to the average hodl
uint buyInTime = average_buyInTimeSum[addr] / average_ethSpent[addr];
uint cashoutTime = now * scaleFactor - buyInTime;
uint new_sumOfOutputTime = sumOfOutputTime + average_buyInTimeSum[addr] * bondsReleased / balances[addr];
uint new_sumOfOutputETH = sumOfOutputETH + input_ETH; //It's based on the original ETH, so that's why input_ETH is used. Not output_ETH.
uint averageHoldingTime = now * scaleFactor - ( sumOfInputTime - sumOfOutputTime ) / ( sumOfInputETH - sumOfOutputETH );
return (output_ETH, input_ETH * cashoutTime / averageHoldingTime * input_ETH / output_ETH, new_sumOfOutputTime, new_sumOfOutputETH, input_ETH);
}
event Sell( address indexed addr, uint256 bondsSold, uint256 cashout, uint256 resolves, uint256 resolveTax, uint256 initialCash);
function sell(uint256 amount) internal returns(uint eth, uint resolves, uint initialInput){
address payable sender = msg.sender;
// Calculate the amount of Ether & Resolves that the holder's bonds sell for at the current sell price.
uint[] memory UINTs = new uint[](5);
(
UINTs[0]/*ether before fee*/,
UINTs[1]/*minted resolves*/,
UINTs[2]/*new_sumOfOutputTime*/,
UINTs[3]/*new_sumOfOutputETH*/,
UINTs[4]/*initialInput_ETH*/) = getReturnsForBonds(sender, amount);
// calculate the fee
uint fee = fluxFee(UINTs[0]/*ether before fee*/);
// magic distribution
uint[] memory RGB = new uint[](3);
(RGB[0], RGB[1], RGB[2]) = RGB_Ratio(sender);
resolveToken.mint(sender, UINTs[1]/*minted resolves*/, RGB[0], RGB[1], RGB[2]);
// update weighted average cashout time
sumOfOutputTime = UINTs[2]/*new_sumOfOutputTime*/;
sumOfOutputETH = UINTs[3] /*new_sumOfOutputETH*/;
// reduce the amount of "eth spent" based on the percentage of bonds being sold back into the contract
average_ethSpent[sender] = average_ethSpent[sender] * ( balances[sender] - amount) / balances[sender];
// reduce the "buyInTime" sum that's used for average buy in time
average_buyInTimeSum[sender] = average_buyInTimeSum[sender] * (balances[sender] - amount) / balances[sender];
// Net Ether for the seller after the fee has been subtracted.
uint numEthers = UINTs[0]/*ether before fee*/ - fee;
// Burn the bonds which were just sold from the total supply.
_totalSupply -= amount;
// maintain color density
thinColor( sender, balances[sender] - amount, balances[sender]);
// Remove the bonds from the balance of the buyer.
balances[sender] -= amount;
// Check if we have bonds in existence
uint resolveFee;
if ( dissolvingResolves > 0 ){
// Scale the Ether taken as the selling fee by the scaleFactor variable.
resolveFee = fee * scaleFactor;
// Fee is distributed to all remaining resolve holders.
// rewardPerResolve is the amount gained per resolve thanks to this sell.
uint rewardPerResolve = resolveFee/dissolvingResolves;
// The Ether value per resolve is increased proportionally.
earningsPerResolve += rewardPerResolve;
}
(bool success, ) = sender.call{value:numEthers}("");
require(success, "Transfer failed.");
emit Sell( sender, amount, numEthers, UINTs[1]/*minted resolves*/, resolveFee, UINTs[4] /*initialInput_ETH*/);
return (numEthers, UINTs[1]/*minted resolves*/, UINTs[4] /*initialInput_ETH*/);
}
function thinColor(address addr, uint newWeight, uint oldWeight) internal{
(red[addr], green[addr], blue[addr]) = RGB_scale( addr, newWeight, oldWeight);
}
// Allow contract to accept resolve tokens
event StakeResolves( address indexed addr, uint256 amountStaked, bytes _data );
function tokenFallback(address from, uint value, bytes calldata _data) external{
if(msg.sender == address(resolveToken) ){
resolveWeight[from] += value;
dissolvingResolves += value;
// Then we update the payouts array for the "resolve shareholder" with this amount
int payoutDiff = (int256) (earningsPerResolve * value);
payouts[from] += payoutDiff;
earningsOffset += payoutDiff;
emit StakeResolves(from, value, _data);
}else{
revert("no want");
}
}
// Withdraws resolveEarnings held by the caller sending the transaction, updates
// the requisite global variables, and transfers Ether back to the caller.
event Withdraw( address indexed addr, uint256 earnings, uint256 dissolve );
function withdraw(uint amount) public returns(uint){
address payable sender = msg.sender;
// Retrieve the resolveEarnings associated with the address the request came from.
uint upScaleDivs = (uint)((int256)( earningsPerResolve * resolveWeight[sender] ) - payouts[sender]);
uint totalEarnings = upScaleDivs / scaleFactor;
require( amount <= totalEarnings && amount > 0 );
uint oldWeight = resolveWeight[sender];
resolveWeight[sender] = oldWeight * ( totalEarnings - amount ) / totalEarnings;
uint weightDiff = oldWeight - resolveWeight[sender];
resolveToken.transfer( address0, weightDiff);
dissolvingResolves -= weightDiff;
// something about invariance
int withdrawnEarnings = (int)(upScaleDivs * amount / totalEarnings) - (int)(weightDiff*earningsPerResolve);
payouts[sender] += withdrawnEarnings;
// Increase the total amount that's been paid out to maintain invariance.
earningsOffset += withdrawnEarnings;
// Send the resolveEarnings to the address that requested the withdraw.
(bool success, ) = sender.call{value: amount}("");
require(success, "Transfer failed.");
emit Withdraw( sender, amount, weightDiff);
return weightDiff;
}
event PullResolves( address indexed addr, uint256 pulledResolves, uint256 forfeiture);
function pullResolves(uint amount) public returns (uint forfeiture){
address sender = msg.sender;
uint resolves = resolveWeight[ sender ];
require(amount <= resolves && amount > 0);
require(amount < dissolvingResolves);//"you can't forfeit the last resolve"
uint yourTotalEarnings = (uint)((int256)(resolves * earningsPerResolve) - payouts[sender]);
uint forfeitedEarnings = yourTotalEarnings * amount / resolves;
// Update the payout array so that the "resolve shareholder" cannot claim resolveEarnings on previous staked resolves.
payouts[sender] += (int256)(forfeitedEarnings) - (int256)(earningsPerResolve * amount);
resolveWeight[sender] -= amount;
dissolvingResolves -= amount;
// The Ether value per token is increased proportionally.
earningsPerResolve += forfeitedEarnings / dissolvingResolves;
resolveToken.transfer( sender, amount );
emit PullResolves( sender, amount, forfeitedEarnings / scaleFactor);
return forfeitedEarnings / scaleFactor;
}
function moveTokens(address _from, address _to, uint _amount) internal override{
uint totalBonds = balances[_from];
require(_amount <= totalBonds && _amount > 0);
uint ethSpent = average_ethSpent[_from] * _amount / totalBonds;
uint buyInTimeSum = average_buyInTimeSum[_from] * _amount / totalBonds;
average_ethSpent[_from] -= ethSpent;
average_buyInTimeSum[_from] -= buyInTimeSum;
balances[_from] -= _amount;
average_ethSpent[_to] += ethSpent;
average_buyInTimeSum[_to] += buyInTimeSum;
balances[_to] += _amount;
super.moveTokens(_from, _to, _amount);
}
function buyPrice()
public
view
returns(uint256)
{
// our calculation relies on the token supply, so we need supply. Doh.
if(_totalSupply == 0){
return tokenPriceInitial_ + tokenPriceIncremental_;
} else {
uint256 _ethereum = tokensToEthereum_(1e18);
uint256 _dividends = fluxFee(_ethereum );
uint256 _taxedEthereum = _ethereum + _dividends;
return _taxedEthereum;
}
}
function sellPrice()
public
view
returns(uint256)
{
// our calculation relies on the token supply, so we need supply. Doh.
if(_totalSupply == 0){
return tokenPriceInitial_ - tokenPriceIncremental_;
} else {
uint256 _ethereum = tokensToEthereum_(1e18);
uint256 _dividends = fluxFee(_ethereum );
uint256 _taxedEthereum = subtract(_ethereum, _dividends);
return _taxedEthereum;
}
}
function calculateTokensReceived(uint256 _ethereumToSpend)
public
view
returns(uint256)
{
uint256 _dividends = fluxFee(_ethereumToSpend);
uint256 _taxedEthereum = subtract(_ethereumToSpend, _dividends);
uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
return _amountOfTokens;
}
function calculateEthereumReceived(uint256 _tokensToSell)
public
view
returns(uint256)
{
require(_tokensToSell <= _totalSupply);
uint256 _ethereum = tokensToEthereum_(_tokensToSell);
uint256 _dividends = fluxFee(_ethereum );
uint256 _taxedEthereum = subtract(_ethereum, _dividends);
return _taxedEthereum;
}
function ethereumToTokens_(uint256 _ethereum)
internal
view
returns(uint256)
{
uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
uint256 _tokensReceived =
(
(
// underflow attempts BTFO
subtract(
(sqrt
(
(_tokenPriceInitial**2)
+
(2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
+
(((tokenPriceIncremental_)**2)*(_totalSupply**2))
+
(2*(tokenPriceIncremental_)*_tokenPriceInitial*_totalSupply)
)
), _tokenPriceInitial
)
)/(tokenPriceIncremental_)
)-(_totalSupply)
;
return _tokensReceived;
}
function tokensToEthereum_(uint256 _tokens)
internal
view
returns(uint256)
{
uint256 tokens_ = (_tokens + 1e18);
uint256 _tokenSupply = (_totalSupply + 1e18);
uint256 _etherReceived =
(
// underflow attempts BTFO
subtract(
(
(
(
tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18))
)-tokenPriceIncremental_
)*(tokens_ - 1e18)
),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
)
/1e18);
return _etherReceived;
}
function sqrt(uint x) internal pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
function subtract(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
}
abstract contract ERC223ReceivingContract{
function tokenFallback(address _from, uint _value, bytes calldata _data) external virtual;
}
contract Crust is ColorToken{
string public name = "Color";
string public symbol = "`c";
uint8 constant public decimals = 18;
address public hourglass;
constructor(address _hourglass) public{
hourglass = _hourglass;
}
modifier hourglassOnly{
require(msg.sender == hourglass);
_;
}
event Transfer(
address indexed from,
address indexed to,
uint256 amount,
bytes data
);
event Mint(
address indexed addr,
uint256 amount
);
function mint(address _address, uint _value, uint _red, uint _green, uint _blue) external hourglassOnly(){
balances[_address] += _value;
_totalSupply += _value;
addColor(_address, _value, _red, _green, _blue);
emit Mint(_address, _value);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"guy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"spent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"resolveTax","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"pulledResolves","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"forfeiture","type":"uint256"}],"name":"PullResolves","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"reinvested","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dissolved","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"resolveTax","type":"uint256"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"bondsSold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cashout","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"resolves","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"resolveTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"initialCash","type":"uint256"}],"name":"Sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountStaked","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_data","type":"bytes"}],"name":"StakeResolves","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"earnings","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dissolve","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"RGB_Ratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"RGB_Ratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"guy","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"average_buyInTimeSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"average_ethSpent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"avgHodl","outputs":[{"internalType":"uint256","name":"hodlTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"_red","type":"uint256"},{"internalType":"uint256","name":"_green","type":"uint256"},{"internalType":"uint256","name":"_blue","type":"uint256"}],"name":"buy","outputs":[{"internalType":"uint256","name":"createdBonds","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dissolvingResolves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earningsOffset","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earningsPerResolve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"paidAmount","type":"uint256"}],"name":"fluxFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fund","outputs":[{"internalType":"uint256","name":"createdBonds","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMeOutOfHere","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"bondsReleased","type":"uint256"}],"name":"getReturnsForBonds","outputs":[{"internalType":"uint256","name":"etherValue","type":"uint256"},{"internalType":"uint256","name":"mintedResolves","type":"uint256"},{"internalType":"uint256","name":"new_releaseTimeSum","type":"uint256"},{"internalType":"uint256","name":"new_releaseAmount","type":"uint256"},{"internalType":"uint256","name":"initialInput_ETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"green","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"is_contract","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payouts","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"pullResolves","outputs":[{"internalType":"uint256","name":"forfeiture","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"red","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountFromEarnings","type":"uint256"}],"name":"reinvestEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"resolveEarnings","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resolveToken","outputs":[{"internalType":"contract Crust","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"resolveWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellAllBonds","outputs":[{"internalType":"uint256","name":"returned_eth","type":"uint256"},{"internalType":"uint256","name":"returned_resolves","type":"uint256"},{"internalType":"uint256","name":"initialInput_ETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellBonds","outputs":[{"internalType":"uint256","name":"returned_eth","type":"uint256"},{"internalType":"uint256","name":"returned_resolves","type":"uint256"},{"internalType":"uint256","name":"initialInput_ETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumOfInputETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumOfInputTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumOfOutputETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumOfOutputTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600680546001600160a01b03191690553480156200002157600080fd5b5030604051620000319062000086565b6001600160a01b03909116815260405190819003602001906000f0801580156200005f573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b039290921691909117905562000094565b610f038062002aae83390190565b612a0a80620000a46000396000f3fe6080604052600436106102885760003560e01c80637060ec021161015a578063b1e35242116100c1578063dd62ed3e1161007a578063dd62ed3e14610ac3578063e0cfe6ba14610afe578063e3c4d97d14610b13578063e8d310d214610b46578063ec5899e414610b5b578063ee4350ed14610b7057610288565b8063b1e35242146108d4578063b60d4288146108eb578063b65a9bcf146108f3578063be45fd6214610926578063c0ee0b8a146109ee578063dce0501014610a8057610288565b806395d89b411161011357806395d89b41146107f85780639843fc791461080d578063a3e5301c14610840578063a9059cbb14610871578063a9c0effd146108aa578063aa574244146108bf57610288565b80637060ec021461070257806370a08231146107175780638544d3fa1461074a5780638620410b1461077d57806390dbc6b21461079257806394b3a2a3146107c557610288565b80632446ce3f116101fe5780633eaaf86b116101b75780633eaaf86b146105f95780634851f91a1461060e5780634b6f1671146106415780634b7503341461065657806365bcfbe71461066b5780636a540df01461069e57610288565b80632446ce3f1461051457806327e235e314610529578063288237741461055c5780632e1a7d4d14610571578063313ce5671461059b5780633a9430ff146105c657610288565b80631627905511610250578063162790551461040257806318160ddd146104355780631f278b641461044a5780631fc5cfc41461047d57806322609373146104a757806323b872dd146104d157610288565b806306fdde031461028d578063095ea7b31461031757806310d0ffdd146103645780631554784a146103a05780631622dbe4146103ca575b600080fd5b34801561029957600080fd5b506102a2610b9a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dc5781810151838201526020016102c4565b50505050905090810190601f1680156103095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610bc1565b604080519115158252519081900360200190f35b34801561037057600080fd5b5061038e6004803603602081101561038757600080fd5b5035610c2e565b60408051918252519081900360200190f35b3480156103ac57600080fd5b5061038e600480360360208110156103c357600080fd5b5035610c60565b61038e600480360360808110156103e057600080fd5b506001600160a01b038135169060208101359060408101359060600135610d8a565b34801561040e57600080fd5b506103506004803603602081101561042557600080fd5b50356001600160a01b0316610f16565b34801561044157600080fd5b5061038e610f3a565b34801561045657600080fd5b5061038e6004803603602081101561046d57600080fd5b50356001600160a01b0316610f41565b34801561048957600080fd5b5061038e600480360360208110156104a057600080fd5b5035610f53565b3480156104b357600080fd5b5061038e600480360360208110156104ca57600080fd5b50356110f3565b3480156104dd57600080fd5b50610350600480360360608110156104f457600080fd5b506001600160a01b0381358116916020810135909116906040013561112a565b34801561052057600080fd5b5061038e6111b8565b34801561053557600080fd5b5061038e6004803603602081101561054c57600080fd5b50356001600160a01b03166111be565b34801561056857600080fd5b5061038e6111d0565b34801561057d57600080fd5b5061038e6004803603602081101561059457600080fd5b50356111d6565b3480156105a757600080fd5b506105b0611409565b6040805160ff9092168252519081900360200190f35b3480156105d257600080fd5b506105db61140e565b60408051938452602084019290925282820152519081900360600190f35b34801561060557600080fd5b5061038e611427565b34801561061a57600080fd5b5061038e6004803603602081101561063157600080fd5b50356001600160a01b031661142d565b34801561064d57600080fd5b5061038e611463565b34801561066257600080fd5b5061038e611469565b34801561067757600080fd5b5061038e6004803603602081101561068e57600080fd5b50356001600160a01b03166114bb565b3480156106aa57600080fd5b506106d7600480360360408110156106c157600080fd5b506001600160a01b0381351690602001356114cd565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561070e57600080fd5b5061038e6115e6565b34801561072357600080fd5b5061038e6004803603602081101561073a57600080fd5b50356001600160a01b03166115ec565b34801561075657600080fd5b5061038e6004803603602081101561076d57600080fd5b50356001600160a01b0316611607565b34801561078957600080fd5b5061038e611619565b34801561079e57600080fd5b506105db600480360360208110156107b557600080fd5b50356001600160a01b031661165f565b3480156107d157600080fd5b5061038e600480360360208110156107e857600080fd5b50356001600160a01b0316611710565b34801561080457600080fd5b506102a2611722565b34801561081957600080fd5b5061038e6004803603602081101561083057600080fd5b50356001600160a01b0316611743565b34801561084c57600080fd5b50610855611755565b604080516001600160a01b039092168252519081900360200190f35b34801561087d57600080fd5b506103506004803603604081101561089457600080fd5b506001600160a01b038135169060200135611764565b3480156108b657600080fd5b5061038e611794565b3480156108cb57600080fd5b506105db61179a565b3480156108e057600080fd5b506108e96117b0565b005b61038e6117cf565b3480156108ff57600080fd5b5061038e6004803603602081101561091657600080fd5b50356001600160a01b0316611897565b34801561093257600080fd5b506103506004803603606081101561094957600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561097957600080fd5b82018360208201111561098b57600080fd5b803590602001918460018302840111640100000000831117156109ad57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118a9945050505050565b3480156109fa57600080fd5b506108e960048036036060811015610a1157600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610a4157600080fd5b820183602082011115610a5357600080fd5b80359060200191846001830284011164010000000083111715610a7557600080fd5b5090925090506118d6565b348015610a8c57600080fd5b50610aaa60048036036020811015610aa357600080fd5b50356119da565b6040805192835260208301919091528051918290030190f35b348015610acf57600080fd5b5061038e60048036036040811015610ae657600080fd5b506001600160a01b0381358116916020013516611d46565b348015610b0a57600080fd5b5061038e611d71565b348015610b1f57600080fd5b5061038e60048036036020811015610b3657600080fd5b50356001600160a01b0316611d9d565b348015610b5257600080fd5b5061038e611daf565b348015610b6757600080fd5b5061038e611db5565b348015610b7c57600080fd5b506105db60048036036020811015610b9357600080fd5b5035611dbb565b6040518060400160405280600b81526020016a2834bd3d30902a37b5b2b760a91b81525081565b3360008181526005602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080610c3a83610c60565b90506000610c488483611e38565b90506000610c5582611e4a565b93505050505b919050565b601254604080516370a0823160e01b81526000600482018190529151919283926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b5051601254604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d6020811015610d4c57600080fd5b5051600b549190039150610d64576000915050610c5b565b600c54600e5482600b548403860281610d7957fe5b040281610d8257fe5b049392505050565b6000670de0b6b3a7640000841115610da857670de0b6b3a764000093505b670de0b6b3a7640000831115610dc457670de0b6b3a764000092505b670de0b6b3a7640000821115610de057670de0b6b3a764000091505b64e8d4a51000341015610df257600080fd5b6000610dfd34610c60565b6001600160a01b03871660009081526007602090815260408083208054348690039081019091556008909252909120805442808402600160401b02918201909255600c805484019055600d8054909101905591925090610e5c82611e4a565b9350610e6b8885898989611ee0565b60048054850190556001600160a01b0388166000908152602081905260408120805486019055600b5415610ebe57600160401b840290506000600b548281610eaf57fe5b60118054929091049091019055505b604080513481526020810187905280820183905290516001600160a01b038b16917fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d919081900360600190a250505050949350505050565b6000813b8015610f2a576001915050610c5b565b6000915050610c5b565b50919050565b6004545b90565b60026020526000908152604090205481565b33600081815260096020526040812054909190808411801590610f765750600084115b610f7f57600080fd5b600b548410610f8d57600080fd5b6001600160a01b0382166000908152600a6020526040812054601154830203908286830281610fb857fe5b6011546001600160a01b0387166000908152600a602090815260408083208054948d02969095049586039093019093556009909252902080548890039055600b805488900390819055909150818161100c57fe5b601180549290910490910190556012546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018a90529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561106f57600080fd5b505af1158015611083573d6000803e3d6000fd5b505050506040513d602081101561109957600080fd5b505060408051878152600160401b8304602082015281516001600160a01b038716927ff597bb09fb98a90b578e74952df9d7e06d7505f52a264d786bb11770873dccb2928290030190a2600160401b900495945050505050565b600060045482111561110457600080fd5b600061110f83611f2b565b9050600061111c82610c60565b90506000610c558383611e38565b6001600160a01b038316600090815260056020908152604080832033808552925282205483111561115a57600080fd5b806001600160a01b0316856001600160a01b0316146111a0576001600160a01b038086166000908152600560209081526040808320938516835292905220805484900390555b6111ab858585611f9e565b60019150505b9392505050565b600e5481565b60006020819052908152604090205481565b600b5481565b336000818152600a602090815260408083205460099092528220546011549293920203600160401b81048085118015906112105750600085115b61121957600080fd5b6001600160a01b0383166000908152600960205260409020548186810382028161123f57fe5b6001600160a01b0380871660009081526009602090815260408083209590940494859055601254600654855163a9059cbb60e01b81529085166004820152958703602487018190529451949593169363a9059cbb93604480820194918390030190829087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d60208110156112db57600080fd5b5050600b80548290039055601154600090820284868a02816112f957fe5b6001600160a01b0389166000818152600a6020526040808220805495909404959095039384019092556010805484019055925191935091908a908381818185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b50509050806113b9576040805162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015290519081900360640190fd5b604080518a81526020810185905281516001600160a01b038a16927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a25090979650505050505050565b601281565b600080600061141c3361165f565b925092509250909192565b60045481565b6001600160a01b03166000908152600a6020908152604080832054600990925290912054601154600160401b9102919091030490565b60115481565b60006004546000141561148257506414f46b0400610f3e565b6000611495670de0b6b3a7640000611f2b565b905060006114a282610c60565b905060006114b08383611e38565b9350610f3e92505050565b600a6020526000908152604090205481565b6000806000806000806114df87611f2b565b6001600160a01b038916600090815260208181526040808320546007909252822054929350909189028161150f57fe5b6001600160a01b038b166000908152600760209081526040808320546008909252822054939092049350918161154157fe5b6001600160a01b038c1660009081526020818152604080832054600890925282205493909204935042600160401b02849003929091908c028161158057fe5b04600f54019050600084600e540190506000600e54600c5403600f54600d5403816115a757fe5b04600160401b420203905086878783878a02816115c057fe5b0402816115c957fe5b919d5090049a509198509650929450505050509295509295909350565b60105481565b6001600160a01b031660009081526020819052604090205490565b60086020526000908152604090205481565b600060045460001415611632575064199c82cc00610f3e565b6000611645670de0b6b3a7640000611f2b565b9050600061165282610c60565b919091019150610f3e9050565b6001600160a01b038116600090815260208190526040812054819081908061169257600080600093509350935050611709565b6001600160a01b0385166000908152600160205260409020548190816116b457fe5b6001600160a01b038716600090815260026020526040902054919004908290816116da57fe5b6001600160a01b0388166000908152600360205260409020549190049083908161170057fe5b04935093509350505b9193909250565b60076020526000908152604090205481565b6040518060400160405280600581526020016450695a5a6160d81b81525081565b60016020526000908152604090205481565b6012546001600160a01b031681565b6000606061177184610f16565b15611789576117818484836120a2565b915050610c28565b611781848483612243565b600d5481565b600080600061141c6117ab336115ec565b61230f565b6117b861179a565b5050506117cc6117c73361142d565b6111d6565b50565b60408051600380825260808201909252600091606091906020820183803683370190505090506117fe3361165f565b8360008151811061180b57fe5b602002602001018460018151811061181f57fe5b602002602001018560028151811061183357fe5b60200260200101838152508381525083815250505050611891338260008151811061185a57fe5b60200260200101518360018151811061186f57fe5b60200260200101518460028151811061188457fe5b6020026020010151610d8a565b91505090565b60036020526000908152604090205481565b60006118b484610f16565b156118cb576118c48484846120a2565b90506111b1565b6118c4848484612243565b6012546001600160a01b031633141561199d576001600160a01b0384166000818152600960209081526040808320805488019055600b805488019055601154600a83529281902080549388029384019055601080548401905580518781529182018181529082018590529192917f496d21a3791df17b9e71acba0bd6c88352f3da2636dc2bfae959f09af6c4fb999187918791879160608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a2506119d4565b6040805162461bcd60e51b81526020600482015260076024820152661b9bc81dd85b9d60ca1b604482015290519081900360640190fd5b50505050565b336000818152600a60209081526040808320546009909252822054601154929384939092910203600160401b810480861115611a475760405162461bcd60e51b81526004018080602001828103825260218152602001806129b46021913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205481878103820281611a6d57fe5b6001600160a01b0380871660009081526009602090815260408083209590940494859055601254600654855163a9059cbb60e01b81529085166004820152958703602487018190529451949593169363a9059cbb93604480820194918390030190829087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050506040513d6020811015611b0957600080fd5b5050600b80548290039055601154600090820284868b0281611b2757fe5b6001600160a01b0389166000908152600a6020526040902080549290910492909203908101909155601080548201905590508864e8d4a51000811015611b6c57600080fd5b6000611b7782610c60565b6001600160a01b03891660009081526007602090815260408083208054858803908101909155600890925282208054428302600160401b02908101909155600c805483019055600d80549091019055919250611bd282611e4a565b6040805160038082526080820190925291925060609190602082018380368337019050509050611c018b61165f565b83600081518110611c0e57fe5b6020026020010184600181518110611c2257fe5b6020026020010185600281518110611c3657fe5b60200260200101838152508381525083815250505050611c958b8383600081518110611c5e57fe5b602002602001015184600181518110611c7357fe5b602002602001015185600281518110611c8857fe5b6020026020010151611ee0565b600b5460009015611cc557600160401b850290506000600b548281611cb657fe5b60118054929091049091019055505b60048054840190556001600160a01b038c166000818152602081815260409182902080548701905581518981529081018b90528082018690526060810184905290517fc7209ba1b691ad661f5afd3d5360a45f0f4e3dac25357bf4f346e73166f35c939181900360800190a250909b50949950505050505050505050915091565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000600160401b600e54600c5403600f54600d540381611d8d57fe5b0481611d9557fe5b044203905090565b60096020526000908152604090205481565b600f5481565b600c5481565b600080600080611dca336115ec565b905084811015611e21576040805162461bcd60e51b815260206004820152601b60248201527f416d6f756e74206973206d6f7265207468616e2062616c616e63650000000000604482015290519081900360640190fd5b611e2a8561230f565b919790965090945092505050565b600082821115611e4457fe5b50900390565b6004546000906c01431e0fae6d7217caa00000009082906402540be400611ecf611ec9730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e400000000000000016127f0565b85611e38565b81611ed657fe5b0403949350505050565b6001600160a01b039490941660009081526001602090815260408083208054958702909501909455600281528382208054938602909301909255600390915220805491909202019055565b600454600090670de0b6b3a7640000808401918101908390611f8d866402540be4008386046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381611f7857fe5b046402540be4000281611f8757fe5b04611e38565b81611f9457fe5b0495945050505050565b6001600160a01b038316600090815260208190526040902054808211801590611fc75750600082115b611fd057600080fd5b6001600160a01b0384166000908152600760205260408120548290840281611ff457fe5b6001600160a01b03871660009081526008602052604081205492909104925090839085028161201f57fe5b6001600160a01b03808916600090815260076020818152604080842080548a9003905560088083528185208054989097049788900390965583825280842080548c90039055938b168352908152828220805488019055928352818120805485019055918290529020805486019055905061209a868686612821565b505050505050565b60006120af338585611f9e565b60405163607705c560e11b815233600482018181526024830186905260606044840190815285516064850152855188946001600160a01b0386169463c0ee0b8a9490938a938a9360840190602085019080838360005b8381101561211d578181015183820152602001612105565b50505050905090810190601f16801561214a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561216b57600080fd5b505af115801561217f573d6000803e3d6000fd5b50505050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121fd5781810151838201526020016121e5565b50505050905090810190601f16801561222a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000612250338585611f9e565b836001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122ca5781810151838201526020016122b2565b50505050905090810190601f1680156122f75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b60408051600580825260c082019092526000918291829133916060916020820160a08036833701905050905061234582876114cd565b8560008151811061235257fe5b602002602001018660018151811061236657fe5b602002602001018760028151811061237a57fe5b602002602001018860038151811061238e57fe5b60200260200101896004815181106123a257fe5b602002602001018581525085815250858152508581525085815250505050505060006123e1826000815181106123d457fe5b6020026020010151610c60565b60408051600380825260808201909252919250606091906020820183803683370190505090506124108461165f565b8360008151811061241d57fe5b602002602001018460018151811061243157fe5b602002602001018560028151811061244557fe5b60209081029190910101929092529190525260125483516001600160a01b039091169063f92883a29086908690600190811061247d57fe5b60200260200101518460008151811061249257fe5b6020026020010151856001815181106124a757fe5b6020026020010151866002815181106124bc57fe5b60200260200101516040518663ffffffff1660e01b815260040180866001600160a01b0316815260200185815260200184815260200183815260200182815260200195505050505050600060405180830381600087803b15801561251f57600080fd5b505af1158015612533573d6000803e3d6000fd5b505050508260028151811061254457fe5b6020026020010151600f819055508260038151811061255f57fe5b602090810291909101810151600e556001600160a01b03851660009081528082526040808220546007909352902054898203028161259957fe5b6001600160a01b038616600090815260076020908152604080832094909304909355808352818120546008909352205489820302816125d457fe5b6001600160a01b038616600090815260086020526040812092909104909155835183908590839061260157fe5b602090810291909101810151600480548d900390556001600160a01b03881660009081529182905260409091205491900391506126439086908b8103906128e9565b6001600160a01b038516600090815260208190526040812080548b90039055600b541561268f57600160401b840290506000600b54828161268057fe5b60118054929091049091019055505b6040516000906001600160a01b0388169084908381818185875af1925050503d80600081146126da576040519150601f19603f3d011682016040523d82523d6000602084013e6126df565b606091505b5050905080612728576040805162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015290519081900360640190fd5b866001600160a01b03167f20a7fc03b19d7f251cc907f177ff82194c6aebe9a2b47e1cd734dcb6bf772cc28c858960018151811061276257fe5b6020026020010151868b60048151811061277857fe5b6020026020010151604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a282866001815181106127bf57fe5b6020026020010151876004815181106127d457fe5b6020026020010151995099509950505050505050509193909250565b80600260018201045b81811015610f345780915060028182858161281057fe5b04018161281957fe5b0490506127f9565b600080600061285586856000808a6001600160a01b03166001600160a01b031681526020019081526020016000205461292b565b6001600160a01b039889166000818152600160208181526040808420805489900390556002808352818520805489900390556003808452828620805489900390559d909e1680855292825280842080549098019097559b8c528582208054909501909455988a5283892080549092019091558752968690528086208054869003905595855250505091902080549091019055565b6128f483838361292b565b6001600160a01b03909516600090815260016020908152604080832060028352818420600390935292209690965594559092555050565b6001600160a01b03831660009081526001602052604081205481908190849086028161295357fe5b6001600160a01b03881660009081526002602052604090205491900490859087028161297b57fe5b6001600160a01b0389166000908152600360205260409020549190049086908802816129a357fe5b049250925092509350935093905056fe74686520616d6f756e74206578636565647320746f74616c206561726e696e6773a2646970667358221220956c84691b2b41edc938ab79bd1d0750456b65d4a60db8bcdbfc50b630d6e3f464736f6c634300060c003360c0604052600560808190526421b7b637b960d91b60a090815261002691600691906100a6565b5060408051808201909152600280825261606360f01b6020909201918252610050916007916100a6565b5034801561005d57600080fd5b50604051610f03380380610f038339818101604052602081101561008057600080fd5b5051600880546001600160a01b0319166001600160a01b03909216919091179055610139565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100e757805160ff1916838001178555610114565b82800160010185558215610114579182015b828111156101145782518255916020019190600101906100f9565b50610120929150610124565b5090565b5b808211156101205760008155600101610125565b610dbb806101486000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80634bc7f977116100ad578063a9059cbb11610071578063a9059cbb1461039a578063b65a9bcf146103c6578063be45fd62146103ec578063dd62ed3e146104a7578063f92883a2146104d55761012c565b80634bc7f977146102fc57806370a082311461032057806390dbc6b21461034657806395d89b411461036c5780639843fc79146103745761012c565b806323b872dd116100f457806323b872dd1461025457806327e235e31461028a578063313ce567146102b05780633a9430ff146102ce5780633eaaf86b146102f45761012c565b806306fdde0314610131578063095ea7b3146101ae57806316279055146101ee57806318160ddd146102145780631f278b641461022e575b600080fd5b610139610515565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356105a3565b604080519115158252519081900360200190f35b6101da6004803603602081101561020457600080fd5b50356001600160a01b0316610610565b61021c61062f565b60408051918252519081900360200190f35b61021c6004803603602081101561024457600080fd5b50356001600160a01b0316610635565b6101da6004803603606081101561026a57600080fd5b506001600160a01b03813581169160208101359091169060400135610647565b61021c600480360360208110156102a057600080fd5b50356001600160a01b03166106d5565b6102b86106e7565b6040805160ff9092168252519081900360200190f35b6102d66106ec565b60408051938452602084019290925282820152519081900360600190f35b61021c610705565b61030461070b565b604080516001600160a01b039092168252519081900360200190f35b61021c6004803603602081101561033657600080fd5b50356001600160a01b031661071a565b6102d66004803603602081101561035c57600080fd5b50356001600160a01b0316610735565b6101396107e6565b61021c6004803603602081101561038a57600080fd5b50356001600160a01b0316610841565b6101da600480360360408110156103b057600080fd5b506001600160a01b038135169060200135610853565b61021c600480360360208110156103dc57600080fd5b50356001600160a01b0316610883565b6101da6004803603606081101561040257600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561043257600080fd5b82018360208201111561044457600080fd5b8035906020019184600183028401116401000000008311171561046657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610895945050505050565b61021c600480360360408110156104bd57600080fd5b506001600160a01b03813581169160200135166108c2565b610513600480360360a08110156104eb57600080fd5b506001600160a01b0381351690602081013590604081013590606081013590608001356108ed565b005b6006805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561059b5780601f106105705761010080835404028352916020019161059b565b820191906000526020600020905b81548152906001019060200180831161057e57829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000813b801561062457600191505061062a565b60009150505b919050565b60045490565b60026020526000908152604090205481565b6001600160a01b038316600090815260056020908152604080832033808552925282205483111561067757600080fd5b806001600160a01b0316856001600160a01b0316146106bd576001600160a01b038086166000908152600560209081526040808320938516835292905220805484900390555b6106c885858561097d565b60019150505b9392505050565b60006020819052908152604090205481565b601281565b60008060006106fa33610735565b925092509250909192565b60045481565b6008546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b0381166000908152602081905260408120548190819080610768576000806000935093509350506107df565b6001600160a01b03851660009081526001602052604090205481908161078a57fe5b6001600160a01b038716600090815260026020526040902054919004908290816107b057fe5b6001600160a01b038816600090815260036020526040902054919004908390816107d657fe5b04935093509350505b9193909250565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561059b5780601f106105705761010080835404028352916020019161059b565b60016020526000908152604090205481565b6000606061086084610610565b1561087857610870848483610a45565b91505061060a565b610870848483610be6565b60036020526000908152604090205481565b60006108a084610610565b156108b7576108b0848484610a45565b90506106ce565b6108b0848484610be6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6008546001600160a01b0316331461090457600080fd5b6001600160a01b038516600090815260208190526040902080548501905560048054850190556109378585858585610cb2565b6040805185815290516001600160a01b038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050505050565b60008060006109b186856000808a6001600160a01b03166001600160a01b0316815260200190815260200160002054610cfd565b6001600160a01b039889166000818152600160208181526040808420805489900390556002808352818520805489900390556003808452828620805489900390559d909e1680855292825280842080549098019097559b8c528582208054909501909455988a5283892080549092019091558752968690528086208054869003905595855250505091902080549091019055565b6000610a5233858561097d565b60405163607705c560e11b815233600482018181526024830186905260606044840190815285516064850152855188946001600160a01b0386169463c0ee0b8a9490938a938a9360840190602085019080838360005b83811015610ac0578181015183820152602001610aa8565b50505050905090810190601f168015610aed5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b50505050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ba0578181015183820152602001610b88565b50505050905090810190601f168015610bcd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000610bf333858561097d565b836001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c6d578181015183820152602001610c55565b50505050905090810190601f168015610c9a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b6001600160a01b039490941660009081526001602090815260408083208054958702909501909455600281528382208054938602909301909255600390915220805491909202019055565b6001600160a01b038316600090815260016020526040812054819081908490860281610d2557fe5b6001600160a01b038816600090815260026020526040902054919004908590870281610d4d57fe5b6001600160a01b038916600090815260036020526040902054919004908690880281610d7557fe5b049250925092509350935093905056fea26469706673582212201aa7cd8a42534c2fd1cc8ca4cff235ddf49e03898986818662d4bd30e6b504e264736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102885760003560e01c80637060ec021161015a578063b1e35242116100c1578063dd62ed3e1161007a578063dd62ed3e14610ac3578063e0cfe6ba14610afe578063e3c4d97d14610b13578063e8d310d214610b46578063ec5899e414610b5b578063ee4350ed14610b7057610288565b8063b1e35242146108d4578063b60d4288146108eb578063b65a9bcf146108f3578063be45fd6214610926578063c0ee0b8a146109ee578063dce0501014610a8057610288565b806395d89b411161011357806395d89b41146107f85780639843fc791461080d578063a3e5301c14610840578063a9059cbb14610871578063a9c0effd146108aa578063aa574244146108bf57610288565b80637060ec021461070257806370a08231146107175780638544d3fa1461074a5780638620410b1461077d57806390dbc6b21461079257806394b3a2a3146107c557610288565b80632446ce3f116101fe5780633eaaf86b116101b75780633eaaf86b146105f95780634851f91a1461060e5780634b6f1671146106415780634b7503341461065657806365bcfbe71461066b5780636a540df01461069e57610288565b80632446ce3f1461051457806327e235e314610529578063288237741461055c5780632e1a7d4d14610571578063313ce5671461059b5780633a9430ff146105c657610288565b80631627905511610250578063162790551461040257806318160ddd146104355780631f278b641461044a5780631fc5cfc41461047d57806322609373146104a757806323b872dd146104d157610288565b806306fdde031461028d578063095ea7b31461031757806310d0ffdd146103645780631554784a146103a05780631622dbe4146103ca575b600080fd5b34801561029957600080fd5b506102a2610b9a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dc5781810151838201526020016102c4565b50505050905090810190601f1680156103095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610bc1565b604080519115158252519081900360200190f35b34801561037057600080fd5b5061038e6004803603602081101561038757600080fd5b5035610c2e565b60408051918252519081900360200190f35b3480156103ac57600080fd5b5061038e600480360360208110156103c357600080fd5b5035610c60565b61038e600480360360808110156103e057600080fd5b506001600160a01b038135169060208101359060408101359060600135610d8a565b34801561040e57600080fd5b506103506004803603602081101561042557600080fd5b50356001600160a01b0316610f16565b34801561044157600080fd5b5061038e610f3a565b34801561045657600080fd5b5061038e6004803603602081101561046d57600080fd5b50356001600160a01b0316610f41565b34801561048957600080fd5b5061038e600480360360208110156104a057600080fd5b5035610f53565b3480156104b357600080fd5b5061038e600480360360208110156104ca57600080fd5b50356110f3565b3480156104dd57600080fd5b50610350600480360360608110156104f457600080fd5b506001600160a01b0381358116916020810135909116906040013561112a565b34801561052057600080fd5b5061038e6111b8565b34801561053557600080fd5b5061038e6004803603602081101561054c57600080fd5b50356001600160a01b03166111be565b34801561056857600080fd5b5061038e6111d0565b34801561057d57600080fd5b5061038e6004803603602081101561059457600080fd5b50356111d6565b3480156105a757600080fd5b506105b0611409565b6040805160ff9092168252519081900360200190f35b3480156105d257600080fd5b506105db61140e565b60408051938452602084019290925282820152519081900360600190f35b34801561060557600080fd5b5061038e611427565b34801561061a57600080fd5b5061038e6004803603602081101561063157600080fd5b50356001600160a01b031661142d565b34801561064d57600080fd5b5061038e611463565b34801561066257600080fd5b5061038e611469565b34801561067757600080fd5b5061038e6004803603602081101561068e57600080fd5b50356001600160a01b03166114bb565b3480156106aa57600080fd5b506106d7600480360360408110156106c157600080fd5b506001600160a01b0381351690602001356114cd565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561070e57600080fd5b5061038e6115e6565b34801561072357600080fd5b5061038e6004803603602081101561073a57600080fd5b50356001600160a01b03166115ec565b34801561075657600080fd5b5061038e6004803603602081101561076d57600080fd5b50356001600160a01b0316611607565b34801561078957600080fd5b5061038e611619565b34801561079e57600080fd5b506105db600480360360208110156107b557600080fd5b50356001600160a01b031661165f565b3480156107d157600080fd5b5061038e600480360360208110156107e857600080fd5b50356001600160a01b0316611710565b34801561080457600080fd5b506102a2611722565b34801561081957600080fd5b5061038e6004803603602081101561083057600080fd5b50356001600160a01b0316611743565b34801561084c57600080fd5b50610855611755565b604080516001600160a01b039092168252519081900360200190f35b34801561087d57600080fd5b506103506004803603604081101561089457600080fd5b506001600160a01b038135169060200135611764565b3480156108b657600080fd5b5061038e611794565b3480156108cb57600080fd5b506105db61179a565b3480156108e057600080fd5b506108e96117b0565b005b61038e6117cf565b3480156108ff57600080fd5b5061038e6004803603602081101561091657600080fd5b50356001600160a01b0316611897565b34801561093257600080fd5b506103506004803603606081101561094957600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561097957600080fd5b82018360208201111561098b57600080fd5b803590602001918460018302840111640100000000831117156109ad57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118a9945050505050565b3480156109fa57600080fd5b506108e960048036036060811015610a1157600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610a4157600080fd5b820183602082011115610a5357600080fd5b80359060200191846001830284011164010000000083111715610a7557600080fd5b5090925090506118d6565b348015610a8c57600080fd5b50610aaa60048036036020811015610aa357600080fd5b50356119da565b6040805192835260208301919091528051918290030190f35b348015610acf57600080fd5b5061038e60048036036040811015610ae657600080fd5b506001600160a01b0381358116916020013516611d46565b348015610b0a57600080fd5b5061038e611d71565b348015610b1f57600080fd5b5061038e60048036036020811015610b3657600080fd5b50356001600160a01b0316611d9d565b348015610b5257600080fd5b5061038e611daf565b348015610b6757600080fd5b5061038e611db5565b348015610b7c57600080fd5b506105db60048036036020811015610b9357600080fd5b5035611dbb565b6040518060400160405280600b81526020016a2834bd3d30902a37b5b2b760a91b81525081565b3360008181526005602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080610c3a83610c60565b90506000610c488483611e38565b90506000610c5582611e4a565b93505050505b919050565b601254604080516370a0823160e01b81526000600482018190529151919283926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b5051601254604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d6020811015610d4c57600080fd5b5051600b549190039150610d64576000915050610c5b565b600c54600e5482600b548403860281610d7957fe5b040281610d8257fe5b049392505050565b6000670de0b6b3a7640000841115610da857670de0b6b3a764000093505b670de0b6b3a7640000831115610dc457670de0b6b3a764000092505b670de0b6b3a7640000821115610de057670de0b6b3a764000091505b64e8d4a51000341015610df257600080fd5b6000610dfd34610c60565b6001600160a01b03871660009081526007602090815260408083208054348690039081019091556008909252909120805442808402600160401b02918201909255600c805484019055600d8054909101905591925090610e5c82611e4a565b9350610e6b8885898989611ee0565b60048054850190556001600160a01b0388166000908152602081905260408120805486019055600b5415610ebe57600160401b840290506000600b548281610eaf57fe5b60118054929091049091019055505b604080513481526020810187905280820183905290516001600160a01b038b16917fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d919081900360600190a250505050949350505050565b6000813b8015610f2a576001915050610c5b565b6000915050610c5b565b50919050565b6004545b90565b60026020526000908152604090205481565b33600081815260096020526040812054909190808411801590610f765750600084115b610f7f57600080fd5b600b548410610f8d57600080fd5b6001600160a01b0382166000908152600a6020526040812054601154830203908286830281610fb857fe5b6011546001600160a01b0387166000908152600a602090815260408083208054948d02969095049586039093019093556009909252902080548890039055600b805488900390819055909150818161100c57fe5b601180549290910490910190556012546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018a90529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561106f57600080fd5b505af1158015611083573d6000803e3d6000fd5b505050506040513d602081101561109957600080fd5b505060408051878152600160401b8304602082015281516001600160a01b038716927ff597bb09fb98a90b578e74952df9d7e06d7505f52a264d786bb11770873dccb2928290030190a2600160401b900495945050505050565b600060045482111561110457600080fd5b600061110f83611f2b565b9050600061111c82610c60565b90506000610c558383611e38565b6001600160a01b038316600090815260056020908152604080832033808552925282205483111561115a57600080fd5b806001600160a01b0316856001600160a01b0316146111a0576001600160a01b038086166000908152600560209081526040808320938516835292905220805484900390555b6111ab858585611f9e565b60019150505b9392505050565b600e5481565b60006020819052908152604090205481565b600b5481565b336000818152600a602090815260408083205460099092528220546011549293920203600160401b81048085118015906112105750600085115b61121957600080fd5b6001600160a01b0383166000908152600960205260409020548186810382028161123f57fe5b6001600160a01b0380871660009081526009602090815260408083209590940494859055601254600654855163a9059cbb60e01b81529085166004820152958703602487018190529451949593169363a9059cbb93604480820194918390030190829087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d60208110156112db57600080fd5b5050600b80548290039055601154600090820284868a02816112f957fe5b6001600160a01b0389166000818152600a6020526040808220805495909404959095039384019092556010805484019055925191935091908a908381818185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b50509050806113b9576040805162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015290519081900360640190fd5b604080518a81526020810185905281516001600160a01b038a16927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a25090979650505050505050565b601281565b600080600061141c3361165f565b925092509250909192565b60045481565b6001600160a01b03166000908152600a6020908152604080832054600990925290912054601154600160401b9102919091030490565b60115481565b60006004546000141561148257506414f46b0400610f3e565b6000611495670de0b6b3a7640000611f2b565b905060006114a282610c60565b905060006114b08383611e38565b9350610f3e92505050565b600a6020526000908152604090205481565b6000806000806000806114df87611f2b565b6001600160a01b038916600090815260208181526040808320546007909252822054929350909189028161150f57fe5b6001600160a01b038b166000908152600760209081526040808320546008909252822054939092049350918161154157fe5b6001600160a01b038c1660009081526020818152604080832054600890925282205493909204935042600160401b02849003929091908c028161158057fe5b04600f54019050600084600e540190506000600e54600c5403600f54600d5403816115a757fe5b04600160401b420203905086878783878a02816115c057fe5b0402816115c957fe5b919d5090049a509198509650929450505050509295509295909350565b60105481565b6001600160a01b031660009081526020819052604090205490565b60086020526000908152604090205481565b600060045460001415611632575064199c82cc00610f3e565b6000611645670de0b6b3a7640000611f2b565b9050600061165282610c60565b919091019150610f3e9050565b6001600160a01b038116600090815260208190526040812054819081908061169257600080600093509350935050611709565b6001600160a01b0385166000908152600160205260409020548190816116b457fe5b6001600160a01b038716600090815260026020526040902054919004908290816116da57fe5b6001600160a01b0388166000908152600360205260409020549190049083908161170057fe5b04935093509350505b9193909250565b60076020526000908152604090205481565b6040518060400160405280600581526020016450695a5a6160d81b81525081565b60016020526000908152604090205481565b6012546001600160a01b031681565b6000606061177184610f16565b15611789576117818484836120a2565b915050610c28565b611781848483612243565b600d5481565b600080600061141c6117ab336115ec565b61230f565b6117b861179a565b5050506117cc6117c73361142d565b6111d6565b50565b60408051600380825260808201909252600091606091906020820183803683370190505090506117fe3361165f565b8360008151811061180b57fe5b602002602001018460018151811061181f57fe5b602002602001018560028151811061183357fe5b60200260200101838152508381525083815250505050611891338260008151811061185a57fe5b60200260200101518360018151811061186f57fe5b60200260200101518460028151811061188457fe5b6020026020010151610d8a565b91505090565b60036020526000908152604090205481565b60006118b484610f16565b156118cb576118c48484846120a2565b90506111b1565b6118c4848484612243565b6012546001600160a01b031633141561199d576001600160a01b0384166000818152600960209081526040808320805488019055600b805488019055601154600a83529281902080549388029384019055601080548401905580518781529182018181529082018590529192917f496d21a3791df17b9e71acba0bd6c88352f3da2636dc2bfae959f09af6c4fb999187918791879160608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a2506119d4565b6040805162461bcd60e51b81526020600482015260076024820152661b9bc81dd85b9d60ca1b604482015290519081900360640190fd5b50505050565b336000818152600a60209081526040808320546009909252822054601154929384939092910203600160401b810480861115611a475760405162461bcd60e51b81526004018080602001828103825260218152602001806129b46021913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205481878103820281611a6d57fe5b6001600160a01b0380871660009081526009602090815260408083209590940494859055601254600654855163a9059cbb60e01b81529085166004820152958703602487018190529451949593169363a9059cbb93604480820194918390030190829087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050506040513d6020811015611b0957600080fd5b5050600b80548290039055601154600090820284868b0281611b2757fe5b6001600160a01b0389166000908152600a6020526040902080549290910492909203908101909155601080548201905590508864e8d4a51000811015611b6c57600080fd5b6000611b7782610c60565b6001600160a01b03891660009081526007602090815260408083208054858803908101909155600890925282208054428302600160401b02908101909155600c805483019055600d80549091019055919250611bd282611e4a565b6040805160038082526080820190925291925060609190602082018380368337019050509050611c018b61165f565b83600081518110611c0e57fe5b6020026020010184600181518110611c2257fe5b6020026020010185600281518110611c3657fe5b60200260200101838152508381525083815250505050611c958b8383600081518110611c5e57fe5b602002602001015184600181518110611c7357fe5b602002602001015185600281518110611c8857fe5b6020026020010151611ee0565b600b5460009015611cc557600160401b850290506000600b548281611cb657fe5b60118054929091049091019055505b60048054840190556001600160a01b038c166000818152602081815260409182902080548701905581518981529081018b90528082018690526060810184905290517fc7209ba1b691ad661f5afd3d5360a45f0f4e3dac25357bf4f346e73166f35c939181900360800190a250909b50949950505050505050505050915091565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000600160401b600e54600c5403600f54600d540381611d8d57fe5b0481611d9557fe5b044203905090565b60096020526000908152604090205481565b600f5481565b600c5481565b600080600080611dca336115ec565b905084811015611e21576040805162461bcd60e51b815260206004820152601b60248201527f416d6f756e74206973206d6f7265207468616e2062616c616e63650000000000604482015290519081900360640190fd5b611e2a8561230f565b919790965090945092505050565b600082821115611e4457fe5b50900390565b6004546000906c01431e0fae6d7217caa00000009082906402540be400611ecf611ec9730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e400000000000000016127f0565b85611e38565b81611ed657fe5b0403949350505050565b6001600160a01b039490941660009081526001602090815260408083208054958702909501909455600281528382208054938602909301909255600390915220805491909202019055565b600454600090670de0b6b3a7640000808401918101908390611f8d866402540be4008386046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381611f7857fe5b046402540be4000281611f8757fe5b04611e38565b81611f9457fe5b0495945050505050565b6001600160a01b038316600090815260208190526040902054808211801590611fc75750600082115b611fd057600080fd5b6001600160a01b0384166000908152600760205260408120548290840281611ff457fe5b6001600160a01b03871660009081526008602052604081205492909104925090839085028161201f57fe5b6001600160a01b03808916600090815260076020818152604080842080548a9003905560088083528185208054989097049788900390965583825280842080548c90039055938b168352908152828220805488019055928352818120805485019055918290529020805486019055905061209a868686612821565b505050505050565b60006120af338585611f9e565b60405163607705c560e11b815233600482018181526024830186905260606044840190815285516064850152855188946001600160a01b0386169463c0ee0b8a9490938a938a9360840190602085019080838360005b8381101561211d578181015183820152602001612105565b50505050905090810190601f16801561214a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561216b57600080fd5b505af115801561217f573d6000803e3d6000fd5b50505050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121fd5781810151838201526020016121e5565b50505050905090810190601f16801561222a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000612250338585611f9e565b836001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122ca5781810151838201526020016122b2565b50505050905090810190601f1680156122f75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b60408051600580825260c082019092526000918291829133916060916020820160a08036833701905050905061234582876114cd565b8560008151811061235257fe5b602002602001018660018151811061236657fe5b602002602001018760028151811061237a57fe5b602002602001018860038151811061238e57fe5b60200260200101896004815181106123a257fe5b602002602001018581525085815250858152508581525085815250505050505060006123e1826000815181106123d457fe5b6020026020010151610c60565b60408051600380825260808201909252919250606091906020820183803683370190505090506124108461165f565b8360008151811061241d57fe5b602002602001018460018151811061243157fe5b602002602001018560028151811061244557fe5b60209081029190910101929092529190525260125483516001600160a01b039091169063f92883a29086908690600190811061247d57fe5b60200260200101518460008151811061249257fe5b6020026020010151856001815181106124a757fe5b6020026020010151866002815181106124bc57fe5b60200260200101516040518663ffffffff1660e01b815260040180866001600160a01b0316815260200185815260200184815260200183815260200182815260200195505050505050600060405180830381600087803b15801561251f57600080fd5b505af1158015612533573d6000803e3d6000fd5b505050508260028151811061254457fe5b6020026020010151600f819055508260038151811061255f57fe5b602090810291909101810151600e556001600160a01b03851660009081528082526040808220546007909352902054898203028161259957fe5b6001600160a01b038616600090815260076020908152604080832094909304909355808352818120546008909352205489820302816125d457fe5b6001600160a01b038616600090815260086020526040812092909104909155835183908590839061260157fe5b602090810291909101810151600480548d900390556001600160a01b03881660009081529182905260409091205491900391506126439086908b8103906128e9565b6001600160a01b038516600090815260208190526040812080548b90039055600b541561268f57600160401b840290506000600b54828161268057fe5b60118054929091049091019055505b6040516000906001600160a01b0388169084908381818185875af1925050503d80600081146126da576040519150601f19603f3d011682016040523d82523d6000602084013e6126df565b606091505b5050905080612728576040805162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015290519081900360640190fd5b866001600160a01b03167f20a7fc03b19d7f251cc907f177ff82194c6aebe9a2b47e1cd734dcb6bf772cc28c858960018151811061276257fe5b6020026020010151868b60048151811061277857fe5b6020026020010151604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a282866001815181106127bf57fe5b6020026020010151876004815181106127d457fe5b6020026020010151995099509950505050505050509193909250565b80600260018201045b81811015610f345780915060028182858161281057fe5b04018161281957fe5b0490506127f9565b600080600061285586856000808a6001600160a01b03166001600160a01b031681526020019081526020016000205461292b565b6001600160a01b039889166000818152600160208181526040808420805489900390556002808352818520805489900390556003808452828620805489900390559d909e1680855292825280842080549098019097559b8c528582208054909501909455988a5283892080549092019091558752968690528086208054869003905595855250505091902080549091019055565b6128f483838361292b565b6001600160a01b03909516600090815260016020908152604080832060028352818420600390935292209690965594559092555050565b6001600160a01b03831660009081526001602052604081205481908190849086028161295357fe5b6001600160a01b03881660009081526002602052604090205491900490859087028161297b57fe5b6001600160a01b0389166000908152600360205260409020549190049086908802816129a357fe5b049250925092509350935093905056fe74686520616d6f756e74206578636565647320746f74616c206561726e696e6773a2646970667358221220956c84691b2b41edc938ab79bd1d0750456b65d4a60db8bcdbfc50b630d6e3f464736f6c634300060c0033
Deployed Bytecode Sourcemap
4549:20282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5026:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4020:223;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4020:223:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21999:375;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21999:375:0;;:::i;:::-;;;;;;;;;;;;;;;;6318:338;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6318:338:0;;:::i;11259:1695::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11259:1695:0;;;;;;;;;;;;;;;;;;:::i;4251:291::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4251:291:0;-1:-1:-1;;;;;4251:291:0;;:::i;522:91::-;;;;;;;;;;;;;:::i;236:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;236:40:0;-1:-1:-1;;;;;236:40:0;;:::i;19343:1010::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19343:1010:0;;:::i;22388:392::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22388:392:0;;:::i;3616:322::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3616:322:0;;;;;;;;;;;;;;;;;:::i;5887:26::-;;;;;;;;;;;;;:::i;147:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;147:43:0;-1:-1:-1;;;;;147:43:0;;:::i;5717:33::-;;;;;;;;;;;;;:::i;18034:1215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18034:1215:0;;:::i;5116:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;931:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;325:24;;;;;;;;;;;;;:::i;10977:191::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10977:191:0;-1:-1:-1;;;;;10977:191:0;;:::i;6141:33::-;;;;;;;;;;;;;:::i;21471:520::-;;;;;;;;;;;;;:::i;5606:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5606:41:0;-1:-1:-1;;;;;5606:41:0;;:::i;13123:1153::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13123:1153:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5983:28;;;;;;;;;;;;;:::i;621:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;621:106:0;-1:-1:-1;;;;;621:106:0;;:::i;5283:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5283:55:0;-1:-1:-1;;;;;5283:55:0;;:::i;20954:509::-;;;;;;;;;;;;;:::i;1036:267::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1036:267:0;-1:-1:-1;;;;;1036:267:0;;:::i;5157:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5157:51:0;-1:-1:-1;;;;;5157:51:0;;:::i;5073:39::-;;;;;;;;;;;;;:::i;194:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;194:38:0;-1:-1:-1;;;;;194:38:0;;:::i;6211:25::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;6211:25:0;;;;;;;;;;;;;;2008:364;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2008:364:0;;;;;;;;:::i;5857:26::-;;;;;;;;;;;;;:::i;9728:150::-;;;;;;;;;;;;;:::i;10328:101::-;;;;;;;;;;;;;:::i;:::-;;10518:208;;;:::i;280:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;280:39:0;-1:-1:-1;;;;;280:39:0;;:::i;1636:241::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1636:241:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1636:241:0;;-1:-1:-1;1636:241:0;;-1:-1:-1;;;;;1636:241:0:i;17295:496::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17295:496:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17295:496:0;;-1:-1:-1;17295:496:0;-1:-1:-1;17295:496:0;:::i;6930:2761::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6930:2761:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3488:117;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3488:117:0;;;;;;;;;;:::i;12959:159::-;;;;;;;;;;;;;:::i;5417:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5417:48:0;-1:-1:-1;;;;;5417:48:0;;:::i;5917:27::-;;;;;;;;;;;;;:::i;5828:25::-;;;;;;;;;;;;;:::i;9883:356::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9883:356:0;;:::i;5026:43::-;;;;;;;;;;;;;;-1:-1:-1;;;5026:43:0;;;;:::o;4020:223::-;4110:10;4079:4;4131:17;;;:9;:17;;;;;;;;-1:-1:-1;;;;;4131:22:0;;;;;;;;;;;:31;;;4180;;;;;;;4079:4;;4110:10;4131:22;;4110:10;;4180:31;;;;;;;;;;;4231:4;4224:11;;;4020:223;;;;;:::o;21999:375::-;22108:7;22133:18;22154:25;22162:16;22154:7;:25::i;:::-;22133:46;;22190:22;22215:38;22224:16;22242:10;22215:8;:38::i;:::-;22190:63;;22264:23;22290:33;22308:14;22290:17;:33::i;:::-;22264:59;-1:-1:-1;;;;21999:375:0;;;;:::o;6318:338::-;6443:12;;:36;;;-1:-1:-1;;;6443:36:0;;6373:8;6443:36;;;;;;;;6373:8;;;;-1:-1:-1;;;;;6443:12:0;;;;:22;;:36;;;;;;;;;;;;;;:12;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6443:36:0;6414:12;;:26;;;-1:-1:-1;;;6414:26:0;;;;-1:-1:-1;;;;;6414:12:0;;;;:24;;:26;;;;;6443:36;;6414:26;;;;;;;;:12;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6414:26:0;6489:18;;6414:65;;;;-1:-1:-1;6484:43:0;;6526:1;6519:8;;;;;6484:43;6638:13;;6621:14;;6600:18;6577;;6556;:39;6541:10;:56;:77;;;;;;:94;:110;;;;;;;6318:338;-1:-1:-1;;;6318:338:0:o;11259:1695::-;11345:17;11376:4;11371;:9;11368:25;;;11389:4;11382:11;;11368:25;11408:4;11401:6;:11;11398:29;;;11423:4;11414:13;;11398:29;11441:4;11435:5;:10;11432:27;;;11455:4;11447:12;;11432:27;11585:14;11573:9;:26;11568:46;;;11606:8;;;11568:46;11645:8;11656:18;11664:9;11656:7;:18::i;:::-;-1:-1:-1;;;;;11850:22:0;;11750:13;11850:22;;;:16;:22;;;;;;;;:34;;11766:9;:15;;;11850:34;;;;;;11889:20;:26;;;;;;:66;;11842:3;11919:36;;;-1:-1:-1;;;11919:36:0;11889:66;;;;;;11960:13;:25;;;;;;11990:14;:54;;;;;;;11645:29;;-1:-1:-1;11766:15:0;12129:27;11766:15;12129:17;:27::i;:::-;12114:42;;12161:49;12170:4;12176:12;12190:4;12196:6;12204:5;12161:8;:49::i;:::-;12265:12;:28;;;;;;-1:-1:-1;;;;;12352:14:0;;12265:12;12352:14;;;;;;;;;;:30;;;;;;12455:18;;:22;12451:418;;-1:-1:-1;;;12498:3:0;:17;12485:30;;12700:21;12735:18;;12724:10;:29;;;;;12825:18;:38;;12724:29;;;;12825:38;;;;;-1:-1:-1;12451:418:0;12878:47;;;12889:9;12878:47;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12878:47:0;;;;;;;;;;;;;12930:19;;;;11259:1695;;;;;;:::o;4251:291::-;4307:16;4446:18;;4476:8;;4473:65;;4499:4;4492:11;;;;;4473:65;4527:5;4520:12;;;;;4473:65;4251:291;;;;:::o;522:91::-;593:12;;522:91;;:::o;236:40::-;;;;;;;;;;;;;:::o;19343:1010::-;19432:10;19394:15;19463:23;;;:13;:23;;;;;;19394:15;;19432:10;19499:18;;;;;;:32;;;19530:1;19521:6;:10;19499:32;19491:41;;;;;;19554:18;;19545:6;:27;19537:36;;;;;;-1:-1:-1;;;;;19692:15:0;;19618:22;19692:15;;;:7;:15;;;;;;19670:18;;19659:29;;19650:57;;19659:8;19738:26;;;19659:8;19738:37;;;;19962:18;;-1:-1:-1;;;;;19904:15:0;;;;;;:7;:15;;;;;;;;:86;;19962:27;;;19738:37;;;;19923:67;;;19904:86;;;;;;19997:13;:21;;;;;:31;;;;;;;20033:18;:28;;;;;;;;;19738:37;;-1:-1:-1;19738:37:0;20033:28;20149:38;;;;20127:18;:60;;20149:38;;;;20127:60;;;;;20194:12;;:39;;;-1:-1:-1;;;20194:39:0;;-1:-1:-1;;;;;20194:39:0;;;;;;;;;;;;;;;:12;;;;;:21;;:39;;;;;;;;;;;;;;-1:-1:-1;20194:12:0;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20243:62:0;;;;;;-1:-1:-1;;;20273:31:0;;20243:62;;;;;;-1:-1:-1;;;;;20243:62:0;;;;;;;;;;;-1:-1:-1;;;20317:31:0;;;;-1:-1:-1;;;;;19343:1010:0:o;22388:392::-;22496:7;22546:12;;22529:13;:29;;22521:38;;;;;;22570:17;22590:32;22608:13;22590:17;:32::i;:::-;22570:52;;22633:18;22654:19;22662:9;22654:7;:19::i;:::-;22633:40;;22684:22;22709:31;22718:9;22729:10;22709:8;:31::i;3616:322::-;-1:-1:-1;;;;;3752:14:0;;3693:4;3752:14;;;:9;:14;;;;;;;;3723:10;3752:22;;;;;;;;:33;-1:-1:-1;3752:33:0;3744:42;;;;;;3808:6;-1:-1:-1;;;;;3801:13:0;:3;-1:-1:-1;;;;;3801:13:0;;3797:79;;-1:-1:-1;;;;;3831:14:0;;;;;;;:9;:14;;;;;;;;:22;;;;;;;;;:33;;;;;;;3797:79;3880:26;3891:3;3895;3899:6;3880:10;:26::i;:::-;3926:4;3919:11;;;3616:322;;;;;;:::o;5887:26::-;;;;:::o;147:43::-;;;;;;;;;;;;;;:::o;5717:33::-;;;;:::o;18034:1215::-;18115:10;18080:4;18299:15;;;:7;:15;;;;;;;;;18273:13;:21;;;;;;18252:18;;18080:4;;18115:10;18252:42;18242:72;-1:-1:-1;;;18341:25:0;;18380:23;;;;;;:37;;;18416:1;18407:6;:10;18380:37;18371:48;;;;;;-1:-1:-1;;;;;18441:21:0;;18424:14;18441:21;;;:13;:21;;;;;;18532:13;18505:22;;;18491:38;;18532:13;18491:54;;;;-1:-1:-1;;;;;18467:21:0;;;;;;;:13;:21;;;;;;;;18491:54;;;;18467:78;;;;18606:12;;18629:8;;18606:44;;-1:-1:-1;;;18606:44:0;;18629:8;;;18606:44;;;;18568:33;;;18606:44;;;;;;;;18568:33;;18606:12;;;:21;;:44;;;;;;;;;;;;;:12;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18655:18:0;:32;;;;;;;18816:18;;18655;;18805:29;;18782:13;18759:20;;;18782:13;18759:36;;;;-1:-1:-1;;;;;18840:15:0;;;;;;:7;:15;;;;;;:36;;18759;;;;18753:82;;;;18840:36;;;;;;18958:14;:35;;;;;;19096:30;;18753:82;;-1:-1:-1;18840:15:0;;19115:6;;18840:15;19096:30;18840:15;19096:30;19115:6;18840:15;19096:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19077:49;;;19145:7;19137:36;;;;;-1:-1:-1;;;19137:36:0;;;;;;;;;;;;-1:-1:-1;;;19137:36:0;;;;;;;;;;;;;;;19185:37;;;;;;;;;;;;;;-1:-1:-1;;;;;19185:37:0;;;;;;;;;;;-1:-1:-1;19234:10:0;;18034:1215;-1:-1:-1;;;;;;;18034:1215:0:o;5116:35::-;5149:2;5116:35;:::o;931:98::-;972:4;977;982;1001:21;1011:10;1001:9;:21::i;:::-;994:28;;;;;;931:98;;;:::o;325:24::-;;;;:::o;10977:191::-;-1:-1:-1;;;;;11133:15:0;11039:14;11133:15;;;:7;:15;;;;;;;;;11108:13;:21;;;;;;;11087:18;;-1:-1:-1;;;11087:42:0;;11078:70;;;;11067:96;;10977:191::o;6141:33::-;;;;:::o;21471:520::-;21542:7;21650:12;;21666:1;21650:17;21647:337;;;-1:-1:-1;21690:43:0;21683:50;;21647:337;21766:17;21786:23;21804:4;21786:17;:23::i;:::-;21766:43;;21824:18;21845:20;21853:9;21845:7;:20::i;:::-;21824:41;;21880:22;21905:31;21914:9;21925:10;21905:8;:31::i;:::-;21880:56;-1:-1:-1;21951:21:0;;-1:-1:-1;;;21951:21:0;5606:41;;;;;;;;;;;;;:::o;13123:1153::-;13205:15;13222:19;13243:23;13268:22;13292:21;13319:15;13337:32;13355:13;13337:17;:32::i;:::-;-1:-1:-1;;;;;13432:14:0;;13374;13432;;;;;;;;;;;;13391:16;:22;;;;;;13319:50;;-1:-1:-1;13374:14:0;;13391:38;;13432:14;13391:55;;;;-1:-1:-1;;;;;13676:22:0;;13630:14;13676:22;;;:16;:22;;;;;;;;;13647:20;:26;;;;;;13391:55;;;;;-1:-1:-1;13630:14:0;13676:22;13647:51;;;;-1:-1:-1;;;;;13846:14:0;;13703:16;13846:14;;;;;;;;;;;;13801:20;:26;;;;;;13647:51;;;;;-1:-1:-1;13722:3:0;-1:-1:-1;;;13722:17:0;:29;;;;13703:16;;13846:14;13801:42;;13846:14;13801:59;;;;;13783:15;;:77;13756:104;;13865:23;13908:9;13891:14;;:26;13865:52;;14005:23;14108:14;;14092:13;;:30;14070:15;;14053:14;;:32;14051:73;;;;;;-1:-1:-1;;;14031:3:0;:17;:93;14005:119;;14137:10;14208;14196:9;14175:18;14161:11;14149:9;:23;:44;;;;;;:56;:69;;;;;14129:142;;-1:-1:-1;14149:69:0;;;-1:-1:-1;14220:19:0;;-1:-1:-1;14241:18:0;-1:-1:-1;14261:9:0;;-1:-1:-1;;;;;13123:1153:0;;;;;;;;:::o;5983:28::-;;;;:::o;621:106::-;-1:-1:-1;;;;;706:16:0;677:15;706:16;;;;;;;;;;;;621:106::o;5283:55::-;;;;;;;;;;;;;:::o;20954:509::-;21023:7;21131:12;;21147:1;21131:17;21128:328;;;-1:-1:-1;21171:43:0;21164:50;;21128:328;21247:17;21267:23;21285:4;21267:17;:23::i;:::-;21247:43;;21305:18;21326:20;21334:9;21326:7;:20::i;:::-;21386:22;;;;;-1:-1:-1;21423:21:0;;-1:-1:-1;21423:21:0;1036:267;-1:-1:-1;;;;;1132:14:0;;1089:4;1132:14;;;;;;;;;;;1089:4;;;;1157:16;1153:51;;1190:1;1192;1194;1182:14;;;;;;;;;1153:51;-1:-1:-1;;;;;1219:9:0;;;;;;:3;:9;;;;;;1229:13;;;1219:23;;;;-1:-1:-1;;;;;1244:11:0;;;;;;:5;:11;;;;;;1219:23;;;;1256:13;;;1244:25;;;;-1:-1:-1;;;;;1271:10:0;;;;;;:4;:10;;;;;;1244:25;;;;1282:13;;;1271:24;;;;;1210:86;;;;;;;1036:267;;;;;;:::o;5157:51::-;;;;;;;;;;;;;:::o;5073:39::-;;;;;;;;;;;;;;-1:-1:-1;;;5073:39:0;;;;:::o;194:38::-;;;;;;;;;;;;;:::o;6211:25::-;;;-1:-1:-1;;;;;6211:25:0;;:::o;2008:364::-;2076:4;2209:18;2235:15;2246:3;2235:10;:15::i;:::-;2232:136;;;2264:38;2283:3;2288:6;2296:5;2264:18;:38::i;:::-;2257:45;;;;;2232:136;2325:37;2343:3;2348:6;2356:5;2325:17;:37::i;5857:26::-;;;;:::o;9728:150::-;9767:17;9786:22;9810:21;9844:29;9850:21;9860:10;9850:9;:21::i;:::-;9844:4;:29::i;10328:101::-;10366:14;:12;:14::i;:::-;;;;10385:39;10395:27;10411:10;10395:15;:27::i;:::-;10385:8;:39::i;:::-;;10328:101::o;10518:208::-;10600:13;;;10611:1;10600:13;;;;;;;;;10557:17;;10580;;10600:13;;;;10580:17;;10600:13;;;;;-1:-1:-1;10600:13:0;10580:33;;10647:21;10657:10;10647:9;:21::i;:::-;10621:3;10625:1;10621:6;;;;;;;;;;;;;10629:3;10633:1;10629:6;;;;;;;;;;;;;10637:3;10641:1;10637:6;;;;;;;;;;;;;10620:48;;;;;;;;;;;;;;;10680:39;10684:10;10696:3;10700:1;10696:6;;;;;;;;;;;;;;10704:3;10708:1;10704:6;;;;;;;;;;;;;;10712:3;10716:1;10712:6;;;;;;;;;;;;;;10680:3;:39::i;:::-;10673:46;;;10518:208;:::o;280:39::-;;;;;;;;;;;;;:::o;1636:241::-;1724:4;1739:15;1750:3;1739:10;:15::i;:::-;1735:138;;;1769:38;1788:3;1793:6;1801:5;1769:18;:38::i;:::-;1762:45;;;;1735:138;1830:37;1848:3;1853:6;1861:5;1830:17;:37::i;17295:496::-;17404:12;;-1:-1:-1;;;;;17404:12:0;17382:10;:35;17379:408;;;-1:-1:-1;;;;;17425:19:0;;;;;;:13;:19;;;;;;;;:28;;;;;;17459:18;:27;;;;;;17608:18;;17641:7;:13;;;;;;:27;;17608:26;;;17641:27;;;;;17674:14;:28;;;;;;17715:33;;;;;;;;;;;;;;;;;17608:26;;17425:19;17715:33;;17448:5;;17742;;;;17715:33;;;17742:5;;;;17715:33;;;;;;;;;;;;;-1:-1:-1;;17715:33:0;;;;;;;;-1:-1:-1;17715:33:0;;-1:-1:-1;;;;;17715:33:0;17379:408;;;;17764:17;;;-1:-1:-1;;;17764:17:0;;;;;;;;;;;;-1:-1:-1;;;17764:17:0;;;;;;;;;;;;;;17379:408;17295:496;;;;:::o;6930:2761::-;7028:10;6996:4;7214:15;;;:7;:15;;;;;;;;;7188:13;:21;;;;;;7167:18;;6996:4;;;;7028:10;;7167:42;;7157:72;-1:-1:-1;;;7256:25:0;;7320:35;;;;7312:81;;;;-1:-1:-1;;;7312:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7415:21:0;;7398:14;7415:21;;;:13;:21;;;;;;7516:13;7478:34;;;7465:48;;7516:13;7465:64;;;;-1:-1:-1;;;;;7441:21:0;;;;;;;:13;:21;;;;;;;;7465:64;;;;7441:88;;;;7590:12;;7613:8;;7590:45;;-1:-1:-1;;;7590:45:0;;7613:8;;;7590:45;;;;7552:33;;;7590:45;;;;;;;;7552:33;;7590:12;;;:21;;:45;;;;;;;;;;;;;:12;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7640:18:0;:32;;;;;;;7813:18;;7640;;7802:29;;7779:13;7744:32;;;7779:13;7744:48;;;;-1:-1:-1;;;;;7837:15:0;;;;;;:7;:15;;;;;:36;;7744:48;;;;7738:94;;;;7837:36;;;;;;7955:14;:35;;;;;;7738:94;-1:-1:-1;8059:18:0;8164:14;8155:23;;8151:41;;;8184:8;;;8151:41;8223:8;8234:15;8242:6;8234:7;:15::i;:::-;-1:-1:-1;;;;;8394:24:0;;8324:13;8394:24;;;:16;:24;;;;;;;;:36;;8340:12;;;8394:36;;;;;;8435:20;:28;;;;;:60;;8467:3;:28;;-1:-1:-1;;;8467:28:0;8435:60;;;;;;8500:13;:25;;;;;;8530:14;:46;;;;;;;8223:26;;-1:-1:-1;8666:27:0;8340:12;8666:17;:27::i;:::-;8718:13;;;8729:1;8718:13;;;;;;;;;8646:47;;-1:-1:-1;8698:17:0;;8718:13;;;;8698:17;;8718:13;;;;;-1:-1:-1;8718:13:0;8698:33;;8765:17;8775:6;8765:9;:17::i;:::-;8739:3;8743:1;8739:6;;;;;;;;;;;;;8747:3;8751:1;8747:6;;;;;;;;;;;;;8755:3;8759:1;8755:6;;;;;;;;;;;;;8738:44;;;;;;;;;;;;;;;8791:54;8800:6;8808:12;8822:3;8826:1;8822:6;;;;;;;;;;;;;;8830:3;8834:1;8830:6;;;;;;;;;;;;;;8838:3;8842:1;8838:6;;;;;;;;;;;;;;8791:8;:54::i;:::-;8981:18;;8912:15;;8981:22;8976:425;;-1:-1:-1;;;9025:3:0;:17;9012:30;;9232:21;9269:18;;9256:10;:31;;;;;9357:18;:38;;9256:31;;;;9357:38;;;;;-1:-1:-1;8976:425:0;9455:12;:28;;;;;;-1:-1:-1;;;;;9542:16:0;;9455:12;9542:16;;;;;;;;;;;;:32;;;;;;9586:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9661:12:0;;-1:-1:-1;9675:10:0;;-1:-1:-1;;;;;;;;;;6930:2761:0;;;:::o;3488:117::-;-1:-1:-1;;;;;3578:14:0;;;3554:4;3578:14;;;:9;:14;;;;;;;;:19;;;;;;;;;;;;;3488:117::o;12959:159::-;12998:13;-1:-1:-1;;;13084:14:0;;13068:13;;:30;13048:15;;13031:14;;:32;13030:69;;;;;;:83;;;;;;13024:3;:89;13017:96;;12959:159;:::o;5417:48::-;;;;;;;;;;;;;:::o;5917:27::-;;;;:::o;5828:25::-;;;;:::o;9883:356::-;9930:17;9949:22;9973:21;10000:12;10015:21;10025:10;10015:9;:21::i;:::-;10000:36;;10060:6;10049:7;:17;;10041:57;;;;;-1:-1:-1;;;10041:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10159:12;10164:6;10159:4;:12::i;:::-;10103:68;;;;-1:-1:-1;10103:68:0;;-1:-1:-1;9883:356:0;-1:-1:-1;;;9883:356:0:o;24700:128::-;24763:7;24795:1;24790;:6;;24783:14;;;;-1:-1:-1;24815:5:0;;;24700:128::o;22788:972::-;23692:12;;22883:7;;22937:25;;22883:7;;4959:16;23088:551;23120:457;23266:52;;;23382:27;23491:1;23412:15;;23381:47;23181:248;23491:45;:58;;23181:369;23182:21;23181:369;23120:4;:457::i;:::-;23602:18;23088:8;:551::i;:::-;23025:654;;;;;;23010:695;;22788:972;-1:-1:-1;;;;22788:972:0:o;732:190::-;-1:-1:-1;;;;;826:9:0;;;;;;;;:3;:9;;;;;;;;:25;;839:12;;;826:25;;;;;;856:5;:11;;;;;:29;;871:14;;;856:29;;;;;;890:4;:10;;;;:27;;904:13;;;;890:27;;;732:190::o;23768:718::-;23957:12;;23861:7;;23917:4;23907:14;;;;23957:19;;;23861:7;;24077:353;23907:7;4959:16;23917:4;23957:19;24232:17;4959:16;24206:44;4886:15;24185:66;24154:147;24127:214;24414:1;24407:4;24398:7;24396:1;24387:7;:10;:18;24386:25;;;;;;4959:16;24362:50;24361:54;;;;;;24077:8;:353::i;:::-;:368;;;;;;;23768:718;-1:-1:-1;;;;;23768:718:0:o;20358:588::-;-1:-1:-1;;;;;20460:15:0;;20442;20460;;;;;;;;;;;20488:21;;;;;;:36;;;20523:1;20513:7;:11;20488:36;20480:45;;;;;;-1:-1:-1;;;;;20546:23:0;;20530:13;20546:23;;;:16;:23;;;;;;20582:10;;20546:33;;20582:10;20546:46;;;;-1:-1:-1;;;;;20617:27:0;;20597:17;20617:27;;;:20;:27;;;;;;20546:46;;;;;-1:-1:-1;20597:17:0;20657:10;;20617:37;;20657:10;20617:50;;;;-1:-1:-1;;;;;20672:23:0;;;;;;;:16;:23;;;;;;;;:35;;;;;;;20712:20;:27;;;;;;:43;;20617:50;;;;20712:43;;;;;;;20760:15;;;;;;:26;;;;;;;20791:21;;;;;;;;;;;:33;;;;;;20829:25;;;;;;:41;;;;;;20875:13;;;;;;:24;;;;;;20617:50;-1:-1:-1;20904:37:0;20689:5;20808:3;20779:7;20904:16;:37::i;:::-;20358:588;;;;;;:::o;2723:330::-;2814:4;2825:35;2836:10;2848:3;2853:6;2825:10;:35::i;:::-;2933:49;;-1:-1:-1;;;2933:49:0;;2956:10;2933:49;;;;;;;;;;;;;;;;;;;;;;;;;;;2924:3;;-1:-1:-1;;;;;2933:22:0;;;;;2956:10;;2968:6;;2976:5;;2933:49;;;;;;;;;;2865:32;2933:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3013:3;-1:-1:-1;;;;;2992:40:0;3001:10;-1:-1:-1;;;;;2992:40:0;;3018:6;3026:5;2992:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3044:4:0;;2723:330;-1:-1:-1;;;;2723:330:0:o;2445:207::-;2535:4;2546:35;2557:10;2569:3;2574:6;2546:10;:35::i;:::-;2612:3;-1:-1:-1;;;;;2591:40:0;2600:10;-1:-1:-1;;;;;2591:40:0;;2617:6;2625:5;2591:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2643:4:0;2445:207;;;;;:::o;14413:2581::-;14681:13;;;14692:1;14681:13;;;;;;;;;14460:8;;;;;;14533:10;;14659:19;;14681:13;;;;;;;;;;-1:-1:-1;14681:13:0;14659:35;;14872:34;14891:6;14899;14872:18;:34::i;:::-;14704:5;14710:1;14704:8;;;;;;;;;;;;;14737:5;14743:1;14737:8;;;;;;;;;;;;;14769:5;14775:1;14769:8;;;;;;;;;;;;;14805:5;14811:1;14805:8;;;;;;;;;;;;;14840:5;14846:1;14840:8;;;;;;;;;;;;;14699:207;;;;;;;;;;;;;;;;;;;;;;;;;14940:8;14951:37;14959:5;14965:1;14959:8;;;;;;;;;;;;;;14951:7;:37::i;:::-;15040:13;;;15051:1;15040:13;;;;;;;;;14940:48;;-1:-1:-1;15020:17:0;;15040:13;;;;15020:17;;15040:13;;;;;-1:-1:-1;15040:13:0;15020:33;;15087:17;15097:6;15087:9;:17::i;:::-;15061:3;15065:1;15061:6;;;;;;;;;;;;;15069:3;15073:1;15069:6;;;;;;;;;;;;;15077:3;15081:1;15077:6;;;;;;;;;;;;;;;;;15060:44;;;;;;;;15109:12;;15135:8;;-1:-1:-1;;;;;15109:12:0;;;;:17;;15127:6;;15135:5;;15109:12;;15135:8;;;;;;;;;;;;15164:3;15168:1;15164:6;;;;;;;;;;;;;;15172:3;15176:1;15172:6;;;;;;;;;;;;;;15180:3;15184:1;15180:6;;;;;;;;;;;;;;15109:78;;;;;;;;;;;;;-1:-1:-1;;;;;15109:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15255:5;15261:1;15255:8;;;;;;;;;;;;;;15237:15;:26;;;;15308:5;15314:1;15308:8;;;;;;;;;;;;;;;;;;;15291:14;:25;-1:-1:-1;;;;;15537:16:0;;:8;:16;;;;;;;;;;;15479;:24;;;;;;15508:25;;;15479:55;15537:16;15479:74;;;;-1:-1:-1;;;;;15452:24:0;;;;;;:16;:24;;;;;;;;15479:74;;;;15452:101;;;15719:16;;;;;;;15658:20;:28;;;;;15690:25;;;15658:58;15719:16;15658:77;;;;-1:-1:-1;;;;;15627:28:0;;;;;;:20;:28;;;;;15658:77;;;;15627:108;;;15828:8;;15859:3;;15828:5;;15627:28;;15828:8;;;;;;;;;;;;;;;15934:12;:22;;;;;;;-1:-1:-1;;;;;16019:16:0;;15934:12;16019:16;;;;;;;;;;;;15828:34;;;;-1:-1:-1;16000:63:0;;16011:6;;16019:25;;;;16000:9;:63::i;:::-;-1:-1:-1;;;;;16128:16:0;;:8;:16;;;;;;;;;;:26;;;;;;;16228:18;;:22;16223:457;;-1:-1:-1;;;16348:3:0;:17;16335:30;;16511:21;16546:18;;16535:10;:29;;;;;16636:18;:38;;16535:29;;;;16636:38;;;;;-1:-1:-1;16223:457:0;16711:32;;16693:12;;-1:-1:-1;;;;;16711:11:0;;;16729:9;;16693:12;16711:32;16693:12;16711:32;16729:9;16711:11;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16692:51;;;16762:7;16754:36;;;;;-1:-1:-1;;;16754:36:0;;;;;;;;;;;;-1:-1:-1;;;16754:36:0;;;;;;;;;;;;;;;16808:6;-1:-1:-1;;;;;16802:104:0;;16816:6;16824:9;16835:5;16841:1;16835:8;;;;;;;;;;;;;;16864:10;16876:5;16882:1;16876:8;;;;;;;;;;;;;;16802:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16919:9;16930:5;16936:1;16930:8;;;;;;;;;;;;;;16959:5;16965:1;16959:8;;;;;;;;;;;;;;16911:78;;;;;;;;;;;;;14413:2581;;;;;:::o;24494:198::-;24568:5;24577:1;24572;24568:5;;24567:11;24605:80;24616:1;24612;:5;24605:80;;;24638:1;24634:5;;24672:1;24667;24663;24659;:5;;;;;;:9;24658:15;;;;;;24654:19;;24605:80;;3058:422;3142:14;3158:16;3176:15;3195:44;3206:5;3213:7;3222:8;:15;3231:5;-1:-1:-1;;;;;3222:15:0;-1:-1:-1;;;;;3222:15:0;;;;;;;;;;;;;3195:9;:44::i;:::-;-1:-1:-1;;;;;3244:10:0;;;;;;;:3;:10;;;;;;;;:23;;;;;;;3272:5;:12;;;;;;:27;;;;;;;3304:4;:11;;;;;;:25;;;;;;;3334:8;;;;;;;;;;;;;:21;;;;;;;;3360:10;;;;;;:25;;;;;;;;3390:9;;;;;;:23;;;;;;;;3420:15;;;;;;;;;:26;;;;;;;3451:13;;;-1:-1:-1;;;3451:13:0;;;:24;;;;;;;3058:422::o;16999:164::-;17118:38;17129:4;17135:9;17146;17118;:38::i;:::-;-1:-1:-1;;;;;17080:9:0;;;;;;;:3;:9;;;;;;;;17091:5;:11;;;;;17104:4;:10;;;;;17079:77;;;;;;;;;-1:-1:-1;;16999:164:0:o;1310:235::-;-1:-1:-1;;;;;1427:9:0;;1399:4;1427:9;;;:3;:9;;;;;;1399:4;;;;1451:11;;1427:21;;1451:11;1427:35;;;;-1:-1:-1;;;;;1464:11:0;;;;;;:5;:11;;;;;;1427:35;;;;1490:11;;1464:23;;1490:11;1464:37;;;;-1:-1:-1;;;;;1503:10:0;;;;;;:4;:10;;;;;;1464:37;;;;1528:11;;1503:22;;1528:11;1503:36;;;;;1419:121;;;;;;1310:235;;;;;;;:::o
Swarm Source
ipfs://1aa7cd8a42534c2fd1cc8ca4cff235ddf49e03898986818662d4bd30e6b504e2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)