ETH Price: $3,995.84 (+2.68%)

Token

SAND (SAND)
 

Overview

Max Total Supply

3,000,000,000 SAND

Holders

211,086 ( -0.027%)

Market

Price

$0.90 @ 0.000226 ETH (-1.22%)

Onchain Market Cap

$2,714,541,000.00

Circulating Supply Market Cap

$2,196,949,291.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000115 SAND

Value
$0.00 ( ~0 Eth) [0.0000%]
0xBd9ed148F421dde7eAf0Bee6d81284c593B4c797
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Sandbox is a virtual world where players can build, own, and monetize their gaming experiences in the Ethereum blockchain using SAND, the platform’s utility token.

Market

Volume (24H):$753,946,575.00
Market Capitalization:$2,196,949,291.00
Circulating Supply:2,430,232,126.00 SAND
Market Data Source: Coinmarketcap

IEO Information

IEO Start Date : Aug 13, 2020
IEO End Date : Aug 14, 2020
IEO Price : $0.0083
IEO Launchpad : https://launchpad.binance.com/
Hard Cap : $3000000
Raised : $3000000

 

Private Sale Information

Seed Sale Token Price : $0.0036
Seed Sale Allocation : 17.18% of total token supply
Seed Sale Vesting Period : 12-month cliff; 20% unlocks every six months afterwards

# Exchange Pair Price  24H Volume % Volume
1
Binance
SAND-USDT$0.9033
0.0002262 Eth
$125,584,266.00
138,687,676.000 SAND
20.5224%
2
Websea
SAND-USDT$0.904
0.0002265 Eth
$67,520,730.00
0.000 SAND
0.0000%
3
XT.COM
SAND-USDT$0.904
0.0002265 Eth
$37,297,351.00
41,189,093.000 SAND
6.0950%
4
Poloniex
SAND-USDT$0.9047
0.0002268 Eth
$34,606,265.00
38,127,627.702 SAND
5.6420%
5
Bilaxy
SAND-USDT$0.9037
0.0002262 Eth
$34,251,592.00
37,900,327.000 SAND
5.6083%
6
Bybit
SAND-USDT$0.9033
0.0002261 Eth
$31,018,333.00
34,296,562.500 SAND
5.0751%
7
DigiFinex
SAND-USDT$0.9034
0.0002262 Eth
$28,019,374.00
31,013,934.000 SAND
4.5893%
8
BYDFi
SAND-USDT$0.9049
0.0002266 Eth
$25,688,072.00
28,388,085.000 SAND
4.2007%
9
Gate.io
SAND-USDT$0.9055
0.0002267 Eth
$24,182,427.00
26,632,962.670 SAND
3.9410%
10
OKX
SAND-USDT$0.9024
0.0002260 Eth
$23,314,724.00
25,694,953.490 SAND
3.8022%
11
LATOKEN
SAND-USDT$0.9029
0.0002261 Eth
$19,605,991.00
21,713,526.758 SAND
3.2131%
12
CoinW
SAND-USDT$0.904
0.0002265 Eth
$19,428,265.00
21,491,567.983 SAND
3.1802%
13
Slex
SAND-USDT$0.9049
0.0002265 Eth
$17,300,905.00
19,055,593.000 SAND
2.8198%
14
Bitunix
SAND-USDT$0.9032
0.0002261 Eth
$15,880,314.00
17,583,166.000 SAND
2.6019%
15
Coinbase Exchange
SAND-USD$0.905
0.0002267 Eth
$14,998,563.00
16,572,998.090 SAND
2.4524%
16
WhiteBIT
SAND-USDT$0.9056
0.0002270 Eth
$13,473,511.00
14,877,284.010 SAND
2.2015%
17
Toobit
SAND-USDT$0.9026
0.0002261 Eth
$12,435,335.00
13,716,641.000 SAND
2.0297%
18
MEXC
SAND-USDT$0.9038
0.0002266 Eth
$11,708,033.00
12,953,671.970 SAND
1.9168%
19
Phemex
SAND-USDT$0.9079
0.0002271 Eth
$9,657,202.00
10,636,550.880 SAND
1.5740%
20
Ourbit
SAND-USDT$0.9036
0.0002264 Eth
$9,351,729.00
10,329,711.980 SAND
1.5285%
21
BTSE
SAND-USDT$0.9081
0.0002271 Eth
$8,369,747.00
9,217,269.183 SAND
1.3639%
22
BVOX
SAND-USDT$0.9051
0.0002267 Eth
$7,208,702.00
7,940,458.000 SAND
1.1750%
23
Hibt
SAND-USDT$0.9095
0.0002274 Eth
$6,275,434.00
6,928,780.444 SAND
1.0253%
24
Hotcoin
SAND-USDT$0.9038
0.0002264 Eth
$6,111,891.00
6,762,289.000 SAND
1.0007%
25
FameEX
SAND-USDT$0.9071
0.0002272 Eth
$5,142,226.00
5,676,396.919 SAND
0.8400%
26
HTX
SAND-USDT$0.9032
0.0002261 Eth
$5,041,500.00
5,563,027.426 SAND
0.8232%
27
Dex-Trade
SAND-USDT$0.9041
0.0002267 Eth
$4,155,951.00
4,596,735.634 SAND
0.6802%
28
Coinstore
SAND-USDT$0.9087
0.0002273 Eth
$3,717,486.00
4,098,975.100 SAND
0.6065%
29
Bitrue
SAND-USDC$0.9046
0.0002265 Eth
$3,612,877.00
3,993,777.700 SAND
0.5910%
30
KuCoin
SAND-USDT$0.9045
0.0002264 Eth
$2,962,760.00
3,275,544.313 SAND
0.4847%
31
FMFW.io
SAND-USDT$0.9031
0.0002266 Eth
$2,801,746.00
3,102,358.100 SAND
0.4591%
32
HitBTC
SAND-USDT$0.9046
0.0002265 Eth
$2,774,726.00
3,056,915.000 SAND
0.4523%
33
Binance
SAND-TRY$0.9062
0.0002269 Eth
$2,599,682.00
2,854,386.900 SAND
0.4224%
34
CoinEx
SAND-USDT$0.9045
0.0002264 Eth
$2,573,738.00
2,823,377.936 SAND
0.4178%
35
BitMart
SAND-USDT$0.9044
0.0002264 Eth
$2,257,660.00
2,496,428.000 SAND
0.3694%
36
Binance
SAND-BTC$0.9057
0.0002268 Eth
$1,980,979.00
2,184,400.000 SAND
0.3232%
37
PointPay
SAND-USDT$0.9088
0.0002273 Eth
$1,946,164.00
2,150,049.954 SAND
0.3182%
38
Bullish
SAND-USDC$0.9042
0.0002268 Eth
$1,939,658.00
2,141,881.835 SAND
0.3169%
39
OrangeX
SAND-USDT$0.9043
0.0002264 Eth
$1,934,619.00
2,133,109.000 SAND
0.3156%
40
Bitget
SAND-USDT$0.9034
0.0002262 Eth
$1,887,018.00
2,083,422.485 SAND
0.3083%
41
Bitrue
SAND-XRP$0.9041
0.0002265 Eth
$1,877,429.00
2,076,572.070 SAND
0.3073%
42
Pionex
SAND-USDT$0.9048
0.0002267 Eth
$1,765,434.00
1,948,900.688 SAND
0.2884%
43
BingX
SAND-USDT$0.9032
0.0002261 Eth
$1,720,760.00
1,900,067.944 SAND
0.2812%
44
Kraken
SAND-USD$0.9037
0.0002263 Eth
$1,711,002.00
1,893,329.578 SAND
0.2802%
45
Bitvavo
SAND-EUR$0.9046
0.0002265 Eth
$1,512,499.00
1,671,957.165 SAND
0.2474%
46
BIT
SAND-USDT$0.9049
0.0002266 Eth
$1,471,976.00
1,626,691.898 SAND
0.2407%
47
Binance
SAND-FDUSD$0.9026
0.0002264 Eth
$1,411,462.00
1,558,187.000 SAND
0.2306%
48
BitStorage
SAND-USDT$0.911
0.0002277 Eth
$1,278,745.00
1,403,705.000 SAND
0.2077%
49
Bitkub
SAND-THB$0.9048
0.0002266 Eth
$1,263,047.00
1,395,951.073 SAND
0.2066%
50
LBank
SAND-USDT$0.9046
0.0002266 Eth
$1,026,165.00
1,134,351.130 SAND
0.1679%
51
Kraken
SAND-EUR$0.9049
0.0002265 Eth
$946,725.00
1,046,277.880 SAND
0.1548%
52
Bit2Me
SAND-EUR$0.9049
0.0002266 Eth
$932,019.00
1,025,352.323 SAND
0.1517%
53
Icrypex
SAND-USDT$0.9056
0.0002269 Eth
$806,009.00
890,026.093 SAND
0.1317%
54
BloFin
SAND-USDT$0.9043
0.0002264 Eth
$770,712.00
849,683.000 SAND
0.1257%
55
Trubit
SAND-USDT$0.9053
0.0002267 Eth
$655,405.00
722,182.000 SAND
0.1069%
56
Crypto.com Exchange
SAND-USD$0.9048
0.0002265 Eth
$651,386.00
719,922.400 SAND
0.1065%
57
DIFX
SAND-USDT$0.9043
0.0002265 Eth
$633,244.00
698,459.000 SAND
0.1034%
58
Koinpark
SAND-USDT$0.9047
0.0002265 Eth
$565,777.00
625,371.237 SAND
0.0925%
59
Bitstamp
SAND-EUR$0.9109
0.0002281 Eth
$501,318.00
550,368.302 SAND
0.0814%
60
Biconomy.com
SAND-USDT$0.9052
0.0002266 Eth
$466,187.00
512,873.200 SAND
0.0759%
61
Binance
SAND-USDC$0.9044
0.0002264 Eth
$421,925.00
465,931.000 SAND
0.0689%
62
Bitbank
SAND-JPY$0.907
0.0002272 Eth
$408,898.00
450,819.190 SAND
0.0667%
63
BitDelta
SAND-USDT$0.91
0.0002274 Eth
$405,928.00
447,811.000 SAND
0.0663%
64
Crypto.com Exchange
SAND-USDT$0.9016
0.0002257 Eth
$400,100.00
443,759.300 SAND
0.0657%
65
bitcastle
SAND-USDT$0.9029
0.0002261 Eth
$385,675.00
425,992.000 SAND
0.0630%
66
Quickswap
0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683-0X0D500B1D8E8EF31E21C99D1DB9A6444D3ADF1270$0.9033
0.0002263 Eth
$372,051.00
408,806.156 0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683
0.0605%
67
CoinTR
SAND-USDT$0.9037
0.0002264 Eth
$370,860.00
409,319.300 SAND
0.0606%
68
Vindax
SAND-USDT$0.9029
0.0002263 Eth
$368,251.00
407,844.000 SAND
0.0604%
69
Deepcoin
SAND-USDT$0.9066
0.0002270 Eth
$356,611.00
398,672.000 SAND
0.0590%
70
Gemini
SAND-USD$0.9075
0.0002273 Eth
$346,538.00
381,877.162 SAND
0.0565%
71
Bitci TR
SAND-TRY$0.9088
0.0002276 Eth
$287,123.00
315,223.374 SAND
0.0466%
72
OKX
SAND-USDC$0.9028
0.0002261 Eth
$281,735.00
311,049.758 SAND
0.0460%
73
Uniswap V2 (Ethereum)
0X3845BADADE8E6DFF049820680D1F14BD3903A5D0-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.9075
0.0002273 Eth
$262,343.00
286,946.646 0X3845BADADE8E6DFF049820680D1F14BD3903A5D0
0.0425%
74
BigONE
SAND-USDT$0.9042
0.0002265 Eth
$226,099.00
250,060.800 SAND
0.0370%
75
DeGate
0X3845BADADE8E6DFF049820680D1F14BD3903A5D0-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.9043
0.0002265 Eth
$220,837.00
244,056.580 0X3845BADADE8E6DFF049820680D1F14BD3903A5D0
0.0361%
76
KickEX
SAND-USDT$0.9035
0.0002263 Eth
$212,515.00
235,201.973 SAND
0.0348%
77
Coinbase Exchange
SAND-USDT$0.9046
0.0002266 Eth
$196,070.00
216,743.210 SAND
0.0321%
78
WhiteBIT
SAND-TRY$0.9087
0.0002276 Eth
$184,417.00
202,946.870 SAND
0.0300%
79
Azbit
SAND-USDT$0.9092
0.0002274 Eth
$153,841.00
169,548.243 SAND
0.0251%
80
Bitso
SAND-USD$0.9055
0.0002268 Eth
$148,740.00
164,271.936 SAND
0.0243%
81
TokoCrypto
SAND-USDT$0.9045
0.0002266 Eth
$140,881.00
155,750.643 SAND
0.0230%
82
Quickswap (v3)
0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683-0X0D500B1D8E8EF31E21C99D1DB9A6444D3ADF1270$0.8964
0.0002245 Eth
$96,544.00
106,878.916 0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683
0.0158%
83
Binance US
SAND-USDT$0.9077
0.0002272 Eth
$90,616.00
99,834.771 SAND
0.0148%
84
Bitexen
SAND-TRY$0.8986
0.0002251 Eth
$82,718.00
92,050.508 SAND
0.0136%
85
Uniswap V3 (Polygon)
0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683-0X0D500B1D8E8EF31E21C99D1DB9A6444D3ADF1270$0.9073
0.0002272 Eth
$72,800.00
79,688.115 0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683
0.0118%
86
Dex-Trade
SAND-BTC$0.9061
0.0002269 Eth
$70,777.00
78,108.000 SAND
0.0116%
87
EXMO
SAND-USDT$0.9046
0.0002265 Eth
$67,889.00
75,046.351 SAND
0.0111%
88
EXMO
SAND-USDC$0.905
0.0002265 Eth
$64,909.00
71,726.222 SAND
0.0106%
89
Kraken
SAND-XBT$0.9047
0.0002265 Eth
$50,566.00
55,889.072 SAND
0.0083%
90
WEEX
SAND-USDT$0.9095
0.0002274 Eth
$36,305.00
40,079.000 SAND
0.0059%
91
Bybit
SAND-USDC$0.9045
0.0002265 Eth
$32,197.00
35,634.740 SAND
0.0053%
92
BitStorage
SAND-BTC$0.9052
0.0002267 Eth
$19,675.45
21,735.000 SAND
0.0032%
93
CoinEx
SAND-BTC$0.9051
0.0002271 Eth
$15,335.16
16,950.999 SAND
0.0025%
94
Bybit
SAND-BTC$0.9047
0.0002265 Eth
$13,860.68
15,285.600 SAND
0.0023%
95
CEX.IO
SAND-USD$0.9021
0.0002264 Eth
$3,754.62
4,233.010 SAND
0.0006%
96
Ace
SAND-USDT$0.9072
0.0002271 Eth
$3,173.76
3,522.000 SAND
0.0005%
97
Uniswap V3 (Polygon)
0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683-0XC2132D05D31C914A87C6611C10748AEB04B58E8F$0.9072
0.0002276 Eth
$2,391.82
2,651.020 0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683
0.0004%
98
Uniswap V3 (Polygon)
0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683-0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174$0.9072
0.0002276 Eth
$1,789.16
1,982.612 0XBBBA073C31BF03B8ACF7C28EF0738DECF3695683
0.0003%
99
Nominex
SAND-USDT$0.9015
0.0002262 Eth
$502.65
557.588 SAND
0.0001%
100
CEX.IO
SAND-USDT$0.9044
0.0002267 Eth
$42.08
45.708 SAND
0.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
Sand

Compiler Version
v0.5.9+commit.e560f70d

Optimization Enabled:
Yes with 2000 runs

Other Settings:
petersburg EvmVersion, None license
File 1 of 8 : Sand.sol
pragma solidity 0.5.9;

import "./Sand/erc20/ERC20ExecuteExtension.sol";
import "./Sand/erc20/ERC20BaseToken.sol";
import "./Sand/erc20/ERC20BasicApproveExtension.sol";

contract Sand is ERC20ExecuteExtension, ERC20BasicApproveExtension, ERC20BaseToken {

    constructor(address sandAdmin, address executionAdmin, address beneficiary) public {
        _admin = sandAdmin;
        _executionAdmin = executionAdmin;
        _mint(beneficiary, 3000000000000000000000000000);
    }

    /// @notice A descriptive name for the tokens
    /// @return name of the tokens
    function name() public view returns (string memory) {
        return "SAND";
    }

    /// @notice An abbreviated name for the tokens
    /// @return symbol of the tokens
    function symbol() public view returns (string memory) {
        return "SAND";
    }

}

File 2 of 8 : Admin.sol
pragma solidity ^0.5.2;

contract Admin {

    address internal _admin;

    event AdminChanged(address oldAdmin, address newAdmin);

    /// @notice gives the current administrator of this contract.
    /// @return the current administrator of this contract.
    function getAdmin() external view returns (address) {
        return _admin;
    }

    /// @notice change the administrator to be `newAdmin`.
    /// @param newAdmin address of the new administrator.
    function changeAdmin(address newAdmin) external {
        require(msg.sender == _admin, "only admin can change admin");
        emit AdminChanged(_admin, newAdmin);
        _admin = newAdmin;
    }
}

File 3 of 8 : SuperOperators.sol
pragma solidity ^0.5.2;

import "./Admin.sol";

contract SuperOperators is Admin {

    mapping(address => bool) internal _superOperators;

    event SuperOperator(address superOperator, bool enabled);

    /// @notice Enable or disable the ability of `superOperator` to transfer tokens of all (superOperator rights).
    /// @param superOperator address that will be given/removed superOperator right.
    /// @param enabled set whether the superOperator is enabled or disabled.
    function setSuperOperator(address superOperator, bool enabled) external {
        require(
            msg.sender == _admin,
            "only admin is allowed to add super operators"
        );
        _superOperators[superOperator] = enabled;
        emit SuperOperator(superOperator, enabled);
    }

    /// @notice check whether address `who` is given superOperator rights.
    /// @param who The address to query.
    /// @return whether the address has superOperator rights.
    function isSuperOperator(address who) public view returns (bool) {
        return _superOperators[who];
    }
}

File 4 of 8 : ERC20Events.sol
pragma solidity ^0.5.2;

/* interface */
contract ERC20Events {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

File 5 of 8 : BytesUtil.sol
pragma solidity ^0.5.2;

library BytesUtil {
    function memcpy(uint256 dest, uint256 src, uint256 len) internal pure {
        // Copy word-length chunks while possible
        for (; len >= 32; len -= 32) {
            assembly {
                mstore(dest, mload(src))
            }
            dest += 32;
            src += 32;
        }

        // Copy remaining bytes
        uint256 mask = 256**(32 - len) - 1;
        assembly {
            let srcpart := and(mload(src), not(mask))
            let destpart := and(mload(dest), mask)
            mstore(dest, or(destpart, srcpart))
        }
    }

    function pointerToBytes(uint256 src, uint256 len)
        internal
        pure
        returns (bytes memory)
    {
        bytes memory ret = new bytes(len);
        uint256 retptr;
        assembly {
            retptr := add(ret, 32)
        }

        memcpy(retptr, src, len);
        return ret;
    }

    function addressToBytes(address a) internal pure returns (bytes memory b) {
        assembly {
            let m := mload(0x40)
            mstore(
                add(m, 20),
                xor(0x140000000000000000000000000000000000000000, a)
            )
            mstore(0x40, add(m, 52))
            b := m
        }
    }

    function uint256ToBytes(uint256 a) internal pure returns (bytes memory b) {
        assembly {
            let m := mload(0x40)
            mstore(add(m, 32), a)
            mstore(0x40, add(m, 64))
            b := m
        }
    }

    function doFirstParamEqualsAddress(bytes memory data, address _address)
        internal
        pure
        returns (bool)
    {
        if (data.length < (36 + 32)) {
            return false;
        }
        uint256 value;
        assembly {
            value := mload(add(data, 36))
        }
        return value == uint256(_address);
    }

    function doParamEqualsUInt256(bytes memory data, uint256 i, uint256 value)
        internal
        pure
        returns (bool)
    {
        if (data.length < (36 + (i + 1) * 32)) {
            return false;
        }
        uint256 offset = 36 + i * 32;
        uint256 valuePresent;
        assembly {
            valuePresent := mload(add(data, offset))
        }
        return valuePresent == value;
    }

    function overrideFirst32BytesWithAddress(
        bytes memory data,
        address _address
    ) internal pure returns (bytes memory) {
        uint256 dest;
        assembly {
            dest := add(data, 48)
        } // 48 = 32 (offset) + 4 (func sig) + 12 (address is only 20 bytes)

        bytes memory addressBytes = addressToBytes(_address);
        uint256 src;
        assembly {
            src := add(addressBytes, 32)
        }

        memcpy(dest, src, 20);
        return data;
    }

    function overrideFirstTwo32BytesWithAddressAndInt(
        bytes memory data,
        address _address,
        uint256 _value
    ) internal pure returns (bytes memory) {
        uint256 dest;
        uint256 src;

        assembly {
            dest := add(data, 48)
        } // 48 = 32 (offset) + 4 (func sig) + 12 (address is only 20 bytes)
        bytes memory bbytes = addressToBytes(_address);
        assembly {
            src := add(bbytes, 32)
        }
        memcpy(dest, src, 20);

        assembly {
            dest := add(data, 68)
        } // 48 = 32 (offset) + 4 (func sig) + 32 (next slot)
        bbytes = uint256ToBytes(_value);
        assembly {
            src := add(bbytes, 32)
        }
        memcpy(dest, src, 32);

        return data;
    }
}

File 6 of 8 : ERC20BaseToken.sol
pragma solidity 0.5.9;

import "../../../contracts_common/src/Interfaces/ERC20Events.sol";
import "../../../contracts_common/src/BaseWithStorage/SuperOperators.sol";

contract ERC20BaseToken is SuperOperators, ERC20Events {

    uint256 internal _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    /// @notice Gets the total number of tokens in existence.
    /// @return the total number of tokens in existence.
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /// @notice Gets the balance of `owner`.
    /// @param owner The address to query the balance of.
    /// @return The amount owned by `owner`.
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /// @notice gets allowance of `spender` for `owner`'s tokens.
    /// @param owner address whose token is allowed.
    /// @param spender address allowed to transfer.
    /// @return the amount of token `spender` is allowed to transfer on behalf of `owner`.
    function allowance(address owner, address spender)
        public
        view
        returns (uint256 remaining)
    {
        return _allowances[owner][spender];
    }

    /// @notice returns the number of decimals for that token.
    /// @return the number of decimals.
    function decimals() public view returns (uint8) {
        return uint8(18);
    }

    /// @notice Transfer `amount` tokens to `to`.
    /// @param to the recipient address of the tokens transfered.
    /// @param amount the number of tokens transfered.
    /// @return true if success.
    function transfer(address to, uint256 amount)
        public
        returns (bool success)
    {
        _transfer(msg.sender, to, amount);
        return true;
    }

    /// @notice Transfer `amount` tokens from `from` to `to`.
    /// @param from whose token it is transferring from.
    /// @param to the recipient address of the tokens transfered.
    /// @param amount the number of tokens transfered.
    /// @return true if success.
    function transferFrom(address from, address to, uint256 amount)
        public
        returns (bool success)
    {
        if (msg.sender != from && !_superOperators[msg.sender]) {
            uint256 currentAllowance = _allowances[from][msg.sender];
            if (currentAllowance != (2**256) - 1) {
                // save gas when allowance is maximal by not reducing it (see https://github.com/ethereum/EIPs/issues/717)
                require(currentAllowance >= amount, "Not enough funds allowed");
                _allowances[from][msg.sender] = currentAllowance - amount;
            }
        }
        _transfer(from, to, amount);
        return true;
    }

    /// @notice burn `amount` tokens.
    /// @param amount the number of tokens to burn.
    /// @return true if success.
    function burn(uint256 amount) external returns (bool) {
        _burn(msg.sender, amount);
        return true;
    }

    /// @notice burn `amount` tokens from `owner`.
    /// @param owner address whose token is to burn.
    /// @param amount the number of token to burn.
    /// @return true if success.
    function burnFor(address owner, uint256 amount) external returns (bool) {
        _burn(owner, amount);
        return true;
    }

    /// @notice approve `spender` to transfer `amount` tokens.
    /// @param spender address to be given rights to transfer.
    /// @param amount the number of tokens allowed.
    /// @return true if success.
    function approve(address spender, uint256 amount)
        public
        returns (bool success)
    {
        _approveFor(msg.sender, spender, amount);
        return true;
    }

    /// @notice approve `spender` to transfer `amount` tokens from `owner`.
    /// @param owner address whose token is allowed.
    /// @param spender  address to be given rights to transfer.
    /// @param amount the number of tokens allowed.
    /// @return true if success.
    function approveFor(address owner, address spender, uint256 amount)
        public
        returns (bool success)
    {
        require(
            msg.sender == owner || _superOperators[msg.sender],
            "msg.sender != owner && !superOperator"
        );
        _approveFor(owner, spender, amount);
        return true;
    }

    function addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded)
        public
        returns (bool success)
    {
        require(
            msg.sender == owner || _superOperators[msg.sender],
            "msg.sender != owner && !superOperator"
        );
        _addAllowanceIfNeeded(owner, spender, amountNeeded);
        return true;
    }

    function _addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded)
        internal
    {
        if(amountNeeded > 0 && !isSuperOperator(spender)) {
            uint256 currentAllowance = _allowances[owner][spender];
            if(currentAllowance < amountNeeded) {
                _approveFor(owner, spender, amountNeeded);
            }
        }
    }

    function _approveFor(address owner, address spender, uint256 amount)
        internal
    {
        require(
            owner != address(0) && spender != address(0),
            "Cannot approve with 0x0"
        );
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(to != address(0), "Cannot send to 0x0");
        uint256 currentBalance = _balances[from];
        require(currentBalance >= amount, "not enough fund");
        _balances[from] = currentBalance - amount;
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function _mint(address to, uint256 amount) internal {
        require(to != address(0), "Cannot mint to 0x0");
        require(amount > 0, "cannot mint 0 tokens");
        uint256 currentTotalSupply = _totalSupply;
        uint256 newTotalSupply = currentTotalSupply + amount;
        require(newTotalSupply > currentTotalSupply, "overflow");
        _totalSupply = newTotalSupply;
        _balances[to] += amount;
        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal {
        require(amount > 0, "cannot burn 0 tokens");
        if (msg.sender != from && !_superOperators[msg.sender]) {
            uint256 currentAllowance = _allowances[from][msg.sender];
            require(
                currentAllowance >= amount,
                "Not enough funds allowed"
            );
            if (currentAllowance != (2**256) - 1) {
                // save gas when allowance is maximal by not reducing it (see https://github.com/ethereum/EIPs/issues/717)
                _allowances[from][msg.sender] = currentAllowance - amount;
            }
        }

        uint256 currentBalance = _balances[from];
        require(currentBalance >= amount, "Not enough funds");
        _balances[from] = currentBalance - amount;
        _totalSupply -= amount;
        emit Transfer(from, address(0), amount);
    }
}

File 7 of 8 : ERC20BasicApproveExtension.sol
pragma solidity 0.5.9;

import "../../../contracts_common/src/Libraries/BytesUtil.sol";

contract ERC20BasicApproveExtension {

    /// @notice approve `target` to spend `amount` and call it with data.
    /// @param target address to be given rights to transfer and destination of the call.
    /// @param amount the number of tokens allowed.
    /// @param data bytes for the call.
    /// @return data of the call.
    function approveAndCall(
        address target,
        uint256 amount,
        bytes calldata data
    ) external payable returns (bytes memory) {
        require(
            BytesUtil.doFirstParamEqualsAddress(data, msg.sender),
            "first param != sender"
        );

        _approveFor(msg.sender, target, amount);

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call.value(msg.value)(data);
        require(success, string(returnData));
        return returnData;
    }

    /// @notice temporarly approve `target` to spend `amount` and call it with data. Previous approvals remains unchanged.
    /// @param target destination of the call, allowed to spend the amount specified
    /// @param amount the number of tokens allowed to spend.
    /// @param data bytes for the call.
    /// @return data of the call.
    function paidCall(
        address target,
        uint256 amount,
        bytes calldata data
    ) external payable returns (bytes memory) {
        require(
            BytesUtil.doFirstParamEqualsAddress(data, msg.sender),
            "first param != sender"
        );

        if (amount > 0) {
            _addAllowanceIfNeeded(msg.sender, target, amount);
        }

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call.value(msg.value)(data);
        require(success, string(returnData));

        return returnData;
    }

    function _approveFor(address owner, address target, uint256 amount) internal;
    function _addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded) internal;
}

File 8 of 8 : ERC20ExecuteExtension.sol
pragma solidity 0.5.9;


contract ERC20ExecuteExtension {

    /// @dev _executionAdmin != _admin so that this super power can be disabled independently
    address internal _executionAdmin;

    event ExecutionAdminAdminChanged(address oldAdmin, address newAdmin);

    /// @notice give the address responsible for adding execution rights.
    /// @return address of the execution administrator.
    function getExecutionAdmin() external view returns (address) {
        return _executionAdmin;
    }

    /// @notice change the execution adminstrator to be `newAdmin`.
    /// @param newAdmin address of the new administrator.
    function changeExecutionAdmin(address newAdmin) external {
        require(msg.sender == _executionAdmin, "only executionAdmin can change executionAdmin");
        emit ExecutionAdminAdminChanged(_executionAdmin, newAdmin);
        _executionAdmin = newAdmin;
    }

    mapping(address => bool) internal _executionOperators;
    event ExecutionOperator(address executionOperator, bool enabled);

    /// @notice set `executionOperator` as executionOperator: `enabled`.
    /// @param executionOperator address that will be given/removed executionOperator right.
    /// @param enabled set whether the executionOperator is enabled or disabled.
    function setExecutionOperator(address executionOperator, bool enabled) external {
        require(
            msg.sender == _executionAdmin,
            "only execution admin is allowed to add execution operators"
        );
        _executionOperators[executionOperator] = enabled;
        emit ExecutionOperator(executionOperator, enabled);
    }

    /// @notice check whether address `who` is given executionOperator rights.
    /// @param who The address to query.
    /// @return whether the address has executionOperator rights.
    function isExecutionOperator(address who) public view returns (bool) {
        return _executionOperators[who];
    }

    /// @notice execute on behalf of the contract.
    /// @param to destination address fo the call.
    /// @param gasLimit exact amount of gas to be passed to the call.
    /// @param data the bytes sent to the destination address.
    /// @return success whether the execution was successful.
    /// @return returnData data resulting from the execution.
    function executeWithSpecificGas(address to, uint256 gasLimit, bytes calldata data) external returns (bool success, bytes memory returnData) {
        require(_executionOperators[msg.sender], "only execution operators allowed to execute on SAND behalf");
        (success, returnData) = to.call.gas(gasLimit)(data);
        assert(gasleft() > gasLimit / 63); // not enough gas provided, assert to throw all gas // TODO use EIP-1930
    }

    /// @notice approve a specific amount of token for `from` and execute on behalf of the contract.
    /// @param from address of which token will be transfered.
    /// @param to destination address fo the call.
    /// @param amount number of tokens allowed that can be transfer by the code at `to`.
    /// @param gasLimit exact amount of gas to be passed to the call.
    /// @param data the bytes sent to the destination address.
    /// @return success whether the execution was successful.
    /// @return returnData data resulting from the execution.
    function approveAndExecuteWithSpecificGas(
        address from,
        address to,
        uint256 amount,
        uint256 gasLimit,
        bytes calldata data
    ) external returns (bool success, bytes memory returnData) {
        require(_executionOperators[msg.sender], "only execution operators allowed to execute on SAND behalf");
        return _approveAndExecuteWithSpecificGas(from, to, amount, gasLimit, data);
    }

    /// @dev the reason for this function is that charging for gas here is more gas-efficient than doing it in the caller.
    /// @notice approve a specific amount of token for `from` and execute on behalf of the contract. Plus charge the gas required to perform it.
    /// @param from address of which token will be transfered.
    /// @param to destination address fo the call.
    /// @param amount number of tokens allowed that can be transfer by the code at `to`.
    /// @param gasLimit exact amount of gas to be passed to the call.
    /// @param tokenGasPrice price in token for the gas to be charged.
    /// @param baseGasCharge amount of gas charged on top of the gas used for the call.
    /// @param tokenReceiver recipient address of the token charged for the gas used.
    /// @param data the bytes sent to the destination address.
    /// @return success whether the execution was successful.
    /// @return returnData data resulting from the execution.
    function approveAndExecuteWithSpecificGasAndChargeForIt(
        address from,
        address to,
        uint256 amount,
        uint256 gasLimit,
        uint256 tokenGasPrice,
        uint256 baseGasCharge,
        address tokenReceiver,
        bytes calldata data
    ) external returns (bool success, bytes memory returnData) {
        uint256 initialGas = gasleft();
        require(_executionOperators[msg.sender], "only execution operators allowed to execute on SAND behalf");
        (success, returnData) = _approveAndExecuteWithSpecificGas(from, to, amount, gasLimit, data);
        if (tokenGasPrice > 0) {
            _charge(from, gasLimit, tokenGasPrice, initialGas, baseGasCharge, tokenReceiver);
        }
    }

    /// @notice transfer 1amount1 token from `from` to `to` and charge the gas required to perform that transfer.
    /// @param from address of which token will be transfered.
    /// @param to destination address fo the call.
    /// @param amount number of tokens allowed that can be transfer by the code at `to`.
    /// @param gasLimit exact amount of gas to be passed to the call.
    /// @param tokenGasPrice price in token for the gas to be charged.
    /// @param baseGasCharge amount of gas charged on top of the gas used for the call.
    /// @param tokenReceiver recipient address of the token charged for the gas used.
    /// @return whether the transfer was successful.
    function transferAndChargeForGas(
        address from,
        address to,
        uint256 amount,
        uint256 gasLimit,
        uint256 tokenGasPrice,
        uint256 baseGasCharge,
        address tokenReceiver
    ) external returns (bool) {
        uint256 initialGas = gasleft();
        require(_executionOperators[msg.sender], "only execution operators allowed to perfrom transfer and charge");
        _transfer(from, to, amount);
        if (tokenGasPrice > 0) {
            _charge(from, gasLimit, tokenGasPrice, initialGas, baseGasCharge, tokenReceiver);
        }
        return true;
    }

    function _charge(
        address from,
        uint256 gasLimit,
        uint256 tokenGasPrice,
        uint256 initialGas,
        uint256 baseGasCharge,
        address tokenReceiver
    ) internal {
        uint256 gasCharge = initialGas - gasleft();
        if(gasCharge > gasLimit) {
            gasCharge = gasLimit;
        }
        gasCharge += baseGasCharge;
        uint256 tokensToCharge = gasCharge * tokenGasPrice;
        require(tokensToCharge / gasCharge == tokenGasPrice, "overflow");
        _transfer(from, tokenReceiver, tokensToCharge);
    }

    function _approveAndExecuteWithSpecificGas(
        address from,
        address to,
        uint256 amount,
        uint256 gasLimit,
        bytes memory data
    ) internal returns (bool success, bytes memory returnData) {

        if (amount > 0) {
            _addAllowanceIfNeeded(from, to, amount);
        }
        (success, returnData) = to.call.gas(gasLimit)(data);
        assert(gasleft() > gasLimit / 63); // not enough gas provided, assert to throw all gas // TODO use EIP-1930
    }


    function _transfer(address from, address to, uint256 amount) internal;
    function _addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded) internal;
}

Settings
{
  "evmVersion": "petersburg",
  "libraries": {},
  "metadata": {
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"changeExecutionAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnFor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approveFor","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"},{"name":"amountNeeded","type":"uint256"}],"name":"addAllowanceIfNeeded","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"isExecutionOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"isSuperOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"executionOperator","type":"address"},{"name":"enabled","type":"bool"}],"name":"setExecutionOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"gasLimit","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndExecuteWithSpecificGas","outputs":[{"name":"success","type":"bool"},{"name":"returnData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"superOperator","type":"address"},{"name":"enabled","type":"bool"}],"name":"setSuperOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getExecutionAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"paidCall","outputs":[{"name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"gasLimit","type":"uint256"},{"name":"tokenGasPrice","type":"uint256"},{"name":"baseGasCharge","type":"uint256"},{"name":"tokenReceiver","type":"address"},{"name":"data","type":"bytes"}],"name":"approveAndExecuteWithSpecificGasAndChargeForIt","outputs":[{"name":"success","type":"bool"},{"name":"returnData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"gasLimit","type":"uint256"},{"name":"data","type":"bytes"}],"name":"executeWithSpecificGas","outputs":[{"name":"success","type":"bool"},{"name":"returnData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"gasLimit","type":"uint256"},{"name":"tokenGasPrice","type":"uint256"},{"name":"baseGasCharge","type":"uint256"},{"name":"tokenReceiver","type":"address"}],"name":"transferAndChargeForGas","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"sandAdmin","type":"address"},{"name":"executionAdmin","type":"address"},{"name":"beneficiary","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"superOperator","type":"address"},{"indexed":false,"name":"enabled","type":"bool"}],"name":"SuperOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldAdmin","type":"address"},{"indexed":false,"name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldAdmin","type":"address"},{"indexed":false,"name":"newAdmin","type":"address"}],"name":"ExecutionAdminAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"executionOperator","type":"address"},{"indexed":false,"name":"enabled","type":"bool"}],"name":"ExecutionOperator","type":"event"}]

608060405234801561001057600080fd5b5060405162001ed638038062001ed68339818101604052606081101561003557600080fd5b5080516020820151604090920151600280546001600160a01b038085166001600160a01b0319928316179092556000805492861692909116919091179055909190610095816b09b18ab5df7180b6b80000006001600160e01b0361009d16565b505050610253565b6001600160a01b03821661011257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f43616e6e6f74206d696e7420746f203078300000000000000000000000000000604482015290519081900360640190fd5b6000811161018157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f63616e6e6f74206d696e74203020746f6b656e73000000000000000000000000604482015290519081900360640190fd5b6004548181018181116101f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6f766572666c6f77000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60048190556001600160a01b0384166000818152600560209081526040808320805488019055805187815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350505050565b611c7380620002636000396000f3fe6080604052600436106101ac5760003560e01c80636e9960c3116100ec578063b01b0ef71161008a578063dc2173f311610064578063dc2173f31461082b578063dcdf5158146108e2578063dd62ed3e14610974578063e18aa335146109af576101ac565b8063b01b0ef71461070c578063bb1e23cb14610721578063cae9ca51146107a6576101ac565b80638f283970116100c65780638f2839701461066557806395d89b41146101b1578063a9059cbb14610698578063ac9fe421146106d1576101ac565b80636e9960c3146104dc57806370a082311461050d5780637dd711c414610540576101ac565b80632b9917461161015957806342966c681161013357806342966c681461041157806361247de31461043b578063654b748a1461046e578063699c834b146104a1576101ac565b80632b99174614610360578063313ce567146103a35780633b7b5a16146103ce576101ac565b806318160ddd1161018a57806318160ddd146102bd5780631dd319cb146102e457806323b872dd1461031d576101ac565b806306fdde03146101b15780630819ba741461023b578063095ea7b314610270575b600080fd5b3480156101bd57600080fd5b506101c6610a0c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102005781810151838201526020016101e8565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024757600080fd5b5061026e6004803603602081101561025e57600080fd5b50356001600160a01b0316610a43565b005b34801561027c57600080fd5b506102a96004803603604081101561029357600080fd5b506001600160a01b038135169060200135610b0e565b604080519115158252519081900360200190f35b3480156102c957600080fd5b506102d2610b25565b60408051918252519081900360200190f35b3480156102f057600080fd5b506102a96004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b2b565b34801561032957600080fd5b506102a96004803603606081101561034057600080fd5b506001600160a01b03813581169160208101359091169060400135610b37565b34801561036c57600080fd5b506102a96004803603606081101561038357600080fd5b506001600160a01b03813581169160208101359091169060400135610c29565b3480156103af57600080fd5b506103b8610c97565b6040805160ff9092168252519081900360200190f35b3480156103da57600080fd5b506102a9600480360360608110156103f157600080fd5b506001600160a01b03813581169160208101359091169060400135610c9c565b34801561041d57600080fd5b506102a96004803603602081101561043457600080fd5b5035610d0a565b34801561044757600080fd5b506102a96004803603602081101561045e57600080fd5b50356001600160a01b0316610d1e565b34801561047a57600080fd5b506102a96004803603602081101561049157600080fd5b50356001600160a01b0316610d3c565b3480156104ad57600080fd5b5061026e600480360360408110156104c457600080fd5b506001600160a01b0381351690602001351515610d5a565b3480156104e857600080fd5b506104f1610e07565b604080516001600160a01b039092168252519081900360200190f35b34801561051957600080fd5b506102d26004803603602081101561053057600080fd5b50356001600160a01b0316610e16565b34801561054c57600080fd5b506105e2600480360360a081101561056357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460018302840111640100000000831117156105d757600080fd5b509092509050610e31565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610629578181015183820152602001610611565b50505050905090810190601f1680156106565780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561067157600080fd5b5061026e6004803603602081101561068857600080fd5b50356001600160a01b0316610ed4565b3480156106a457600080fd5b506102a9600480360360408110156106bb57600080fd5b506001600160a01b038135169060200135610fb5565b3480156106dd57600080fd5b5061026e600480360360408110156106f457600080fd5b506001600160a01b0381351690602001351515610fc2565b34801561071857600080fd5b506104f161106f565b6101c66004803603606081101561073757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561076757600080fd5b82018360208201111561077957600080fd5b8035906020019184600183028401116401000000008311171561079b57600080fd5b50909250905061107e565b6101c6600480360360608110156107bc57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156107ec57600080fd5b8201836020820111156107fe57600080fd5b8035906020019184600183028401116401000000008311171561082057600080fd5b509092509050611225565b34801561083757600080fd5b506105e2600480360361010081101561084f57600080fd5b6001600160a01b038235811692602081013582169260408201359260608301359260808101359260a08201359260c0830135169190810190610100810160e08201356401000000008111156108a357600080fd5b8201836020820111156108b557600080fd5b803590602001918460018302840111640100000000831117156108d757600080fd5b5090925090506112c4565b3480156108ee57600080fd5b506105e26004803603606081101561090557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561093557600080fd5b82018360208201111561094757600080fd5b8035906020019184600183028401116401000000008311171561096957600080fd5b509092509050611387565b34801561098057600080fd5b506102d26004803603604081101561099757600080fd5b506001600160a01b0381358116916020013516611456565b3480156109bb57600080fd5b506102a9600480360360e08110156109d257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c09091013516611481565b60408051808201909152600481527f53414e4400000000000000000000000000000000000000000000000000000000602082015290565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b815260040180806020018281038252602d815260200180611bd8602d913960400191505060405180910390fd5b600054604080516001600160a01b039283168152918316602083015280517fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa1659281900390910190a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000610b1b338484611504565b5060015b92915050565b60045490565b6000610b1b83836115d7565b6000336001600160a01b03851614801590610b6257503360009081526003602052604090205460ff16155b15610c14576001600160a01b03841660009081526006602090815260408083203384529091529020546000198114610c125782811015610be9576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320616c6c6f7765640000000000000000604482015290519081900360640190fd5b6001600160a01b0385166000908152600660209081526040808320338452909152902083820390555b505b610c1f8484846117d8565b5060019392505050565b6000336001600160a01b0385161480610c5157503360009081526003602052604090205460ff165b610c8c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0e6025913960400191505060405180910390fd5b610c1f848484611504565b601290565b6000336001600160a01b0385161480610cc457503360009081526003602052604090205460ff165b610cff5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0e6025913960400191505060405180910390fd5b610c1f84848461190c565b6000610d1633836115d7565b506001919050565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526003602052604090205460ff1690565b6000546001600160a01b03163314610da35760405162461bcd60e51b815260040180806020018281038252603a815260200180611b72603a913960400191505060405180910390fd5b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915582519384529083015280517ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a29281900390910190a15050565b6002546001600160a01b031690565b6001600160a01b031660009081526005602052604090205490565b3360009081526001602052604081205460609060ff16610e825760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b610ec58888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196792505050565b91509150965096945050505050565b6002546001600160a01b03163314610f33576040805162461bcd60e51b815260206004820152601b60248201527f6f6e6c792061646d696e2063616e206368616e67652061646d696e0000000000604482015290519081900360640190fd5b600254604080516001600160a01b039283168152918316602083015280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a1600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000610b1b3384846117d8565b6002546001600160a01b0316331461100b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611bac602c913960400191505060405180910390fd5b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915582519384529083015280517f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d89281900390910190a15050565b6000546001600160a01b031690565b60606110c183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250339250611a59915050565b611112576040805162461bcd60e51b815260206004820152601560248201527f666972737420706172616d20213d2073656e6465720000000000000000000000604482015290519081900360640190fd5b83156111235761112333868661190c565b60006060866001600160a01b0316348686604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114611185576040519150601f19603f3d011682016040523d82523d6000602084013e61118a565b606091505b509150915081819061121a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111df5781810151838201526020016111c7565b50505050905090810190601f16801561120c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509695505050505050565b606061126883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250339250611a59915050565b6112b9576040805162461bcd60e51b815260206004820152601560248201527f666972737420706172616d20213d2073656e6465720000000000000000000000604482015290519081900360640190fd5b611123338686611504565b6000606060005a3360009081526001602052604090205490915060ff1661131c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b61135f8c8c8c8c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196792505050565b90935091508715611378576113788c8a8a848b8b611a84565b50995099975050505050505050565b3360009081526001602052604081205460609060ff166113d85760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b856001600160a01b03168585856040518083838082843760405192019450600093509091505080830381838787f1925050503d8060008114611436576040519150601f19603f3d011682016040523d82523d6000602084013e61143b565b606091505b509092509050603f85045a1161144d57fe5b94509492505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000805a3360009081526001602052604090205490915060ff166114d65760405162461bcd60e51b815260040180806020018281038252603f815260200180611b33603f913960400191505060405180910390fd5b6114e18989896117d8565b84156114f5576114f5898787848888611a84565b50600198975050505050505050565b6001600160a01b0383161580159061152457506001600160a01b03821615155b611575576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420617070726f7665207769746820307830000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000811161162c576040805162461bcd60e51b815260206004820152601460248201527f63616e6e6f74206275726e203020746f6b656e73000000000000000000000000604482015290519081900360640190fd5b336001600160a01b0383161480159061165557503360009081526003602052604090205460ff16155b15611707576001600160a01b0382166000908152600660209081526040808320338452909152902054818110156116d3576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320616c6c6f7765640000000000000000604482015290519081900360640190fd5b8060001914611705576001600160a01b0383166000908152600660209081526040808320338452909152902082820390555b505b6001600160a01b03821660009081526005602052604090205481811015611775576040805162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f7567682066756e647300000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831660008181526005602090815260408083208686039055600480548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b6001600160a01b038216611833576040805162461bcd60e51b815260206004820152601260248201527f43616e6e6f742073656e6420746f203078300000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902054818110156118a1576040805162461bcd60e51b815260206004820152600f60248201527f6e6f7420656e6f7567682066756e640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380851660008181526005602090815260408083208787039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b600081118015611922575061192082610d3c565b155b15611962576001600160a01b038084166000908152600660209081526040808320938616835292905220548181101561196057611960848484611504565b505b505050565b60006060841561197c5761197c87878761190c565b856001600160a01b031684846040518082805190602001908083835b602083106119d557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611998565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611a38576040519150601f19603f3d011682016040523d82523d6000602084013e611a3d565b606091505b509092509050603f84045a11611a4f57fe5b9550959350505050565b6000604483511015611a6d57506000610b1f565b5060248201516001600160a01b0382161492915050565b60005a8403905085811115611a965750845b820184810285828281611aa557fe5b0414611af8576040805162461bcd60e51b815260206004820152600860248201527f6f766572666c6f77000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611b038884836117d8565b505050505050505056fe6d73672e73656e64657220213d206f776e6572202626202173757065724f70657261746f726f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2070657266726f6d207472616e7366657220616e64206368617267656f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f77656420746f2061646420657865637574696f6e206f70657261746f72736f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375706572206f70657261746f72736f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520657865637574696f6e41646d696e6f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2065786563757465206f6e2053414e4420626568616c66a265627a7a72305820c7a438998ba2dc88fc9df905ee2425cd3898a4efc17aeb7ccfef84f57510980864736f6c6343000509003200000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f800000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f8000000000000000000000000eaa0993e1d21c2103e4f172a20d29371fbaf6d06

Deployed Bytecode

0x6080604052600436106101ac5760003560e01c80636e9960c3116100ec578063b01b0ef71161008a578063dc2173f311610064578063dc2173f31461082b578063dcdf5158146108e2578063dd62ed3e14610974578063e18aa335146109af576101ac565b8063b01b0ef71461070c578063bb1e23cb14610721578063cae9ca51146107a6576101ac565b80638f283970116100c65780638f2839701461066557806395d89b41146101b1578063a9059cbb14610698578063ac9fe421146106d1576101ac565b80636e9960c3146104dc57806370a082311461050d5780637dd711c414610540576101ac565b80632b9917461161015957806342966c681161013357806342966c681461041157806361247de31461043b578063654b748a1461046e578063699c834b146104a1576101ac565b80632b99174614610360578063313ce567146103a35780633b7b5a16146103ce576101ac565b806318160ddd1161018a57806318160ddd146102bd5780631dd319cb146102e457806323b872dd1461031d576101ac565b806306fdde03146101b15780630819ba741461023b578063095ea7b314610270575b600080fd5b3480156101bd57600080fd5b506101c6610a0c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102005781810151838201526020016101e8565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024757600080fd5b5061026e6004803603602081101561025e57600080fd5b50356001600160a01b0316610a43565b005b34801561027c57600080fd5b506102a96004803603604081101561029357600080fd5b506001600160a01b038135169060200135610b0e565b604080519115158252519081900360200190f35b3480156102c957600080fd5b506102d2610b25565b60408051918252519081900360200190f35b3480156102f057600080fd5b506102a96004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b2b565b34801561032957600080fd5b506102a96004803603606081101561034057600080fd5b506001600160a01b03813581169160208101359091169060400135610b37565b34801561036c57600080fd5b506102a96004803603606081101561038357600080fd5b506001600160a01b03813581169160208101359091169060400135610c29565b3480156103af57600080fd5b506103b8610c97565b6040805160ff9092168252519081900360200190f35b3480156103da57600080fd5b506102a9600480360360608110156103f157600080fd5b506001600160a01b03813581169160208101359091169060400135610c9c565b34801561041d57600080fd5b506102a96004803603602081101561043457600080fd5b5035610d0a565b34801561044757600080fd5b506102a96004803603602081101561045e57600080fd5b50356001600160a01b0316610d1e565b34801561047a57600080fd5b506102a96004803603602081101561049157600080fd5b50356001600160a01b0316610d3c565b3480156104ad57600080fd5b5061026e600480360360408110156104c457600080fd5b506001600160a01b0381351690602001351515610d5a565b3480156104e857600080fd5b506104f1610e07565b604080516001600160a01b039092168252519081900360200190f35b34801561051957600080fd5b506102d26004803603602081101561053057600080fd5b50356001600160a01b0316610e16565b34801561054c57600080fd5b506105e2600480360360a081101561056357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460018302840111640100000000831117156105d757600080fd5b509092509050610e31565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610629578181015183820152602001610611565b50505050905090810190601f1680156106565780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561067157600080fd5b5061026e6004803603602081101561068857600080fd5b50356001600160a01b0316610ed4565b3480156106a457600080fd5b506102a9600480360360408110156106bb57600080fd5b506001600160a01b038135169060200135610fb5565b3480156106dd57600080fd5b5061026e600480360360408110156106f457600080fd5b506001600160a01b0381351690602001351515610fc2565b34801561071857600080fd5b506104f161106f565b6101c66004803603606081101561073757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561076757600080fd5b82018360208201111561077957600080fd5b8035906020019184600183028401116401000000008311171561079b57600080fd5b50909250905061107e565b6101c6600480360360608110156107bc57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156107ec57600080fd5b8201836020820111156107fe57600080fd5b8035906020019184600183028401116401000000008311171561082057600080fd5b509092509050611225565b34801561083757600080fd5b506105e2600480360361010081101561084f57600080fd5b6001600160a01b038235811692602081013582169260408201359260608301359260808101359260a08201359260c0830135169190810190610100810160e08201356401000000008111156108a357600080fd5b8201836020820111156108b557600080fd5b803590602001918460018302840111640100000000831117156108d757600080fd5b5090925090506112c4565b3480156108ee57600080fd5b506105e26004803603606081101561090557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561093557600080fd5b82018360208201111561094757600080fd5b8035906020019184600183028401116401000000008311171561096957600080fd5b509092509050611387565b34801561098057600080fd5b506102d26004803603604081101561099757600080fd5b506001600160a01b0381358116916020013516611456565b3480156109bb57600080fd5b506102a9600480360360e08110156109d257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c09091013516611481565b60408051808201909152600481527f53414e4400000000000000000000000000000000000000000000000000000000602082015290565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b815260040180806020018281038252602d815260200180611bd8602d913960400191505060405180910390fd5b600054604080516001600160a01b039283168152918316602083015280517fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa1659281900390910190a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000610b1b338484611504565b5060015b92915050565b60045490565b6000610b1b83836115d7565b6000336001600160a01b03851614801590610b6257503360009081526003602052604090205460ff16155b15610c14576001600160a01b03841660009081526006602090815260408083203384529091529020546000198114610c125782811015610be9576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320616c6c6f7765640000000000000000604482015290519081900360640190fd5b6001600160a01b0385166000908152600660209081526040808320338452909152902083820390555b505b610c1f8484846117d8565b5060019392505050565b6000336001600160a01b0385161480610c5157503360009081526003602052604090205460ff165b610c8c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0e6025913960400191505060405180910390fd5b610c1f848484611504565b601290565b6000336001600160a01b0385161480610cc457503360009081526003602052604090205460ff165b610cff5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0e6025913960400191505060405180910390fd5b610c1f84848461190c565b6000610d1633836115d7565b506001919050565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526003602052604090205460ff1690565b6000546001600160a01b03163314610da35760405162461bcd60e51b815260040180806020018281038252603a815260200180611b72603a913960400191505060405180910390fd5b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915582519384529083015280517ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a29281900390910190a15050565b6002546001600160a01b031690565b6001600160a01b031660009081526005602052604090205490565b3360009081526001602052604081205460609060ff16610e825760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b610ec58888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196792505050565b91509150965096945050505050565b6002546001600160a01b03163314610f33576040805162461bcd60e51b815260206004820152601b60248201527f6f6e6c792061646d696e2063616e206368616e67652061646d696e0000000000604482015290519081900360640190fd5b600254604080516001600160a01b039283168152918316602083015280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a1600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000610b1b3384846117d8565b6002546001600160a01b0316331461100b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611bac602c913960400191505060405180910390fd5b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915582519384529083015280517f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d89281900390910190a15050565b6000546001600160a01b031690565b60606110c183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250339250611a59915050565b611112576040805162461bcd60e51b815260206004820152601560248201527f666972737420706172616d20213d2073656e6465720000000000000000000000604482015290519081900360640190fd5b83156111235761112333868661190c565b60006060866001600160a01b0316348686604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114611185576040519150601f19603f3d011682016040523d82523d6000602084013e61118a565b606091505b509150915081819061121a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111df5781810151838201526020016111c7565b50505050905090810190601f16801561120c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509695505050505050565b606061126883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250339250611a59915050565b6112b9576040805162461bcd60e51b815260206004820152601560248201527f666972737420706172616d20213d2073656e6465720000000000000000000000604482015290519081900360640190fd5b611123338686611504565b6000606060005a3360009081526001602052604090205490915060ff1661131c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b61135f8c8c8c8c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196792505050565b90935091508715611378576113788c8a8a848b8b611a84565b50995099975050505050505050565b3360009081526001602052604081205460609060ff166113d85760405162461bcd60e51b815260040180806020018281038252603a815260200180611c05603a913960400191505060405180910390fd5b856001600160a01b03168585856040518083838082843760405192019450600093509091505080830381838787f1925050503d8060008114611436576040519150601f19603f3d011682016040523d82523d6000602084013e61143b565b606091505b509092509050603f85045a1161144d57fe5b94509492505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000805a3360009081526001602052604090205490915060ff166114d65760405162461bcd60e51b815260040180806020018281038252603f815260200180611b33603f913960400191505060405180910390fd5b6114e18989896117d8565b84156114f5576114f5898787848888611a84565b50600198975050505050505050565b6001600160a01b0383161580159061152457506001600160a01b03821615155b611575576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420617070726f7665207769746820307830000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000811161162c576040805162461bcd60e51b815260206004820152601460248201527f63616e6e6f74206275726e203020746f6b656e73000000000000000000000000604482015290519081900360640190fd5b336001600160a01b0383161480159061165557503360009081526003602052604090205460ff16155b15611707576001600160a01b0382166000908152600660209081526040808320338452909152902054818110156116d3576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320616c6c6f7765640000000000000000604482015290519081900360640190fd5b8060001914611705576001600160a01b0383166000908152600660209081526040808320338452909152902082820390555b505b6001600160a01b03821660009081526005602052604090205481811015611775576040805162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f7567682066756e647300000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831660008181526005602090815260408083208686039055600480548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b6001600160a01b038216611833576040805162461bcd60e51b815260206004820152601260248201527f43616e6e6f742073656e6420746f203078300000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902054818110156118a1576040805162461bcd60e51b815260206004820152600f60248201527f6e6f7420656e6f7567682066756e640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380851660008181526005602090815260408083208787039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b600081118015611922575061192082610d3c565b155b15611962576001600160a01b038084166000908152600660209081526040808320938616835292905220548181101561196057611960848484611504565b505b505050565b60006060841561197c5761197c87878761190c565b856001600160a01b031684846040518082805190602001908083835b602083106119d557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611998565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611a38576040519150601f19603f3d011682016040523d82523d6000602084013e611a3d565b606091505b509092509050603f84045a11611a4f57fe5b9550959350505050565b6000604483511015611a6d57506000610b1f565b5060248201516001600160a01b0382161492915050565b60005a8403905085811115611a965750845b820184810285828281611aa557fe5b0414611af8576040805162461bcd60e51b815260206004820152600860248201527f6f766572666c6f77000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611b038884836117d8565b505050505050505056fe6d73672e73656e64657220213d206f776e6572202626202173757065724f70657261746f726f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2070657266726f6d207472616e7366657220616e64206368617267656f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f77656420746f2061646420657865637574696f6e206f70657261746f72736f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375706572206f70657261746f72736f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520657865637574696f6e41646d696e6f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2065786563757465206f6e2053414e4420626568616c66a265627a7a72305820c7a438998ba2dc88fc9df905ee2425cd3898a4efc17aeb7ccfef84f57510980864736f6c63430005090032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f800000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f8000000000000000000000000eaa0993e1d21c2103e4f172a20d29371fbaf6d06

-----Decoded View---------------
Arg [0] : sandAdmin (address): 0x18dd4e0eb8699eA4FeE238dE41ECfb95e32272f8
Arg [1] : executionAdmin (address): 0x18dd4e0eb8699eA4FeE238dE41ECfb95e32272f8
Arg [2] : beneficiary (address): 0xEAA0993E1d21c2103e4f172a20D29371FbAF6D06

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f8
Arg [1] : 00000000000000000000000018dd4e0eb8699ea4fee238de41ecfb95e32272f8
Arg [2] : 000000000000000000000000eaa0993e1d21c2103e4f172a20d29371fbaf6d06


Deployed Bytecode Sourcemap

170:662:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;569:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;569:82:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;569:82:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:265:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:265:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;633:265:7;-1:-1:-1;;;;;633:265:7;;:::i;:::-;;3598:178:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3598:178:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3598:178:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;510:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:89:5;;;:::i;:::-;;;;;;;;;;;;;;;;3251:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3251:130:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3251:130:5;;;;;;;;:::i;2141:670::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2141:670:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2141:670:5;;;;;;;;;;;;;;;;;:::i;4060:335::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4060:335:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4060:335:5;;;;;;;;;;;;;;;;;:::i;1404:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:81:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4401:367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4401:367:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4401:367:5;;;;;;;;;;;;;;;;;:::i;2940:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2940:117:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:117:5;;:::i;1822::7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1822:117:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1822:117:7;-1:-1:-1;;;;;1822:117:7;;:::i;970:109:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;970:109:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;970:109:1;-1:-1:-1;;;;;970:109:1;;:::i;1281:349:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1281:349:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1281:349:7;;;;;;;;;;:::i;264:82:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:82:0;;;:::i;:::-;;;;-1:-1:-1;;;;;264:82:0;;;;;;;;;;;;;;753:104:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;753:104:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;753:104:5;-1:-1:-1;;;;;753:104:5;;:::i;3307:429:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3307:429:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;3307:429:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3307:429:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3307:429:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3307:429:7;;-1:-1:-1;3307:429:7;-1:-1:-1;3307:429:7;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3307:429:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;469:197:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;469:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;469:197:0;-1:-1:-1;;;;;469:197:0;;:::i;1695:167:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1695:167:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1695:167:5;;;;;;;;:::i;484:302:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:302:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;484:302:1;;;;;;;;;;:::i;401:100:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:100:7;;;:::i;1325:599:6:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1325:599:6;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1325:599:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1325:599:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1325:599:6;;-1:-1:-1;1325:599:6;-1:-1:-1;1325:599:6;:::i;422:554::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;422:554:6;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;422:554:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;422:554:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;422:554:6;;-1:-1:-1;422:554:6;-1:-1:-1;422:554:6;:::i;4715:730:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4715:730:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4715:730:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4715:730:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4715:730:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;4715:730:7;;-1:-1:-1;4715:730:7;-1:-1:-1;4715:730:7;:::i;2304:436::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2304:436:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2304:436:7;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2304:436:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2304:436:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2304:436:7;;-1:-1:-1;2304:436:7;-1:-1:-1;2304:436:7;:::i;1125:170:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1125:170:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1125:170:5;;;;;;;;;;:::i;6136:607:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6136:607:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6136:607:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;569:82:4:-;631:13;;;;;;;;;;;;;;;;;569:82;:::o;633:265:7:-;722:15;;-1:-1:-1;;;;;722:15:7;708:10;:29;700:87;;;;-1:-1:-1;;;700:87:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:15;;802:53;;;-1:-1:-1;;;;;829:15:7;;;802:53;;;;;;;;;;;;;;;;;;;;;865:15;:26;;;;-1:-1:-1;;;;;865:26:7;;;;;;;;;;633:265::o;3598:178:5:-;3680:12;3708:40;3720:10;3732:7;3741:6;3708:11;:40::i;:::-;-1:-1:-1;3765:4:5;3598:178;;;;;:::o;510:89::-;580:12;;510:89;:::o;3251:130::-;3317:4;3333:20;3339:5;3346:6;3333:5;:20::i;2141:670::-;2237:12;2269:10;-1:-1:-1;;;;;2269:18:5;;;;;;:50;;-1:-1:-1;2308:10:5;2292:27;;;;:15;:27;;;;;;;;2291:28;2269:50;2265:482;;;-1:-1:-1;;;;;2362:17:5;;2335:24;2362:17;;;:11;:17;;;;;;;;2380:10;2362:29;;;;;;;;-1:-1:-1;;2409:32:5;;2405:332;;2612:6;2592:16;:26;;2584:63;;;;;-1:-1:-1;;;2584:63:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2665:17:5;;;;;;:11;:17;;;;;;;;2683:10;2665:29;;;;;;;2697:25;;;2665:57;;2405:332;2265:482;;2756:27;2766:4;2772:2;2776:6;2756:9;:27::i;:::-;-1:-1:-1;2800:4:5;2141:670;;;;;:::o;4060:335::-;4160:12;4209:10;-1:-1:-1;;;;;4209:19:5;;;;:50;;-1:-1:-1;4248:10:5;4232:27;;;;:15;:27;;;;;;;;4209:50;4188:134;;;;-1:-1:-1;;;4188:134:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4332:35;4344:5;4351:7;4360:6;4332:11;:35::i;1404:81::-;1475:2;1404:81;:::o;4401:367::-;4517:12;4566:10;-1:-1:-1;;;;;4566:19:5;;;;:50;;-1:-1:-1;4605:10:5;4589:27;;;;:15;:27;;;;;;;;4566:50;4545:134;;;;-1:-1:-1;;;4545:134:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:51;4711:5;4718:7;4727:12;4689:21;:51::i;2940:117::-;2988:4;3004:25;3010:10;3022:6;3004:5;:25::i;:::-;-1:-1:-1;3046:4:5;2940:117;;;:::o;1822::7:-;-1:-1:-1;;;;;1908:24:7;1885:4;1908:24;;;:19;:24;;;;;;;;;1822:117::o;970:109:1:-;-1:-1:-1;;;;;1052:20:1;1029:4;1052:20;;;:15;:20;;;;;;;;;970:109::o;1281:349:7:-;1406:15;;-1:-1:-1;;;;;1406:15:7;1392:10;:29;1371:134;;;;-1:-1:-1;;;1371:134:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1515:38:7;;;;;;:19;:38;;;;;;;;;:48;;-1:-1:-1;;1515:48:7;;;;;;;;;;1578:45;;;;;;;;;;;;;;;;;;;;;1281:349;;:::o;264:82:0:-;333:6;;-1:-1:-1;;;;;333:6:0;264:82;:::o;753:104:5:-;-1:-1:-1;;;;;834:16:5;808:7;834:16;;;:9;:16;;;;;;;753:104::o;3307:429:7:-;3571:10;3494:12;3551:31;;;:19;:31;;;;;;3508:23;;3551:31;;3543:102;;;;-1:-1:-1;;;3543:102:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3662:67;3696:4;3702:2;3706:6;3714:8;3724:4;;3662:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3662:33:7;;-1:-1:-1;;;3662:67:7:i;:::-;3655:74;;;;3307:429;;;;;;;;;:::o;469:197:0:-;549:6;;-1:-1:-1;;;;;549:6:0;535:10;:20;527:60;;;;;-1:-1:-1;;;527:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;615:6;;602:30;;;-1:-1:-1;;;;;615:6:0;;;602:30;;;;;;;;;;;;;;;;;;;;;642:6;:17;;;;-1:-1:-1;;;;;642:17:0;;;;;;;;;;469:197::o;1695:167:5:-;1773:12;1801:33;1811:10;1823:2;1827:6;1801:9;:33::i;484:302:1:-;601:6;;-1:-1:-1;;;;;601:6:1;587:10;:20;566:111;;;;-1:-1:-1;;;566:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;687:30:1;;;;;;:15;:30;;;;;;;;;:40;;-1:-1:-1;;687:40:1;;;;;;;;;;742:37;;;;;;;;;;;;;;;;;;;;;484:302;;:::o;401:100:7:-;453:7;479:15;-1:-1:-1;;;;;479:15:7;401:100;:::o;1325:599:6:-;1452:12;1497:53;1533:4;;1497:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1539:10:6;;-1:-1:-1;1497:35:6;;-1:-1:-1;;1497:53:6:i;:::-;1476:121;;;;;-1:-1:-1;;;1476:121:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1612:10;;1608:90;;1638:49;1660:10;1672:6;1680;1638:21;:49::i;:::-;1768:12;1782:23;1809:6;-1:-1:-1;;;;;1809:11:6;1827:9;1838:4;;1809:34;;;;;30:3:-1;22:6;14;1:33;1809:34:6;;45:16:-1;;;-1:-1;1809:34:6;;-1:-1:-1;1809:34:6;;-1:-1:-1;;1809:34:6;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1767:76:6;;;;1861:7;1877:10;1853:36;;;;;-1:-1:-1;;;1853:36:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1853:36:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1907:10:6;1325:599;-1:-1:-1;;;;;;1325:599:6:o;422:554::-;555:12;600:53;636:4;;600:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;642:10:6;;-1:-1:-1;600:35:6;;-1:-1:-1;;600:53:6:i;:::-;579:121;;;;;-1:-1:-1;;;579:121:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:39;723:10;735:6;743;711:11;:39::i;4715:730:7:-;5009:12;5023:23;5058:18;5079:9;5126:10;5106:31;;;;:19;:31;;;;;;5058:30;;-1:-1:-1;5106:31:7;;5098:102;;;;-1:-1:-1;;;5098:102:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5234:67;5268:4;5274:2;5278:6;5286:8;5296:4;;5234:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5234:33:7;;-1:-1:-1;;;5234:67:7:i;:::-;5210:91;;-1:-1:-1;5210:91:7;-1:-1:-1;5315:17:7;;5311:128;;5348:80;5356:4;5362:8;5372:13;5387:10;5399:13;5414;5348:7;:80::i;:::-;4715:730;;;;;;;;;;;;;:::o;2304:436::-;2482:10;2405:12;2462:31;;;:19;:31;;;;;;2419:23;;2462:31;;2454:102;;;;-1:-1:-1;;;2454:102:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2590:2;-1:-1:-1;;;;;2590:7:7;2602:8;2612:4;;2590:27;;;;;30:3:-1;22:6;14;1:33;2590:27:7;;45:16:-1;;;-1:-1;2590:27:7;;-1:-1:-1;2590:27:7;;-1:-1:-1;;2590:27:7;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2566:51:7;;-1:-1:-1;2566:51:7;-1:-1:-1;2657:2:7;2646:8;:13;2634:9;:25;2627:33;;;;2304:436;;;;;;;:::o;1125:170:5:-;-1:-1:-1;;;;;1261:18:5;;;1221:17;1261:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1125:170::o;6136:607:7:-;6378:4;6394:18;6415:9;6462:10;6442:31;;;;:19;:31;;;;;;6394:30;;-1:-1:-1;6442:31:7;;6434:107;;;;-1:-1:-1;;;6434:107:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6551:27;6561:4;6567:2;6571:6;6551:9;:27::i;:::-;6592:17;;6588:128;;6625:80;6633:4;6639:8;6649:13;6664:10;6676:13;6691;6625:7;:80::i;:::-;-1:-1:-1;6732:4:7;;6136:607;-1:-1:-1;;;;;;;;6136:607:7:o;5154:314:5:-;-1:-1:-1;;;;;5275:19:5;;;;;;:44;;-1:-1:-1;;;;;;5298:21:5;;;;5275:44;5254:114;;;;;-1:-1:-1;;;5254:114:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5378:18:5;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5429:32;;;;;;;;;;;;;;;;;5154:314;;;:::o;6324:893::-;6405:1;6396:6;:10;6388:43;;;;;-1:-1:-1;;;6388:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;6445:10;-1:-1:-1;;;;;6445:18:5;;;;;;:50;;-1:-1:-1;6484:10:5;6468:27;;;;:15;:27;;;;;;;;6467:28;6445:50;6441:524;;;-1:-1:-1;;;;;6538:17:5;;6511:24;6538:17;;;:11;:17;;;;;;;;6556:10;6538:29;;;;;;;;6606:26;;;;6581:109;;;;;-1:-1:-1;;;6581:109:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;6708:16;-1:-1:-1;;6708:32:5;6704:251;;-1:-1:-1;;;;;6883:17:5;;;;;;:11;:17;;;;;;;;6901:10;6883:29;;;;;;;6915:25;;;6883:57;;6704:251;6441:524;;-1:-1:-1;;;;;7000:15:5;;6975:22;7000:15;;;:9;:15;;;;;;7033:24;;;;7025:53;;;;;-1:-1:-1;;;7025:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7088:15:5;;;;;;:9;:15;;;;;;;;7106:23;;;7088:41;;7139:12;:22;;;;;;;7176:34;;;;;;;7088:15;;;7176:34;;;;;;;;;;;6324:893;;;:::o;5474:371::-;-1:-1:-1;;;;;5562:16:5;;5554:47;;;;;-1:-1:-1;;;5554:47:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5636:15:5;;5611:22;5636:15;;;:9;:15;;;;;;5669:24;;;;5661:52;;;;;-1:-1:-1;;;5661:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5723:15:5;;;;;;;:9;:15;;;;;;;;5741:23;;;5723:41;;5774:13;;;;;;;;;;:23;;;;;;5812:26;;;;;;;5774:13;;5812:26;;;;;;;;;;;5474:371;;;;:::o;4774:374::-;4908:1;4893:12;:16;:45;;;;;4914:24;4930:7;4914:15;:24::i;:::-;4913:25;4893:45;4890:252;;;-1:-1:-1;;;;;4981:18:5;;;4954:24;4981:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;5025:31;;;5022:110;;;5076:41;5088:5;5095:7;5104:12;5076:11;:41::i;:::-;4890:252;;4774:374;;;:::o;7320:499:7:-;7506:12;7520:23;7560:10;;7556:80;;7586:39;7608:4;7614:2;7618:6;7586:21;:39::i;:::-;7669:2;-1:-1:-1;;;;;7669:7:7;7681:8;7691:4;7669:27;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7669:27:7;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;7645:51:7;;-1:-1:-1;7645:51:7;-1:-1:-1;7736:2:7;7725:8;:13;7713:9;:25;7706:33;;;;7320:499;;;;;;;;:::o;1504:348:3:-;1623:4;1662:7;1647:4;:11;:23;1643:66;;;-1:-1:-1;1693:5:3;1686:12;;1643:66;-1:-1:-1;1789:2:3;1779:13;;1773:20;-1:-1:-1;;;;;1828:17:3;;1819:26;1504:348;;;;:::o;6749:565:7:-;6960:17;6993:9;6980:10;:22;6960:42;;7027:8;7015:9;:20;7012:70;;;-1:-1:-1;7063:8:7;7012:70;7091:26;;7152:25;;;7164:13;7091:26;7152:25;7091:26;7195;;;;;:43;7187:64;;;;;-1:-1:-1;;;7187:64:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;7261:46;7271:4;7277:13;7292:14;7261:9;:46::i;:::-;6749:565;;;;;;;;:::o

Swarm Source

bzzr://c7a438998ba2dc88fc9df905ee2425cd3898a4efc17aeb7ccfef84f575109808
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.