Overview
ETH Balance
0.164434309756385225 ETH
Eth Value
$310.54 (@ $1,888.56/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 850 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stop | 9596368 | 1836 days ago | IN | 0 ETH | 0.00011761 | ||||
Stop | 9596220 | 1836 days ago | IN | 0 ETH | 0.00018639 | ||||
Kill | 9303700 | 1881 days ago | IN | 0 ETH | 0.00021072 | ||||
Stop | 9303678 | 1881 days ago | IN | 0 ETH | 0.0002117 | ||||
Withdraw Funds | 9303665 | 1881 days ago | IN | 0 ETH | 0.00021492 | ||||
Kill | 9302812 | 1881 days ago | IN | 0 ETH | 0.00023414 | ||||
Transfer | 9302810 | 1881 days ago | IN | 0 ETH | 0.00002194 | ||||
Withdraw Funds | 9302804 | 1881 days ago | IN | 0 ETH | 0.00002556 | ||||
Withdraw Funds | 9297842 | 1882 days ago | IN | 0 ETH | 0.00003835 | ||||
Withdraw Funds | 9297768 | 1882 days ago | IN | 0 ETH | 0.0001534 | ||||
Withdraw Funds | 9297768 | 1882 days ago | IN | 0 ETH | 0.00003835 | ||||
Kill | 9297704 | 1882 days ago | IN | 0 ETH | 0.00016389 | ||||
Withdraw Funds | 9297697 | 1882 days ago | IN | 0 ETH | 0.00002556 | ||||
Withdraw Funds | 9297686 | 1882 days ago | IN | 0 ETH | 0.0001534 | ||||
Withdraw Funds | 9297680 | 1882 days ago | IN | 0 ETH | 0.00008268 | ||||
Withdraw Funds | 9297663 | 1882 days ago | IN | 0 ETH | 0.00013924 | ||||
Withdraw Funds | 9297658 | 1882 days ago | IN | 0 ETH | 0.0001534 | ||||
Kill | 9297646 | 1882 days ago | IN | 0 ETH | 0.00011662 | ||||
Kill | 9297501 | 1882 days ago | IN | 0 ETH | 0.00008194 | ||||
Stop | 9297447 | 1882 days ago | IN | 0 ETH | 0.00011761 | ||||
Kill | 9277678 | 1885 days ago | IN | 0 ETH | 0.00002341 | ||||
Withdraw Funds | 8942890 | 1944 days ago | IN | 0 ETH | 0.00004559 | ||||
Stop | 8942690 | 1944 days ago | IN | 0 ETH | 0.00003717 | ||||
Kill | 8942672 | 1944 days ago | IN | 0 ETH | 0.00022422 | ||||
Kill | 8942672 | 1944 days ago | IN | 0 ETH | 0.00004484 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 9297663 | 1882 days ago | 0.009 ETH | ||||
- | 8942619 | 1944 days ago | 0.09 ETH | ||||
- | 8937676 | 1945 days ago | 0.2 ETH | ||||
- | 8937669 | 1945 days ago | 0.1 ETH | ||||
- | 8937039 | 1945 days ago | 0 ETH | ||||
- | 8937010 | 1945 days ago | 0 ETH | ||||
- | 8936982 | 1945 days ago | 1 wei | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.04 ETH | ||||
- | 8932052 | 1946 days ago | 0.21 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.22 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8932052 | 1946 days ago | 0.01 ETH | ||||
- | 8895685 | 1952 days ago | 1 ETH | ||||
- | 8875779 | 1955 days ago | 0.0194 ETH | ||||
- | 8875774 | 1955 days ago | 0.0194 ETH | ||||
- | 8851070 | 1959 days ago | 0.01293333 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x27356720...a025BAc00 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
FckDice
Compiler Version
v0.5.4+commit.9549d8ff
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-26 */ pragma solidity ^0.5.0; contract FckDice { /// *** Constants section // Each bet is deducted 0.1% by default in favour of the house, but no less than some minimum. // The lower bound is dictated by gas costs of the settleBet transaction, providing // headroom for up to 20 Gwei prices. uint public constant HOUSE_EDGE_OF_TEN_THOUSAND = 100; uint public constant HOUSE_EDGE_MINIMUM_AMOUNT = 0.0003 ether; // Bets lower than this amount do not participate in jackpot rolls (and are // not deducted JACKPOT_FEE). uint public constant MIN_JACKPOT_BET = 0.1 ether; // Chance to win jackpot (currently 0.1%) and fee deducted into jackpot fund. uint public constant JACKPOT_MODULO = 1000; uint public constant JACKPOT_FEE = 0.001 ether; // There is minimum and maximum bets. uint constant MIN_BET = 0.01 ether; uint constant MAX_AMOUNT = 300000 ether; // Modulo is a number of equiprobable outcomes in a game: // - 2 for coin flip // - 6 for dice // - 6 * 6 = 36 for double dice // - 6 * 6 * 6 = 216 for triple dice // - 37 for rouletter // - 4, 13, 26, 52 for poker // - 100 for etheroll // etc. // It's called so because 256-bit entropy is treated like a huge integer and // the remainder of its division by modulo is considered bet outcome. uint constant MAX_MODULO = 216; // For modulos below this threshold rolls are checked against a bit mask, // thus allowing betting on any combination of outcomes. For example, given // modulo 6 for dice, 101000 mask (base-2, big endian) means betting on // 4 and 6; for games with modulos higher than threshold (Etheroll), a simple // limit is used, allowing betting on any outcome in [0, N) range. // // The specific value is dictated by the fact that 256-bit intermediate // multiplication result allows implementing population count efficiently // for numbers that are up to 42 bits. uint constant MAX_MASK_MODULO = 216; // This is a check on bet mask overflow. uint constant MAX_BET_MASK = 2 ** MAX_MASK_MODULO; // EVM BLOCKHASH opcode can query no further than 256 blocks into the // past. Given that settleBet uses block hash of placeBet as one of // complementary entropy sources, we cannot process bets older than this // threshold. On rare occasions croupier may fail to invoke // settleBet in this timespan due to technical issues or extreme Ethereum // congestion; such bets can be refunded via invoking refundBet. uint constant BET_EXPIRATION_BLOCKS = 250; // Standard contract ownership transfer. address payable public owner1; address payable public owner2; address payable public withdrawer; // Adjustable max bet profit. Used to cap bets against dynamic odds. uint128 public maxProfit; bool public stopped; // The address corresponding to a private key used to sign placeBet commits. address public secretSigner; // Accumulated jackpot fund. uint128 public jackpotSize; // Funds that are locked in potentially winning bets. Prevents contract from // committing to bets it cannot pay out. uint128 public lockedInBets; // A structure representing a single bet. struct Bet { // Wager amount in wei. uint80 amount;//10 // Modulo of a game. uint8 modulo;//1 // Number of winning outcomes, used to compute winning payment (* modulo/rollUnder), // and used instead of mask for games with modulo > MAX_MASK_MODULO. uint8 rollUnder;//1 // Address of a gambler, used to pay out winning bets. address payable gambler;//20 // Block number of placeBet tx. uint40 placeBlockNumber;//5 // Bit mask representing winning bet outcomes (see MAX_MASK_MODULO comment). uint216 mask;//27 } // Mapping from commits to all currently active & processed bets. mapping(uint => Bet) bets; // Croupier account. address public croupier; // Events that are issued to make statistic recovery easier. event FailedPayment(address indexed beneficiary, uint amount, uint commit); event Payment(address indexed beneficiary, uint amount, uint commit); event JackpotPayment(address indexed beneficiary, uint amount, uint commit); // This event is emitted in placeBet to record commit in the logs. event Commit(uint commit, uint source); // Constructor. constructor (address payable _owner1, address payable _owner2, address payable _withdrawer, address _secretSigner, address _croupier, uint128 _maxProfit ) public payable { owner1 = _owner1; owner2 = _owner2; withdrawer = _withdrawer; secretSigner = _secretSigner; croupier = _croupier; require(_maxProfit < MAX_AMOUNT, "maxProfit should be a sane number."); maxProfit = _maxProfit; stopped = false; } // Standard modifier on methods invokable only by contract owner. modifier onlyOwner { require(msg.sender == owner1 || msg.sender == owner2, "OnlyOwner methods called by non-owner."); _; } // Standard modifier on methods invokable only by contract owner. modifier onlyCroupier { require(msg.sender == croupier, "OnlyCroupier methods called by non-croupier."); _; } modifier onlyWithdrawer { require(msg.sender == owner1 || msg.sender == owner2 || msg.sender == withdrawer, "onlyWithdrawer methods called by non-withdrawer."); _; } // Fallback function deliberately left empty. It's primary use case // is to top up the bank roll. function() external payable { if (msg.sender == withdrawer) { withdrawFunds(withdrawer, msg.value * 100 + msg.value); } } function setOwner1(address payable o) external onlyOwner { require(o != address(0)); require(o != owner1); require(o != owner2); owner1 = o; } function setOwner2(address payable o) external onlyOwner { require(o != address(0)); require(o != owner1); require(o != owner2); owner2 = o; } function setWithdrawer(address payable o) external onlyOwner { require(o != address(0)); require(o != withdrawer); withdrawer = o; } // See comment for "secretSigner" variable. function setSecretSigner(address newSecretSigner) external onlyOwner { secretSigner = newSecretSigner; } // Change the croupier address. function setCroupier(address newCroupier) external onlyOwner { croupier = newCroupier; } // Change max bet reward. Setting this to zero effectively disables betting. function setMaxProfit(uint128 _maxProfit) public onlyOwner { require(_maxProfit < MAX_AMOUNT, "maxProfit should be a sane number."); maxProfit = _maxProfit; } // This function is used to bump up the jackpot fund. Cannot be used to lower it. function increaseJackpot(uint increaseAmount) external onlyOwner { require(increaseAmount <= address(this).balance, "Increase amount larger than balance."); require(jackpotSize + lockedInBets + increaseAmount <= address(this).balance, "Not enough funds."); jackpotSize += uint128(increaseAmount); } // Funds withdrawal to cover costs of croupier operation. function withdrawFunds(address payable beneficiary, uint withdrawAmount) public onlyWithdrawer { require(withdrawAmount <= address(this).balance, "Withdraw amount larger than balance."); require(jackpotSize + lockedInBets + withdrawAmount <= address(this).balance, "Not enough funds."); sendFunds(beneficiary, withdrawAmount, withdrawAmount, 0); } // Contract may be destroyed only when there are no ongoing bets, // either settled or refunded. All funds are transferred to contract owner. function stop(bool destruct) external onlyOwner { require(lockedInBets == 0, "All bets should be processed (settled or refunded) before self-destruct."); if (destruct){ selfdestruct(owner1); }else{ stopped = true; owner1.transfer(address(this).balance); } } function kill() external onlyOwner { require(lockedInBets == 0, "All bets should be processed (settled or refunded) before self-destruct."); stopped = true; jackpotSize = 0; owner1.transfer(address(this).balance); } function getBetInfoByReveal(uint reveal) external view returns (bytes32 commit, uint amount, uint8 modulo, uint8 rollUnder, uint placeBlockNumber, uint mask, address gambler) { commit = keccak256(abi.encodePacked(reveal)); (amount, modulo, rollUnder, placeBlockNumber, mask, gambler) = getBetInfo(uint(commit)); } function getBetInfo(uint commit) public view returns (uint amount, uint8 modulo, uint8 rollUnder, uint placeBlockNumber, uint mask, address gambler) { Bet storage bet = bets[commit]; amount = bet.amount; modulo = bet.modulo; rollUnder = bet.rollUnder; placeBlockNumber = bet.placeBlockNumber; mask = bet.mask; gambler = bet.gambler; } /// *** Betting logic // Bet states: // amount == 0 && gambler == 0 - 'clean' (can place a bet) // amount != 0 && gambler != 0 - 'active' (can be settled or refunded) // amount == 0 && gambler != 0 - 'processed' (can clean storage) // // NOTE: Storage cleaning is not implemented in this contract version; it will be added // with the next upgrade to prevent polluting Ethereum state with expired bets. // Bet placing transaction - issued by the player. // betMask - bet outcomes bit mask for modulo <= MAX_MASK_MODULO, // [0, betMask) for larger modulos. // modulo - game modulo. // commitLastBlock - number of the maximum block where "commit" is still considered valid. // commit - Keccak256 hash of some secret "reveal" random number, to be supplied // by the croupier bot in the settleBet transaction. Supplying // "commit" ensures that "reveal" cannot be changed behind the scenes // after placeBet have been mined. // r, s - components of ECDSA signature of (commitLastBlock, commit). v is // guaranteed to always equal 27. // // Commit, being essentially random 256-bit number, is used as a unique bet identifier in // the 'bets' mapping. // // Commits are signed with a block limit to ensure that they are used at most once - otherwise // it would be possible for a miner to place a bet with a known commit/reveal pair and tamper // with the blockhash. Croupier guarantees that commitLastBlock will always be not greater than // placeBet block number plus BET_EXPIRATION_BLOCKS. See whitepaper for details. function placeBet(uint betMask, uint modulo, uint commitLastBlock, uint commit, bytes32 r, bytes32 s, uint source) external payable { require(!stopped, "contract killed"); // Check that the bet is in 'clean' state. Bet storage bet = bets[commit]; require(msg.sender != address(0) && bet.gambler == address(0), "Bet should be in a 'clean' state."); // Validate input data ranges. require(modulo >= 2 && modulo <= MAX_MODULO, "Modulo should be within range."); require(msg.value >= MIN_BET && msg.value <= MAX_AMOUNT, "Amount should be within range."); require(betMask > 0 && betMask < MAX_BET_MASK, "Mask should be within range."); // Check that commit is valid - it has not expired and its signature is valid. require(block.number <= commitLastBlock, "Commit has expired."); bytes32 signatureHash = keccak256(abi.encodePacked(commitLastBlock, commit)); require(secretSigner == ecrecover(signatureHash, 27, r, s), "ECDSA signature is not valid."); uint rollUnder; uint mask; if (modulo <= MASK_MODULO_40) { // Small modulo games specify bet outcomes via bit mask. // rollUnder is a number of 1 bits in this mask (population count). // This magic looking formula is an efficient way to compute population // count on EVM for numbers below 2**40. rollUnder = ((betMask * POPCNT_MULT) & POPCNT_MASK) % POPCNT_MODULO; mask = betMask; } else if (modulo <= MASK_MODULO_40 * 2) { rollUnder = getRollUnder(betMask, 2); mask = betMask; } else if (modulo == 100) { require(betMask > 0 && betMask <= modulo, "High modulo range, betMask larger than modulo."); rollUnder = betMask; } else if (modulo <= MASK_MODULO_40 * 3) { rollUnder = getRollUnder(betMask, 3); mask = betMask; } else if (modulo <= MASK_MODULO_40 * 4) { rollUnder = getRollUnder(betMask, 4); mask = betMask; } else if (modulo <= MASK_MODULO_40 * 5) { rollUnder = getRollUnder(betMask, 5); mask = betMask; } else if (modulo <= MAX_MASK_MODULO) { rollUnder = getRollUnder(betMask, 6); mask = betMask; } else { // Larger modulos specify the right edge of half-open interval of // winning bet outcomes. require(betMask > 0 && betMask <= modulo, "High modulo range, betMask larger than modulo."); rollUnder = betMask; } // Winning amount and jackpot increase. uint possibleWinAmount; uint jackpotFee; // emit DebugUint("rollUnder", rollUnder); (possibleWinAmount, jackpotFee) = getDiceWinAmount(msg.value, modulo, rollUnder); // Enforce max profit limit. require(possibleWinAmount <= msg.value + maxProfit, "maxProfit limit violation."); // Lock funds. lockedInBets += uint128(possibleWinAmount); jackpotSize += uint128(jackpotFee); // Check whether contract has enough funds to process this bet. require(jackpotSize + lockedInBets <= address(this).balance, "Cannot afford to lose this bet."); // Record commit in logs. emit Commit(commit, source); // Store bet parameters on blockchain. bet.amount = uint80(msg.value); bet.modulo = uint8(modulo); bet.rollUnder = uint8(rollUnder); bet.placeBlockNumber = uint40(block.number); bet.mask = uint216(mask); bet.gambler = msg.sender; // emit DebugUint("placeBet-placeBlockNumber", bet.placeBlockNumber); } function getRollUnder(uint betMask, uint n) private pure returns (uint rollUnder) { rollUnder += (((betMask & MASK40) * POPCNT_MULT) & POPCNT_MASK) % POPCNT_MODULO; for (uint i = 1; i < n; i++) { betMask = betMask >> MASK_MODULO_40; rollUnder += (((betMask & MASK40) * POPCNT_MULT) & POPCNT_MASK) % POPCNT_MODULO; } return rollUnder; } // This is the method used to settle 99% of bets. To process a bet with a specific // "commit", settleBet should supply a "reveal" number that would Keccak256-hash to // "commit". "blockHash" is the block hash of placeBet block as seen by croupier; it // is additionally asserted to prevent changing the bet outcomes on Ethereum reorgs. function settleBet(uint reveal, bytes32 blockHash) external onlyCroupier { uint commit = uint(keccak256(abi.encodePacked(reveal))); Bet storage bet = bets[commit]; uint placeBlockNumber = bet.placeBlockNumber; // Check that bet has not expired yet (see comment to BET_EXPIRATION_BLOCKS). require(block.number > placeBlockNumber, "settleBet in the same block as placeBet, or before."); require(block.number <= placeBlockNumber + BET_EXPIRATION_BLOCKS, "Blockhash can't be queried by EVM."); require(blockhash(placeBlockNumber) == blockHash, "blockHash invalid"); // Settle bet using reveal and blockHash as entropy sources. settleBetCommon(bet, reveal, blockHash, commit); } // Common settlement code for settleBet. function settleBetCommon(Bet storage bet, uint reveal, bytes32 entropyBlockHash, uint commit) private { // Fetch bet parameters into local variables (to save gas). uint amount = bet.amount; uint modulo = bet.modulo; uint rollUnder = bet.rollUnder; address payable gambler = bet.gambler; // Check that bet is in 'active' state. require(amount != 0, "Bet should be in an 'active' state"); // Move bet into 'processed' state already. bet.amount = 0; // The RNG - combine "reveal" and blockhash of placeBet using Keccak256. Miners // are not aware of "reveal" and cannot deduce it from "commit" (as Keccak256 // preimage is intractable), and house is unable to alter the "reveal" after // placeBet have been mined (as Keccak256 collision finding is also intractable). bytes32 entropy = keccak256(abi.encodePacked(reveal, entropyBlockHash)); // emit DebugBytes32("entropy", entropy); // Do a roll by taking a modulo of entropy. Compute winning amount. uint dice = uint(entropy) % modulo; uint diceWinAmount; uint _jackpotFee; (diceWinAmount, _jackpotFee) = getDiceWinAmount(amount, modulo, rollUnder); uint diceWin = 0; uint jackpotWin = 0; // Determine dice outcome. if ((modulo != 100) && (modulo <= MAX_MASK_MODULO)) { // For small modulo games, check the outcome against a bit mask. if ((2 ** dice) & bet.mask != 0) { diceWin = diceWinAmount; } } else { // For larger modulos, check inclusion into half-open interval. if (dice < rollUnder) { diceWin = diceWinAmount; } } // Unlock the bet amount, regardless of the outcome. lockedInBets -= uint128(diceWinAmount); // Roll for a jackpot (if eligible). if (amount >= MIN_JACKPOT_BET) { // The second modulo, statistically independent from the "main" dice roll. // Effectively you are playing two games at once! uint jackpotRng = (uint(entropy) / modulo) % JACKPOT_MODULO; // Bingo! if (jackpotRng == 0) { jackpotWin = jackpotSize; jackpotSize = 0; } } // Log jackpot win. if (jackpotWin > 0) { emit JackpotPayment(gambler, jackpotWin, commit); } // Send the funds to gambler. sendFunds(gambler, diceWin + jackpotWin == 0 ? 1 wei : diceWin + jackpotWin, diceWin, commit); } // Refund transaction - return the bet amount of a roll that was not processed in a // due timeframe. Processing such blocks is not possible due to EVM limitations (see // BET_EXPIRATION_BLOCKS comment above for details). In case you ever find yourself // in a situation like this, just contact us, however nothing // precludes you from invoking this method yourself. function refundBet(uint commit) external { // Check that bet is in 'active' state. Bet storage bet = bets[commit]; uint amount = bet.amount; require(amount != 0, "Bet should be in an 'active' state"); // Check that bet has already expired. require(block.number > bet.placeBlockNumber + BET_EXPIRATION_BLOCKS, "Blockhash can't be queried by EVM."); // Move bet into 'processed' state, release funds. bet.amount = 0; uint diceWinAmount; uint jackpotFee; (diceWinAmount, jackpotFee) = getDiceWinAmount(amount, bet.modulo, bet.rollUnder); lockedInBets -= uint128(diceWinAmount); if (jackpotSize >= jackpotFee) { jackpotSize -= uint128(jackpotFee); } // Send the refund. sendFunds(bet.gambler, amount, amount, commit); } // Get the expected win amount after house edge is subtracted. function getDiceWinAmount(uint amount, uint modulo, uint rollUnder) private pure returns (uint winAmount, uint jackpotFee) { require(0 < rollUnder && rollUnder <= modulo, "Win probability out of range."); jackpotFee = amount >= MIN_JACKPOT_BET ? JACKPOT_FEE : 0; uint houseEdge = amount * HOUSE_EDGE_OF_TEN_THOUSAND / 10000; if (houseEdge < HOUSE_EDGE_MINIMUM_AMOUNT) { houseEdge = HOUSE_EDGE_MINIMUM_AMOUNT; } require(houseEdge + jackpotFee <= amount, "Bet doesn't even cover house edge."); winAmount = (amount - houseEdge - jackpotFee) * modulo / rollUnder; } // Helper routine to process the payment. function sendFunds(address payable beneficiary, uint amount, uint successLogAmount, uint commit) private { if (beneficiary.send(amount)) { emit Payment(beneficiary, successLogAmount, commit); } else { emit FailedPayment(beneficiary, amount, commit); } } // This are some constants making O(1) population count in placeBet possible. // See whitepaper for intuition and proofs behind it. uint constant POPCNT_MULT = 0x0000000000002000000000100000000008000000000400000000020000000001; uint constant POPCNT_MASK = 0x0001041041041041041041041041041041041041041041041041041041041041; uint constant POPCNT_MODULO = 0x3F; uint constant MASK40 = 0xFFFFFFFFFF; uint constant MASK_MODULO_40 = 40; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"JACKPOT_MODULO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"reveal","type":"uint256"}],"name":"getBetInfoByReveal","outputs":[{"name":"commit","type":"bytes32"},{"name":"amount","type":"uint256"},{"name":"modulo","type":"uint8"},{"name":"rollUnder","type":"uint8"},{"name":"placeBlockNumber","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"gambler","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_JACKPOT_BET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"o","type":"address"}],"name":"setWithdrawer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"o","type":"address"}],"name":"setOwner1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"betMask","type":"uint256"},{"name":"modulo","type":"uint256"},{"name":"commitLastBlock","type":"uint256"},{"name":"commit","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"source","type":"uint256"}],"name":"placeBet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secretSigner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HOUSE_EDGE_OF_TEN_THOUSAND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotSize","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"o","type":"address"}],"name":"setOwner2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_maxProfit","type":"uint128"}],"name":"setMaxProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"croupier","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"commit","type":"uint256"}],"name":"getBetInfo","outputs":[{"name":"amount","type":"uint256"},{"name":"modulo","type":"uint8"},{"name":"rollUnder","type":"uint8"},{"name":"placeBlockNumber","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"gambler","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxProfit","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HOUSE_EDGE_MINIMUM_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"JACKPOT_FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"withdrawAmount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destruct","type":"bool"}],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"reveal","type":"uint256"},{"name":"blockHash","type":"bytes32"}],"name":"settleBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"increaseAmount","type":"uint256"}],"name":"increaseJackpot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSecretSigner","type":"address"}],"name":"setSecretSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedInBets","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"commit","type":"uint256"}],"name":"refundBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCroupier","type":"address"}],"name":"setCroupier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner1","type":"address"},{"name":"_owner2","type":"address"},{"name":"_withdrawer","type":"address"},{"name":"_secretSigner","type":"address"},{"name":"_croupier","type":"address"},{"name":"_maxProfit","type":"uint128"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"commit","type":"uint256"}],"name":"FailedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"commit","type":"uint256"}],"name":"Payment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"commit","type":"uint256"}],"name":"JackpotPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"commit","type":"uint256"},{"indexed":false,"name":"source","type":"uint256"}],"name":"Commit","type":"event"}]
Deployed Bytecode
0x6080604052600436106101df576000357c0100000000000000000000000000000000000000000000000000000000900480637368891411610114578063c15a483f116100b2578063d702087f11610081578063d702087f1461063b578063df88126f1461066e578063e1fdb4b414610683578063f8bb201c146106ad576101df565b8063c15a483f146105a0578063ca722cdc146105cc578063cdc18424146105fc578063d6d30a5114610611576101df565b8063b539cd55116100ee578063b539cd5514610528578063bcce60401461053d578063bf020f6114610552578063c107532914610567576101df565b8063736889141461047f57806375f12b211461049457806379141f80146104bd576101df565b80634d61537f1161018157806357246d231161015b57806357246d23146103d35780635825884f146104045780635f7bb7f1146104375780636b5c5f391461046a576101df565b80634d61537f1461037857806352709725146103a9578063537af6c4146103be576101df565b80630d174c24116101bd5780630d174c24146102bc5780631b580620146102ef578063403a0a781461032257806341c0e1b514610363576101df565b806301f602171461020f57806307220134146102365780630cf9349d146102a7575b600254600160a060020a031633141561020d5760025461020d90600160a060020a03163460648102016106e0565b005b34801561021b57600080fd5b50610224610825565b60408051918252519081900360200190f35b34801561024257600080fd5b506102606004803603602081101561025957600080fd5b503561082b565b60408051978852602088019690965260ff94851687870152929093166060860152608085015260a0840191909152600160a060020a031660c0830152519081900360e00190f35b3480156102b357600080fd5b50610224610871565b3480156102c857600080fd5b5061020d600480360360208110156102df57600080fd5b5035600160a060020a031661087d565b3480156102fb57600080fd5b5061020d6004803603602081101561031257600080fd5b5035600160a060020a031661093f565b61020d600480360360e081101561033857600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c00135610a1c565b34801561036f57600080fd5b5061020d611147565b34801561038457600080fd5b5061038d611273565b60408051600160a060020a039092168252519081900360200190f35b3480156103b557600080fd5b5061038d611282565b3480156103ca57600080fd5b50610224611291565b3480156103df57600080fd5b506103e8611296565b604080516001608060020a039092168252519081900360200190f35b34801561041057600080fd5b5061020d6004803603602081101561042757600080fd5b5035600160a060020a03166112a5565b34801561044357600080fd5b5061020d6004803603602081101561045a57600080fd5b50356001608060020a0316611382565b34801561047657600080fd5b5061038d611464565b34801561048b57600080fd5b5061038d611473565b3480156104a057600080fd5b506104a9611482565b604080519115158252519081900360200190f35b3480156104c957600080fd5b506104e7600480360360208110156104e057600080fd5b5035611492565b6040805196875260ff9586166020880152939094168584015260608501919091526080840152600160a060020a0390911660a0830152519081900360c00190f35b34801561053457600080fd5b506103e861152a565b34801561054957600080fd5b50610224611539565b34801561055e57600080fd5b50610224611544565b34801561057357600080fd5b5061020d6004803603604081101561058a57600080fd5b50600160a060020a0381351690602001356106e0565b3480156105ac57600080fd5b5061020d600480360360208110156105c357600080fd5b5035151561154f565b3480156105d857600080fd5b5061020d600480360360408110156105ef57600080fd5b5080359060200135611673565b34801561060857600080fd5b5061038d6117ec565b34801561061d57600080fd5b5061020d6004803603602081101561063457600080fd5b50356117fb565b34801561064757600080fd5b5061020d6004803603602081101561065e57600080fd5b5035600160a060020a031661194a565b34801561067a57600080fd5b506103e86119dc565b34801561068f57600080fd5b5061020d600480360360208110156106a657600080fd5b50356119f2565b3480156106b957600080fd5b5061020d600480360360208110156106d057600080fd5b5035600160a060020a0316611b6a565b600054600160a060020a03163314806107035750600154600160a060020a031633145b806107185750600254600160a060020a031633145b15156107585760405160e560020a62461bcd02815260040180806020018281038252603081526020018061221d6030913960400191505060405180910390fd5b303181111561079b5760405160e560020a62461bcd0281526004018080602001828103825260248152602001806122736024913960400191505060405180910390fd5b60055430316001608060020a03808316608060020a90930481169290920190911682011115610814576040805160e560020a62461bcd02815260206004820152601160248201527f4e6f7420656e6f7567682066756e64732e000000000000000000000000000000604482015290519081900360640190fd5b6108218282836000611bfc565b5050565b6103e881565b60408051602080820184905282518083038201815291830190925280519101206000808080808061085b87611492565b9b9d949c50929a91995097509095509350915050565b67016345785d8a000081565b600054600160a060020a03163314806108a05750600154600160a060020a031633145b15156108e05760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b600160a060020a03811615156108f557600080fd5b600254600160a060020a038281169116141561091057600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314806109625750600154600160a060020a031633145b15156109a25760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b600160a060020a03811615156109b757600080fd5b600054600160a060020a03828116911614156109d257600080fd5b600154600160a060020a03828116911614156109ed57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354608060020a900460ff1615610a7e576040805160e560020a62461bcd02815260206004820152600f60248201527f636f6e7472616374206b696c6c65640000000000000000000000000000000000604482015290519081900360640190fd5b60008481526006602052604090203315801590610ab3575080546c010000000000000000000000009004600160a060020a0316155b1515610af35760405160e560020a62461bcd0281526004018080602001828103825260218152602001806121316021913960400191505060405180910390fd5b60028710158015610b05575060d88711155b1515610b5b576040805160e560020a62461bcd02815260206004820152601e60248201527f4d6f64756c6f2073686f756c642062652077697468696e2072616e67652e0000604482015290519081900360640190fd5b662386f26fc100003410158015610b7c5750693f870857a3e0e38000003411155b1515610bd2576040805160e560020a62461bcd02815260206004820152601e60248201527f416d6f756e742073686f756c642062652077697468696e2072616e67652e0000604482015290519081900360640190fd5b600088118015610bfd57507b0100000000000000000000000000000000000000000000000000000088105b1515610c53576040805160e560020a62461bcd02815260206004820152601c60248201527f4d61736b2073686f756c642062652077697468696e2072616e67652e00000000604482015290519081900360640190fd5b43861015610cab576040805160e560020a62461bcd02815260206004820152601360248201527f436f6d6d69742068617320657870697265642e00000000000000000000000000604482015290519081900360640190fd5b60408051602080820189905281830188905282518083038401815260608301808552815191830191909120600090915260808301808552819052601b60a084015260c0830188905260e0830187905292516001926101008082019392601f1981019281900390910190855afa158015610d28573d6000803e3d6000fd5b5050604051601f190151600454600160a060020a039081169116149050610d99576040805160e560020a62461bcd02815260206004820152601d60248201527f4543445341207369676e6174757265206973206e6f742076616c69642e000000604482015290519081900360640190fd5b60008060288a11610ded575050603f7e010410410410410410410410410410410410410410410410410410410410417920000000001000000000080000000004000000000200000000018b02160689610f0b565b60508a11610e0a57610e008b6002611cb8565b91508a9050610f0b565b8960641415610e6b5760008b118015610e235750898b11155b1515610e635760405160e560020a62461bcd02815260040180806020018281038252602e815260200180612297602e913960400191505060405180910390fd5b8a9150610f0b565b60788a11610e7e57610e008b6003611cb8565b60a08a11610e9157610e008b6004611cb8565b60c88a11610ea457610e008b6005611cb8565b60d88a11610eb757610e008b6006611cb8565b60008b118015610ec75750898b11155b1515610f075760405160e560020a62461bcd02815260040180806020018281038252602e815260200180612297602e913960400191505060405180910390fd5b8a91505b600080610f19348d86611d72565b60035491935091506001608060020a03163401821115610f83576040805160e560020a62461bcd02815260206004820152601a60248201527f6d617850726f666974206c696d69742076696f6c6174696f6e2e000000000000604482015290519081900360640190fd5b600580546001608060020a03608060020a808304821686018216810292821692909217808216850182166fffffffffffffffffffffffffffffffff1991909116179283905530318382169290930481169190910116111561102e576040805160e560020a62461bcd02815260206004820152601f60248201527f43616e6e6f74206166666f726420746f206c6f73652074686973206265742e00604482015290519081900360640190fd5b604080518b81526020810189905281517facafc53544c2ca5cd4dbfda9282c25a35859f0d4ceb77a8275dca1660b1ed3ad929181900390910190a15050835460018501805464ffffffffff19164364ffffffffff9081169190911716650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff94909416939093029290921790915569ffffffffffffffffffff19163469ffffffffffffffffffff16176aff0000000000000000000019166a010000000000000000000060ff9a8b1602176bff000000000000000000000019166b0100000000000000000000009190991602979097176bffffffffffffffffffffffff16336c010000000000000000000000000217905550505050505050565b600054600160a060020a031633148061116a5750600154600160a060020a031633145b15156111aa5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b600554608060020a90046001608060020a0316156111fc5760405160e560020a62461bcd0281526004018080602001828103825260488152602001806121d56048913960600191505060405180910390fd5b6003805470ff000000000000000000000000000000001916608060020a179055600580546fffffffffffffffffffffffffffffffff1916905560008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015611270573d6000803e3d6000fd5b50565b600454600160a060020a031681565b600154600160a060020a031681565b606481565b6005546001608060020a031681565b600054600160a060020a03163314806112c85750600154600160a060020a031633145b15156113085760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b600160a060020a038116151561131d57600080fd5b600054600160a060020a038281169116141561133857600080fd5b600154600160a060020a038281169116141561135357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314806113a55750600154600160a060020a031633145b15156113e55760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b693f870857a3e0e38000006001608060020a038216106114395760405160e560020a62461bcd0281526004018080602001828103825260228152602001806120cb6022913960400191505060405180910390fd5b600380546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055565b600754600160a060020a031681565b600054600160a060020a031681565b600354608060020a900460ff1681565b6000908152600660205260409020805460019091015469ffffffffffffffffffff8216926a0100000000000000000000830460ff908116936b01000000000000000000000081049091169264ffffffffff811692650100000000009091047affffffffffffffffffffffffffffffffffffffffffffffffffffff16916c010000000000000000000000009004600160a060020a031690565b6003546001608060020a031681565b660110d9316ec00081565b66038d7ea4c6800081565b600054600160a060020a03163314806115725750600154600160a060020a031633145b15156115b25760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b600554608060020a90046001608060020a0316156116045760405160e560020a62461bcd0281526004018080602001828103825260488152602001806121d56048913960600191505060405180910390fd5b801561161857600054600160a060020a0316ff5b6003805470ff000000000000000000000000000000001916608060020a17905560008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610821573d6000803e3d6000fd5b600754600160a060020a031633146116bf5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612185602c913960400191505060405180910390fd5b604080516020808201859052825180830382018152918301835281519181019190912060008181526006909252919020600181015464ffffffffff1643811061173c5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806121526033913960400191505060405180910390fd5b60fa81014311156117815760405160e560020a62461bcd0281526004018080602001828103825260228152602001806122c56022913960400191505060405180910390fd5b804084146117d9576040805160e560020a62461bcd02815260206004820152601160248201527f626c6f636b4861736820696e76616c6964000000000000000000000000000000604482015290519081900360640190fd5b6117e582868686611e7f565b5050505050565b600254600160a060020a031681565b600054600160a060020a031633148061181e5750600154600160a060020a031633145b151561185e5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b30318111156118a15760405160e560020a62461bcd0281526004018080602001828103825260248152602001806121b16024913960400191505060405180910390fd5b60055430316001608060020a03808316608060020a9093048116929092019091168201111561191a576040805160e560020a62461bcd02815260206004820152601160248201527f4e6f7420656e6f7567682066756e64732e000000000000000000000000000000604482015290519081900360640190fd5b600580546fffffffffffffffffffffffffffffffff1981166001608060020a039182169390930116919091179055565b600054600160a060020a031633148061196d5750600154600160a060020a031633145b15156119ad5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600554608060020a90046001608060020a031681565b6000818152600660205260409020805469ffffffffffffffffffff16801515611a4f5760405160e560020a62461bcd02815260040180806020018281038252602281526020018061210f6022913960400191505060405180910390fd5b600182015464ffffffffff1660fa014311611a9e5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806122c56022913960400191505060405180910390fd5b815469ffffffffffffffffffff19168083556000908190611ae390849060ff6a010000000000000000000082048116916b010000000000000000000000900416611d72565b600580546001608060020a03608060020a80830482168690038216029181169190911791829055929450909250168111611b4357600580546001608060020a03808216849003166fffffffffffffffffffffffffffffffff199091161790555b83546117e5906c010000000000000000000000009004600160a060020a0316848088611bfc565b600054600160a060020a0316331480611b8d5750600154600160a060020a031633145b1515611bcd5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061224d6026913960400191505060405180910390fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604051600160a060020a0385169084156108fc029085906000818181858888f1935050505015611c6e5760408051838152602081018390528151600160a060020a038716927f9643c1b5b172b26d5f028be7fe646349bd5e3cd9367bb18f9e825afa828b7d93928290030190a2611cb2565b60408051848152602081018390528151600160a060020a038716927f0272d3e6608bc3ec0a0f28404d8d5ccf282a8e65df305ee6dfac9cec38a3a745928290030190a25b50505050565b603f7e0104104104104104104104104104104104104104104104104104104104104179200000000010000000000800000000040000000002000000000164ffffffffff851602160660015b82811015611d6b576501000000000090930492603f64ffffffffff8516792000000000100000000008000000000400000000020000000001027e0104104104104104104104104104104104104104104104104104104104104116069190910190600101611d03565b5092915050565b600080826000108015611d855750838311155b1515611ddb576040805160e560020a62461bcd02815260206004820152601d60248201527f57696e2070726f626162696c697479206f7574206f662072616e67652e000000604482015290519081900360640190fd5b67016345785d8a0000851015611df2576000611dfb565b66038d7ea4c680005b90506127106064860204660110d9316ec000811015611e1e5750660110d9316ec0005b808201861015611e625760405160e560020a62461bcd0281526004018080602001828103825260228152602001806120ed6022913960400191505060405180910390fd5b8385838389030302811515611e7357fe5b04925050935093915050565b835469ffffffffffffffffffff81169060ff6a010000000000000000000082048116916b010000000000000000000000810490911690600160a060020a036c0100000000000000000000000090910416831515611f105760405160e560020a62461bcd02815260040180806020018281038252602281526020018061210f6022913960400191505060405180910390fd5b875469ffffffffffffffffffff191688556040805160208082018a90528183018990528251808303840181526060909201909252805191012060008482811515611f5657fe5b069050600080611f67888888611d72565b909250905060008060648914801590611f81575060d88911155b15611fc65760018e0154600286900a65010000000000909104167affffffffffffffffffffffffffffffffffffffffffffffffffffff1615611fc1578391505b611fd2565b87851015611fd2578391505b600580546001608060020a03608060020a8083048216889003821602911617905567016345785d8a00008a1061204f5760006103e88a8881151561201257fe5b0481151561201c57fe5b06905080151561204d57600580546fffffffffffffffffffffffffffffffff1981169091556001608060020a031691505b505b600081111561209c5760408051828152602081018d90528151600160a060020a038a16927f16ea4dcfd06c1efb1dd2edf3c766c9a9b9c1d73cbd8ddf4359bd396171229950928290030190a25b6120ba87838301156120b0578284016120b3565b60015b848e611bfc565b505050505050505050505050505056fe6d617850726f6669742073686f756c6420626520612073616e65206e756d6265722e42657420646f65736e2774206576656e20636f76657220686f75736520656467652e4265742073686f756c6420626520696e20616e2027616374697665272073746174654265742073686f756c6420626520696e20612027636c65616e272073746174652e736574746c6542657420696e207468652073616d6520626c6f636b20617320706c6163654265742c206f72206265666f72652e4f6e6c7943726f7570696572206d6574686f64732063616c6c6564206279206e6f6e2d63726f75706965722e496e63726561736520616d6f756e74206c6172676572207468616e2062616c616e63652e416c6c20626574732073686f756c642062652070726f6365737365642028736574746c6564206f7220726566756e64656429206265666f72652073656c662d64657374727563742e6f6e6c7957697468647261776572206d6574686f64732063616c6c6564206279206e6f6e2d776974686472617765722e4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d6f776e65722e576974686472617720616d6f756e74206c6172676572207468616e2062616c616e63652e48696768206d6f64756c6f2072616e67652c206265744d61736b206c6172676572207468616e206d6f64756c6f2e426c6f636b686173682063616e277420626520717565726965642062792045564d2ea165627a7a72305820c0d0159f58d5d292f7dae9dafa5e85a25aa411634d3cf837e9b469e14b3523070029
Deployed Bytecode Sourcemap
27:22322:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;5887:111;;;5946:10;;5932:54;;-1:-1:-1;;;;;5946:10:0;5976:9;5970:3;5958:15;;:27;5932:13;:54::i;:::-;27:22322;702:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;702:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;8796:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8796:336:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8796:336:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8796:336:0;;;;;;;;;;;;;;562:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:48:0;;;:::i;6395:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6395:164:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6395:164:0;-1:-1:-1;;;;;6395:164:0;;:::i;6013:183::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6013:183:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6013:183:0;-1:-1:-1;;;;;6013:183:0;;:::i;11352:3831::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;11352:3831:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8532:256::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8532:256:0;;;:::i;3045:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3045:27:0;;;:::i;:::-;;;;-1:-1:-1;;;;;3045:27:0;;;;;;;;;;;;;;2752:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2752:29:0;;;:::i;316:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:53:0;;;:::i;3115:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3115:26:0;;;:::i;:::-;;;;-1:-1:-1;;;;;3115:26:0;;;;;;;;;;;;;;6204:183;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6204:183:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6204:183:0;-1:-1:-1;;;;;6204:183:0;;:::i;6971:181::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6971:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6971:181:0;-1:-1:-1;;;;;6971:181:0;;:::i;4130:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4130:23:0;;;:::i;2716:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2716:29:0;;;:::i;2935:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2935:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;9140:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9140:402:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9140:402:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9140:402:0;;;;;;;;;;;;;;;;2904:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2904:24:0;;;:::i;376:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;376:61:0;;;:::i;751:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;751:46:0;;;:::i;7648:379::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7648:379:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7648:379:0;;;;;;;;:::i;8187:337::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8187:337:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8187:337:0;;;;:::i;15958:765::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15958:765:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15958:765:0;;;;;;;:::i;2788:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:33:0;;;:::i;7247:330::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7247:330:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7247:330:0;;:::i;6616:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6616:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6616:118:0;-1:-1:-1;;;;;6616:118:0;;:::i;3278:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3278:27:0;;;:::i;19894:889::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19894:889:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19894:889:0;;:::i;6779:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6779:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6779:102:0;-1:-1:-1;;;;;6779:102:0;;:::i;7648:379::-;5600:6;;-1:-1:-1;;;;;5600:6:0;5586:10;:20;;:44;;-1:-1:-1;5624:6:0;;-1:-1:-1;;;;;5624:6:0;5610:10;:20;5586:44;:72;;;-1:-1:-1;5648:10:0;;-1:-1:-1;;;;;5648:10:0;5634;:24;5586:72;5578:133;;;;;;-1:-1:-1;;;;;5578:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7788:4;7780:21;7762:39;;;7754:88;;;;-1:-1:-1;;;;;7754:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7875:12;;7916:4;7908:21;-1:-1:-1;;;;;7861:11:0;;;-1:-1:-1;;;7875:12:0;;;;;7861:26;;;;:43;;;;;:68;;7853:98;;;;;-1:-1:-1;;;;;7853:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7962:57;7972:11;7985:14;8001;8017:1;7962:9;:57::i;:::-;7648:379;;:::o;702:42::-;740:4;702:42;:::o;8796:336::-;9001:24;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;9001:24:0;;;;;;8991:35;;;;;8860:14;;;;;;9100:24;8991:35;9100:10;:24::i;:::-;8796:336;;9037:87;;-1:-1:-1;9037:87:0;;;;-1:-1:-1;9037:87:0;-1:-1:-1;9037:87:0;;-1:-1:-1;9037:87:0;-1:-1:-1;8796:336:0;-1:-1:-1;;8796:336:0:o;562:48::-;601:9;562:48;:::o;6395:164::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6475:15:0;;;;6467:24;;;;;;6515:10;;-1:-1:-1;;;;;6510:15:0;;;6515:10;;6510:15;;6502:24;;;;;;6537:10;:14;;-1:-1:-1;;6537:14:0;-1:-1:-1;;;;;6537:14:0;;;;;;;;;;6395:164::o;6013:183::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6089:15:0;;;;6081:24;;;;;;6129:6;;-1:-1:-1;;;;;6124:11:0;;;6129:6;;6124:11;;6116:20;;;;;;6160:6;;-1:-1:-1;;;;;6155:11:0;;;6160:6;;6155:11;;6147:20;;;;;;6178:6;:10;;-1:-1:-1;;6178:10:0;-1:-1:-1;;;;;6178:10:0;;;;;;;;;;6013:183::o;11352:3831::-;11504:7;;-1:-1:-1;;;11504:7:0;;;;11503:8;11495:36;;;;;-1:-1:-1;;;;;11495:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11594:15;11612:12;;;:4;:12;;;;;11643:10;:24;;;;:53;;-1:-1:-1;11671:11:0;;;;;-1:-1:-1;;;;;11671:11:0;:25;11643:53;11635:99;;;;;;-1:-1:-1;;;;;11635:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11805:1;11795:6;:11;;:35;;;;;1420:3;11810:6;:20;;11795:35;11787:78;;;;;;;-1:-1:-1;;;;;11787:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:10;11884:9;:20;;:47;;;;;917:12;11908:9;:23;;11884:47;11876:90;;;;;;;-1:-1:-1;;;;;11876:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11995:1;11985:7;:11;:37;;;;-1:-1:-1;2151:20:0;12000:22;;11985:37;11977:78;;;;;;;-1:-1:-1;;;;;11977:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12164:12;:31;-1:-1:-1;12164:31:0;12156:63;;;;;-1:-1:-1;;;;;12156:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12264:41;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;12264:41:0;;;;;;12254:52;;;;;;;;;12230:21;12341:34;;;;;;;;;;;;12366:2;12341:34;;;;;;;;;;;;;;;;;;;;;;;;;12264:41;-1:-1:-1;;12341:34:0;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12341:34:0;;-1:-1:-1;;12341:34:0;;12325:12;;-1:-1:-1;;;;;12325:12:0;;;:50;;;;-1:-1:-1;12317:92:0;;;;;-1:-1:-1;;;;;12317:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12422:14;;22343:2;12473:24;;12469:1552;;-1:-1:-1;;22259:4:0;22156:66;22055;12818:21;;12817:37;12816:55;12818:21;12469:1552;;;12932:18;12922:28;;12918:1103;;12979:24;12992:7;13001:1;12979:12;:24::i;:::-;12967:36;;13025:7;13018:14;;12918:1103;;;13054:6;13064:3;13054:13;13050:971;;;13102:1;13092:7;:11;:32;;;;;13118:6;13107:7;:17;;13092:32;13084:91;;;;;;-1:-1:-1;;;;;13084:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13202:7;13190:19;;13050:971;;;13241:18;13231:28;;13227:794;;13288:24;13301:7;13310:1;13288:12;:24::i;13227:794::-;13373:18;13363:28;;13359:662;;13420:24;13433:7;13442:1;13420:12;:24::i;13359:662::-;13505:18;13495:28;;13491:530;;13552:24;13565:7;13574:1;13552:12;:24::i;13491:530::-;2064:3;13627:25;;13623:398;;13681:24;13694:7;13703:1;13681:12;:24::i;13623:398::-;13902:1;13892:7;:11;:32;;;;;13918:6;13907:7;:17;;13892:32;13884:91;;;;;;-1:-1:-1;;;;;13884:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14002:7;13990:19;;13623:398;14082:22;14115:15;14236:46;14253:9;14264:6;14272:9;14236:16;:46::i;:::-;14374:9;;14202:80;;-1:-1:-1;14202:80:0;-1:-1:-1;;;;;;14374:9:0;14362;:21;14341:42;;;14333:81;;;;;-1:-1:-1;;;;;14333:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14451:12;:42;;-1:-1:-1;;;;;;;;14451:42:0;;;;;;;;;;;;;;;;;;14504:34;;;;;;;-1:-1:-1;;14504:34:0;;;;;;;;;14670:4;14662:21;14632:11;;;14646:12;;;;;;14632:26;;;;:51;;;14624:95;;;;;-1:-1:-1;;;;;14624:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14772:22;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14855:30:0;;;14976:20;;:43;;-1:-1:-1;;14976:43:0;15006:12;14976:43;;;;;;;;15030:24;;;;;;;;;;;;;;;;;;-1:-1:-1;;14855:30:0;14875:9;14855:30;;;-1:-1:-1;;14896:26:0;;;;;;;;-1:-1:-1;;14933:32:0;;;;;;;;;;;15065:24;;15079:10;15065:24;;;;;-1:-1:-1;;;;;;;11352:3831:0:o;8532:256::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8586:12;;-1:-1:-1;;;8586:12:0;;-1:-1:-1;;;;;8586:12:0;:17;8578:102;;;;-1:-1:-1;;;;;8578:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8691:7;:14;;-1:-1:-1;;8691:14:0;-1:-1:-1;;;8691:14:0;;;8716:11;:15;;-1:-1:-1;;8716:15:0;;;8691:14;8742:6;;:38;;-1:-1:-1;;;;;8742:6:0;;;;8766:4;8758:21;8742:38;;;;;8758:21;;8742:38;8691:14;8742:38;8758:21;8742:6;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8742:38:0;8532:256::o;3045:27::-;;;-1:-1:-1;;;;;3045:27:0;;:::o;2752:29::-;;;-1:-1:-1;;;;;2752:29:0;;:::o;316:53::-;366:3;316:53;:::o;3115:26::-;;;-1:-1:-1;;;;;3115:26:0;;:::o;6204:183::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6280:15:0;;;;6272:24;;;;;;6320:6;;-1:-1:-1;;;;;6315:11:0;;;6320:6;;6315:11;;6307:20;;;;;;6351:6;;-1:-1:-1;;;;;6346:11:0;;;6351:6;;6346:11;;6338:20;;;;;;6369:6;:10;;-1:-1:-1;;6369:10:0;-1:-1:-1;;;;;6369:10:0;;;;;;;;;;6204:183::o;6971:181::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;917:12;-1:-1:-1;;;;;7049:23:0;;;7041:70;;;;-1:-1:-1;;;;;7041:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7122:9;:22;;-1:-1:-1;;7122:22:0;-1:-1:-1;;;;;7122:22:0;;;;;;;;;;6971:181::o;4130:23::-;;;-1:-1:-1;;;;;4130:23:0;;:::o;2716:29::-;;;-1:-1:-1;;;;;2716:29:0;;:::o;2935:19::-;;;-1:-1:-1;;;2935:19:0;;;;;:::o;9140:402::-;9194:11;9318:12;;;:4;:12;;;;;9350:10;;;9456:20;;;;9350:10;;;;9380;;;;;;;;9413:13;;;;;;;9456:20;;;;9494:8;;;;;;;9523:11;;;-1:-1:-1;;;;;9523:11:0;;9140:402::o;2904:24::-;;;-1:-1:-1;;;;;2904:24:0;;:::o;376:61::-;425:12;376:61;:::o;751:46::-;786:11;751:46;:::o;8187:337::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8254:12;;-1:-1:-1;;;8254:12:0;;-1:-1:-1;;;;;8254:12:0;:17;8246:102;;;;-1:-1:-1;;;;;8246:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8363:8;8359:158;;;8400:6;;-1:-1:-1;;;;;8400:6:0;8387:20;8359:158;8438:7;:14;;-1:-1:-1;;8438:14:0;-1:-1:-1;;;8438:14:0;;;;8467:6;;:38;;-1:-1:-1;;;;;8467:6:0;;;;8491:4;8483:21;8467:38;;;;;8483:21;;8467:38;8438:14;8467:38;8483:21;8467:6;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;15958:765:0;5458:8;;-1:-1:-1;;;;;5458:8:0;5444:10;:22;5436:79;;;;-1:-1:-1;;;;;5436:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16071:24;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;16071:24:0;;;;;16061:35;;;;;;;;;16042:11;16128:12;;;:4;:12;;;;;;16056:41;16175:20;;;;;16303:12;:31;-1:-1:-1;16295:95:0;;;;-1:-1:-1;;;;;16295:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:3;16425:40;;16409:12;:56;;16401:103;;;;-1:-1:-1;;;;;16401:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16523:27;;:40;;16515:70;;;;;-1:-1:-1;;;;;16515:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16668:47;16684:3;16689:6;16697:9;16708:6;16668:15;:47::i;:::-;5526:1;;;15958:765;;:::o;2788:33::-;;;-1:-1:-1;;;;;2788:33:0;;:::o;7247:330::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7357:4;7349:21;7331:39;;;7323:88;;;;-1:-1:-1;;;;;7323:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:12;;7485:4;7477:21;-1:-1:-1;;;;;7430:11:0;;;-1:-1:-1;;;7444:12:0;;;;;7430:26;;;;:43;;;;;:68;;7422:98;;;;;-1:-1:-1;;;;;7422:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7531:11;:38;;-1:-1:-1;;7531:38:0;;-1:-1:-1;;;;;7531:38:0;;;;;;;;;;;;;;7247:330::o;6616:118::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6696:12;:30;;-1:-1:-1;;6696:30:0;-1:-1:-1;;;;;6696:30:0;;;;;;;;;;6616:118::o;3278:27::-;;;-1:-1:-1;;;3278:27:0;;-1:-1:-1;;;;;3278:27:0;;:::o;19894:889::-;19995:15;20013:12;;;:4;:12;;;;;20050:10;;;;20081:11;;;20073:58;;;;-1:-1:-1;;;;;20073:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20215:20;;;;;;2658:3;20215:44;20200:12;:59;20192:106;;;;-1:-1:-1;;;;;20192:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20371:14;;-1:-1:-1;;20371:14:0;;;;20384:1;;;;20483:51;;20500:6;;20508:10;;;;;;;20520:13;;;;20483:16;:51::i;:::-;20547:12;:38;;-1:-1:-1;;;;;;;;20547:38:0;;;;;;;;;;;;;;;;;;;;;;20453:81;;-1:-1:-1;20453:81:0;;-1:-1:-1;20600:11:0;:25;-1:-1:-1;20596:92:0;;20642:11;:34;;-1:-1:-1;;;;;20642:34:0;;;;;;;-1:-1:-1;;20642:34:0;;;;;;20596:92;20739:11;;20729:46;;20739:11;;;-1:-1:-1;;;;;20739:11:0;20752:6;;20768;20729:9;:46::i;6779:102::-;5231:6;;-1:-1:-1;;;;;5231:6:0;5217:10;:20;;:44;;-1:-1:-1;5255:6:0;;-1:-1:-1;;;;;5255:6:0;5241:10;:20;5217:44;5209:95;;;;;;-1:-1:-1;;;;;5209:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6851:8;:22;;-1:-1:-1;;6851:22:0;-1:-1:-1;;;;;6851:22:0;;;;;;;;;;6779:102::o;21566:311::-;21686:24;;-1:-1:-1;;;;;21686:16:0;;;:24;;;;;21703:6;;21686:24;;;;21703:6;21686:16;:24;;;;;;;21682:188;;;21732:46;;;;;;;;;;;;;;-1:-1:-1;;;;;21732:46:0;;;;;;;;;;;21682:188;;;21816:42;;;;;;;;;;;;;;-1:-1:-1;;;;;21816:42:0;;;;;;;;;;;21682:188;21566:311;;;;:::o;15191:402::-;22259:4;22156:66;22055;22293:12;15300:16;;15299:32;15298:48;15297:66;15388:1;15374:185;15395:1;15391;:5;15374:185;;;45:20:-1;25:41;;;;22259:4:0;22293:12;15484:16;;22055:66;15483:32;22156:66;15482:48;15481:66;15468:79;;;;;15398:3;;15374:185;;;-1:-1:-1;15191:402:0;;;;:::o;20859:652::-;20949:14;20965:15;21005:9;21001:1;:13;:36;;;;;21031:6;21018:9;:19;;21001:36;20993:78;;;;;;;-1:-1:-1;;;;;20993:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:9;21097:6;:25;;:43;;21139:1;21097:43;;;786:11;21097:43;21084:56;-1:-1:-1;21208:5:0;366:3;21170:35;;:43;425:12;21230:37;;21226:107;;;-1:-1:-1;425:12:0;21226:107;21353:22;;;:32;-1:-1:-1;21353:32:0;21345:79;;;;-1:-1:-1;;;;;21345:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21494:9;21485:6;21471:10;21459:9;21450:6;:18;:31;21449:42;:54;;;;;;;;21437:66;;20859:652;;;;;;;:::o;16777:2716::-;16973:10;;;;;;17008;;;;;;;17046:13;;;;;;;-1:-1:-1;;;;;17096:11:0;;;;;17177;;;17169:58;;;;-1:-1:-1;;;;;17169:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17293:14;;-1:-1:-1;;17293:14:0;;;17701:42;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;17701:42:0;;;;;;;17691:53;;;;;17306:1;17920:6;17691:53;17904:22;;;;;;;;17892:34;;17939:18;17968:16;18026:43;18043:6;18051;18059:9;18026:16;:43::i;:::-;17995:74;;-1:-1:-1;17995:74:0;-1:-1:-1;18082:12:0;;18192:3;18182:13;;;;;18181:46;;;2064:3;18201:6;:25;;18181:46;18177:436;;;18340:8;;;;18327:1;:9;;;18340:8;;;;18326:22;18340:8;18326:22;:27;18322:91;;18384:13;18374:23;;18322:91;18177:436;;;18533:9;18526:4;:16;18522:80;;;18573:13;18563:23;;18522:80;18687:12;:38;;-1:-1:-1;;;;;;;;18687:38:0;;;;;;;;;;;;;;;;601:9;18788:25;;18784:421;;18981:15;740:4;19016:6;19005:7;19000:22;;;;;;;;18999:41;;;;;;;;;-1:-1:-1;19084:15:0;;19080:114;;;19133:11;;;-1:-1:-1;;19163:15:0;;;;;-1:-1:-1;;;;;19133:11:0;;-1:-1:-1;19080:114:0;18784:421;;19263:1;19250:10;:14;19246:95;;;19286:43;;;;;;;;;;;;;;-1:-1:-1;;;;;19286:43:0;;;;;;;;;;;19246:95;19392:93;19402:7;19411:20;;;:25;:56;;19457:10;19447:7;:20;19411:56;;;19439:5;19411:56;19469:7;19478:6;19392:9;:93::i;:::-;16777:2716;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://c0d0159f58d5d292f7dae9dafa5e85a25aa411634d3cf837e9b469e14b352307
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1,886.93 | 0.1644 | $310.28 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.