Source Code
Overview
ETH Balance
0.292063375661297479 ETH
Eth Value
$687.31 (@ $2,353.31/ETH)Latest 25 from a total of 58 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Bet | 20387481 | 599 days ago | IN | 0 ETH | 0.00013049 | ||||
| Withdraw Bet | 20383177 | 599 days ago | IN | 0 ETH | 0.00019317 | ||||
| Set Results | 19466769 | 727 days ago | IN | 0 ETH | 0.00080096 | ||||
| Withdraw Pool | 19460202 | 728 days ago | IN | 0 ETH | 0.0015252 | ||||
| Create Pool | 19424296 | 733 days ago | IN | 0.18 ETH | 0.0096981 | ||||
| Set Results | 19418016 | 734 days ago | IN | 0 ETH | 0.00146081 | ||||
| Make Bet | 19415828 | 735 days ago | IN | 0.0002 ETH | 0.00488037 | ||||
| Make Bet | 19415821 | 735 days ago | IN | 0.0004 ETH | 0.00485251 | ||||
| Make Bet | 19415820 | 735 days ago | IN | 0.0001 ETH | 0.00437769 | ||||
| Withdraw Bet | 19410871 | 735 days ago | IN | 0 ETH | 0.0037112 | ||||
| Withdraw Bet | 19410867 | 735 days ago | IN | 0 ETH | 0.00388467 | ||||
| Create Pool | 19410806 | 735 days ago | IN | 0.2 ETH | 0.01579292 | ||||
| Withdraw Pool | 19410801 | 735 days ago | IN | 0 ETH | 0.00436176 | ||||
| Set Results | 19410739 | 735 days ago | IN | 0 ETH | 0.0013856 | ||||
| Make Bet | 19389281 | 738 days ago | IN | 0.005 ETH | 0.00475064 | ||||
| Make Bet | 19388794 | 738 days ago | IN | 0.005 ETH | 0.0037099 | ||||
| Make Bet | 19388768 | 738 days ago | IN | 0.005 ETH | 0.00429017 | ||||
| Make Bet | 19388751 | 738 days ago | IN | 0.005 ETH | 0.00403934 | ||||
| Make Bet | 19388748 | 738 days ago | IN | 0.005 ETH | 0.00396471 | ||||
| Make Bet | 19388711 | 738 days ago | IN | 0.005 ETH | 0.00427078 | ||||
| Make Bet | 19388708 | 738 days ago | IN | 0.005 ETH | 0.00437161 | ||||
| Make Bet | 19388705 | 738 days ago | IN | 0.004 ETH | 0.0035253 | ||||
| Make Bet | 19388702 | 738 days ago | IN | 0.005 ETH | 0.00402339 | ||||
| Create Pool | 19388687 | 738 days ago | IN | 0.18 ETH | 0.01095947 | ||||
| Withdraw Pool | 19365874 | 742 days ago | IN | 0 ETH | 0.00507162 |
Latest 16 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20387481 | 599 days ago | 0.00962181 ETH | ||||
| Transfer | 20383177 | 599 days ago | 0.00962181 ETH | ||||
| Transfer | 19460202 | 728 days ago | 0.18971741 ETH | ||||
| Transfer | 19410871 | 735 days ago | 0.00962181 ETH | ||||
| Transfer | 19410867 | 735 days ago | 0.00962181 ETH | ||||
| Transfer | 19410801 | 735 days ago | 0.17431272 ETH | ||||
| Transfer | 19365874 | 742 days ago | 0.19 ETH | ||||
| Transfer | 19358070 | 743 days ago | 0.20756666 ETH | ||||
| Transfer | 19358068 | 743 days ago | 0.0611 ETH | ||||
| Transfer | 19358067 | 743 days ago | 0.10183333 ETH | ||||
| Transfer | 19339221 | 745 days ago | 0.171 ETH | ||||
| Transfer | 19322808 | 748 days ago | 0.171 ETH | ||||
| Transfer | 19309979 | 749 days ago | 0.19 ETH | ||||
| Transfer | 19287047 | 753 days ago | 0.1890992 ETH | ||||
| Transfer | 19287046 | 753 days ago | 0.16152 ETH | ||||
| Transfer | 19274627 | 754 days ago | 0.19 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GasFi
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-02-20
*/
/*
____ ____
/\ _`\ /\ _`\ __
\ \ \L\_\ __ ____ \ \ \L\_\/\_\
\ \ \L_L /'__`\ /',__\ \ \ _\/\/\ \
\ \ \/, \/\ \L\.\_ /\__, `\ \ \ \/ \ \ \
\ \____/\ \__/.\_\\/\____/ \ \_\ \ \_\
\/___/ \/__/\/_/ \/___/ \/_/ \/_/
GasFi introduces a paradigm shift in DeFi trading by tokenizing multi-chain gas as a tradable asset.
Drawing parallels with the emergence of futures contracts in the 19th century,
GasFi extends these principles to the burgeoning field of digital assets, focusing on blockchain gas fees.
Our vision is to establish a versatile platform for users to hedge against gas fee volatility,
introducing an innovative dimension to cryptocurrency financial products.
Website: https://gasfi.io/
Telegram: https://t.me/GASFI_Portal
Twitter: https://twitter.com/GASFI_Official
Whitepaper: https://gasfi.gitbook.io/
*/
// SPDX-License-Identifier: MIT
// File: lib/@openzeppelin/contracts/utils/ReentrancyGuard.sol
// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant NOT_ENTERED = 1;
uint256 private constant ENTERED = 2;
uint256 private _status;
/**
* @dev Unauthorized reentrant call.
*/
error ReentrancyGuardReentrantCall();
constructor() {
_status = NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be NOT_ENTERED
if (_status == ENTERED) {
revert ReentrancyGuardReentrantCall();
}
// Any calls to nonReentrant after this point will fail
_status = ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == ENTERED;
}
}
// File: src/GasFi.sol
pragma solidity ^0.8.13;
//import {Test, console2} from "forge-std/Test.sol";
contract GasFi is ReentrancyGuard {
// y=(G+L) * (1-f ) * (x /G )
struct Pool {
uint256 height; //
uint256 biggerAmount; //by wei
uint256 lessAmount; //by wei
uint256 gas; //gas price by wei
address creator;
uint32 poolFee; // 1~30 = 0.1% ~ 3 %
uint16 isExtracted; //
uint16 result; // 0:pool not open 1: less than pool gas price 2: bigger than pool gas price 3: equals to pool gas
uint32 projectFee;
}
struct Bet {
uint256 amount; // by wei
// uint poolId;
address creator;
uint32 isBigger;
uint32 isExtracted;
}
enum PoolStatus{
Active,
Locked,
Opened,
Extracted
}
enum BetStatus{
Active,
Locked,
Win,
Extracted,
NotWin,
Tie
}
event PoolCreated(uint poolId, uint height, uint256 gas, uint biggerAmount, uint lessAmount, uint32 poolFee, address creator, uint betIdBigger, uint betIdLess);
event BetCreated(uint poolId, uint betValue, uint32 isBigger, uint biggerAmount, uint lessAmount, address creator, uint betId);
event BetAppended(uint poolId, uint betValue, uint32 isBigger, uint biggerAmount, uint lessAmount, address creator, uint betId);
event PoolOpened(uint poolId, uint16 result);
event BetExtracted(uint poolId, uint betId, uint256 value, address extractor);
event PoolExtracted(uint poolId, uint fee, address extractor);
uint constant public FEE_DECIMAL = 1000;
address immutable public owner;
address immutable public resultSetter;
uint public minPoolFee = 1; // 0.1%
uint public maxPoolFee = 30; //3%
uint32 public projectFee = 50; //5%
uint256 public latestPoolId;
uint256 public latestBetId;
uint public lockedBlockHeight = 149; // 30min
uint public minPoolSize = 0.166 ether;
mapping(uint256 => Pool) public pools_;
mapping(uint256 => mapping(uint256 => Bet)) public bets_;
constructor(address _resultSetter){
owner = msg.sender;
resultSetter = _resultSetter;
}
function setLockedBlockHeight(uint _lockedBlockHeight) external {
assert(msg.sender == resultSetter);
lockedBlockHeight = _lockedBlockHeight;
}
function setMinPoolSize(uint _minPoolSize) external {
assert(msg.sender == resultSetter);
minPoolSize = _minPoolSize;
}
function setMinPoolFee(uint _minPoolFee) external {
assert(msg.sender == resultSetter);
minPoolFee = _minPoolFee;
}
function setMaxPoolFee(uint _maxPoolFee) external {
assert(msg.sender == resultSetter);
maxPoolFee = _maxPoolFee;
}
function setProjectFee(uint32 _projectFee) external {
assert(msg.sender == resultSetter);
projectFee = _projectFee;
}
function createPool(uint blockNumber, uint256 gas, uint initialValue, uint32 poolFee) external payable {
require(blockNumber > block.number, "createPool::invalid block number");
// require(gas > 0, "createPool::invalid gas price");
require(msg.value >= initialValue, "createPool::value not enough ");
require(initialValue >= minPoolSize, "createPool::size too little ");
require(poolFee >= minPoolFee && poolFee <= maxPoolFee, "createPool::invalid poolFee");
Pool storage pool = pools_[++latestPoolId];
pool.height = blockNumber;
pool.creator = msg.sender;
pool.gas = gas;
pool.poolFee = poolFee;
pool.projectFee = projectFee;
uint betValue = initialValue / 2;
pool.biggerAmount = betValue;
pool.lessAmount = betValue;
uint betIdLess = _makeBet(latestPoolId, betValue, 0);
uint betIdBigger = _makeBet(latestPoolId, betValue, 1);
emit PoolCreated(latestPoolId, blockNumber, gas, betValue, betValue, poolFee, msg.sender, betIdBigger, betIdLess);
emit BetCreated(latestPoolId, betValue, 1, betValue, 0, msg.sender, betIdBigger);
emit BetCreated(latestPoolId, betValue, 0, betValue, betValue, msg.sender, betIdLess);
}
function makeBet(uint poolId, uint betValue, uint32 isBigger) external payable {
require(poolId <= latestPoolId && poolId != 0, "makeBet::invalid pool id");
require(msg.value >= betValue, "makeBet::value not enough");
require(isBigger == 0 || isBigger == 1, "makeBet::invalid isBigger");
uint betId = _makeBet(poolId, betValue, isBigger);
Pool storage pool = pools_[poolId];
require(_poolStatus(pool) == PoolStatus.Active, "makeBet::pool is locked ");
if (isBigger == 0) {
pool.lessAmount += betValue;
}
if (isBigger == 1) {
pool.biggerAmount += betValue;
}
emit BetCreated(poolId, betValue, isBigger, pool.biggerAmount, pool.lessAmount, msg.sender, betId);
}
function appendBet(uint _poolId, uint256 _betId, uint appendValue) external payable {
require(_poolId <= latestPoolId && _poolId != 0, "appendBet::invalid pool id");
require(_betId <= latestBetId && _betId != 0, "betStatus::invalid bet id");
require(msg.value >= appendValue, "appendBet::value not enough");
Bet storage bet = bets_[_poolId][_betId];
require(bet.creator == msg.sender, "appendBet::invalid sender");
Pool storage pool = pools_[_poolId];
require(_betStatus(pool, bet) == BetStatus.Active, "appendBet::bet is not active");
bet.amount += appendValue;
uint32 isBigger = bet.isBigger;
if (isBigger == 0) {
pool.lessAmount += appendValue;
}
if (isBigger == 1) {
pool.biggerAmount += appendValue;
}
emit BetAppended(_poolId, appendValue, isBigger, pool.biggerAmount, pool.lessAmount, msg.sender, _betId);
}
//
function setResults(uint[] memory _poolIds, uint16[] memory _results) external {
assert(msg.sender == resultSetter);
for (uint i = 0; i < _results.length; i++) {
uint _poolId = _poolIds[i];
uint16 _result = _results[i];
Pool storage pool = pools_[_poolId];
pool.result = _result;
emit PoolOpened(_poolId, _result);
}
}
function withdrawPool(uint _poolId, uint biggerBetId, uint lessBetId) external nonReentrant {
require(_poolId <= latestPoolId && _poolId != 0, "withdrawPool::invalid pool id");
Pool storage pool = pools_[_poolId];
require(_poolStatus(pool) == PoolStatus.Opened, "withdrawPool::pool is not opened");
require(msg.sender == pool.creator, "withdrawPool::wrong sender");
pool.isExtracted = 1;
uint256 fee = (pool.lessAmount + pool.biggerAmount) * pool.poolFee / FEE_DECIMAL;
uint biggerValue = _getBetWithdrawValue(_poolId, biggerBetId);
Bet storage biggerBet = bets_[_poolId][biggerBetId];
biggerBet.isExtracted = 1;
uint lessValue = _getBetWithdrawValue(_poolId, lessBetId);
Bet storage lessBet = bets_[_poolId][lessBetId];
lessBet.isExtracted = 1;
(bool sent,) = payable(msg.sender).call{value: fee + biggerValue + lessValue}("");
require(sent, "withdrawPool::Failed to send Ether");
if (biggerValue != 0) {
emit BetExtracted(_poolId, biggerBetId, biggerValue, msg.sender);
}
if (lessValue != 0) {
emit BetExtracted(_poolId, lessBetId, lessValue, msg.sender);
}
emit PoolExtracted(_poolId, fee, msg.sender);
}
// y=(G+L) * (1-f ) * (x /G )
function withdrawBet(uint _poolId, uint _betId) external nonReentrant {
_withdrawBet(_poolId, _betId);
}
function withdrawBets(uint[] memory _poolIds, uint[] memory _betIds) external nonReentrant {
require(_poolIds.length == _betIds.length, "withdrawBets::wrong args");
for (uint i = 0; i < _poolIds.length; ++i) {
_withdrawBet(_poolIds[i], _betIds[i]);
}
}
function _withdrawBet(uint _poolId, uint _betId) internal {
require(_poolId <= latestPoolId && _poolId != 0, "withdrawBet::invalid pool id");
// require(poolStatus(_poolId) == PoolStatus.Win || poolStatus(_poolId) == PoolStatus.Extracted, "withdrawBet::pool is not opened");
uint value = _getBetWithdrawValue(_poolId, _betId);
require(value > 0, "_withdrawBet::not winner");
Bet storage biggerBet = bets_[_poolId][_betId];
biggerBet.isExtracted = 1;
// console2.log(address(this).balance);
// console2.log(value);
(bool sent,) = payable(msg.sender).call{value: value}("");
// console2.log(sent);
require(sent, "_withdrawBet::send fail");
emit BetExtracted(_poolId, _betId, value, msg.sender);
}
function withdrawFee(address to, uint amount) external {
assert(msg.sender == owner);
(bool sent,) = payable(to).call{value: amount}("");
assert(sent);
}
function poolStatus(uint256 _poolId) external view returns (PoolStatus) {
require(_poolId <= latestPoolId && _poolId != 0, "poolStatus::invalid pool id");
Pool memory pool = pools_[_poolId];
if (pool.isExtracted == 1) {
return PoolStatus.Extracted;
}
if (pool.result > 0) {
return PoolStatus.Opened;
}
if (pool.height <= lockedBlockHeight + block.number) {
return PoolStatus.Locked;
}
return PoolStatus.Active;
}
function _poolStatus(Pool memory pool) internal view returns (PoolStatus) {
// require(_poolId <= latestPoolId && _poolId != 0, "poolStatus::invalid pool id");
// Pool memory pool = pools_[_poolId];
if (pool.isExtracted == 1) {
return PoolStatus.Extracted;
}
if (pool.result > 0) {
return PoolStatus.Opened;
}
if (pool.height <= lockedBlockHeight + block.number) {
return PoolStatus.Locked;
}
return PoolStatus.Active;
}
function betStatus(uint _poolId, uint256 _betId) external view returns (BetStatus) {
// require(_poolId <= latestPoolId && _poolId != 0, "betStatus::invalid pool id");
// require(_betId <= latestBetId && _betId != 0, "betStatus::invalid bet id");
Bet memory bet = bets_[_poolId][_betId];
require(bet.creator != address(0), "betStatus::invalid bet ");
if (bet.isExtracted == 1) {
return BetStatus.Extracted;
}
Pool memory pool = pools_[_poolId];
uint16 result = pool.result;
if (result > 0) {
if (result == 3) {
return BetStatus.Tie;
}
if (result - 1 == bet.isBigger) {
return BetStatus.Win;
}
return BetStatus.NotWin;
}
if (pool.height <= lockedBlockHeight + block.number) {
return BetStatus.Locked;
}
return BetStatus.Active;
}
function _betStatus(Pool memory pool, Bet memory bet) internal view returns (BetStatus) {
// require(_poolId <= latestPoolId && _poolId != 0, "betStatus::invalid pool id");
// require(_betId <= latestBetId && _betId != 0, "betStatus::invalid bet id");
// Bet memory bet = bets_[_poolId][_betId];
// require(bet.creator != address(0), "betStatus::invalid bet ");
if (bet.isExtracted == 1) {
return BetStatus.Extracted;
}
uint16 result = pool.result;
if (result > 0) {
if (result == 3) {
return BetStatus.Tie;
}
if (result - 1 == bet.isBigger) {
return BetStatus.Win;
}
return BetStatus.NotWin;
}
if (pool.height <= lockedBlockHeight + block.number) {
return BetStatus.Locked;
}
return BetStatus.Active;
}
function getOdds(uint _poolId) external view returns (uint biggerOdds, uint lessOdds) {
// y=(G+L) * (1-f ) * (x /G )
//y/x = (1 + L/G)(1-f)
//y/x = (1 + L/G)(1-f)
Pool memory pool = pools_[_poolId];
uint fee = 1000 - (pool.poolFee + pool.projectFee);
biggerOdds = (pool.biggerAmount + pool.lessAmount) * fee / pool.biggerAmount;
lessOdds = (pool.lessAmount + pool.biggerAmount) * fee / pool.lessAmount;
}
function _makeBet(uint poolId, uint betValue, uint32 isBigger) internal returns (uint) {
Bet storage bet = bets_[poolId][++latestBetId];
bet.amount = betValue;
bet.creator = msg.sender;
bet.isBigger = isBigger;
return latestBetId;
}
function _getBetWithdrawValue(uint _poolId, uint _betId) internal view returns (uint) {
require(_betId <= latestBetId && _betId != 0, "_getBetWithdrawValue::invalid bet id");
Bet memory bet = bets_[_poolId][_betId];
require(bet.creator == msg.sender, "_getBetWithdrawValue::invalid sender ");
Pool memory pool = pools_[_poolId];
require(_betStatus(pool, bet) == BetStatus.Win || _betStatus(pool, bet) == BetStatus.NotWin || _betStatus(pool, bet) == BetStatus.Tie, "_getBetWithdrawValue::not opened");
uint16 result = pool.result;
uint withoutFee = FEE_DECIMAL - (pool.projectFee + pool.poolFee);
uint256 value;
if (result == 3) {
value = bet.amount * withoutFee / FEE_DECIMAL;
}
uint32 isBigger = bet.isBigger;
if (isBigger + 1 == result) {
uint256 lessAmount = pool.lessAmount;
uint256 biggerAmount = pool.biggerAmount;
// y=(G+L) * (1-f ) * (x /G )
if (isBigger == 0) {
value = (lessAmount + biggerAmount) * withoutFee * bet.amount / (lessAmount * FEE_DECIMAL);
}
if (isBigger == 1) {
value = (lessAmount + biggerAmount) * withoutFee * bet.amount / (biggerAmount * FEE_DECIMAL);
}
}
return value;
}
function getBetWithdrawValue(uint _poolId, uint _betId) external view returns (uint) {
require(_betId <= latestBetId && _betId != 0, "_getBetWithdrawValue::invalid bet id");
Bet memory bet = bets_[_poolId][_betId];
// require(bet.creator == msg.sender, "_getBetWithdrawValue::invalid sender ");
Pool memory pool = pools_[_poolId];
// require(_betStatus(pool, bet) == BetStatus.Win || _betStatus(pool, bet) == BetStatus.NotWin || _betStatus(pool, bet) == BetStatus.Tie, "_getBetWithdrawValue::not opened");
uint16 result = pool.result;
uint withoutFee = FEE_DECIMAL - (pool.projectFee + pool.poolFee);
uint256 value;
if (result == 3) {
value = bet.amount * withoutFee / FEE_DECIMAL;
}
uint32 isBigger = bet.isBigger;
if (isBigger + 1 == result) {
uint256 lessAmount = pool.lessAmount;
uint256 biggerAmount = pool.biggerAmount;
// y=(G+L) * (1-f ) * (x /G )
if (isBigger == 0) {
value = (lessAmount + biggerAmount) * withoutFee * bet.amount / (lessAmount * FEE_DECIMAL);
}
if (isBigger == 1) {
value = (lessAmount + biggerAmount) * withoutFee * bet.amount / (biggerAmount * FEE_DECIMAL);
}
}
return value;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_resultSetter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betValue","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"isBigger","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"biggerAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lessAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"betId","type":"uint256"}],"name":"BetAppended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betValue","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"isBigger","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"biggerAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lessAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"betId","type":"uint256"}],"name":"BetCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"extractor","type":"address"}],"name":"BetExtracted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"height","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"biggerAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lessAmount","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"poolFee","type":"uint32"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"betIdBigger","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betIdLess","type":"uint256"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"extractor","type":"address"}],"name":"PoolExtracted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"result","type":"uint16"}],"name":"PoolOpened","type":"event"},{"inputs":[],"name":"FEE_DECIMAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_betId","type":"uint256"},{"internalType":"uint256","name":"appendValue","type":"uint256"}],"name":"appendBet","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"betStatus","outputs":[{"internalType":"enum GasFi.BetStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"bets_","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint32","name":"isBigger","type":"uint32"},{"internalType":"uint32","name":"isExtracted","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"},{"internalType":"uint32","name":"poolFee","type":"uint32"}],"name":"createPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"getBetWithdrawValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"getOdds","outputs":[{"internalType":"uint256","name":"biggerOdds","type":"uint256"},{"internalType":"uint256","name":"lessOdds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestBetId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestPoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"betValue","type":"uint256"},{"internalType":"uint32","name":"isBigger","type":"uint32"}],"name":"makeBet","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"maxPoolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPoolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPoolSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"poolStatus","outputs":[{"internalType":"enum GasFi.PoolStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools_","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"uint256","name":"biggerAmount","type":"uint256"},{"internalType":"uint256","name":"lessAmount","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint32","name":"poolFee","type":"uint32"},{"internalType":"uint16","name":"isExtracted","type":"uint16"},{"internalType":"uint16","name":"result","type":"uint16"},{"internalType":"uint32","name":"projectFee","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resultSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockedBlockHeight","type":"uint256"}],"name":"setLockedBlockHeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPoolFee","type":"uint256"}],"name":"setMaxPoolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPoolFee","type":"uint256"}],"name":"setMinPoolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPoolSize","type":"uint256"}],"name":"setMinPoolSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_projectFee","type":"uint32"}],"name":"setProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_poolIds","type":"uint256[]"},{"internalType":"uint16[]","name":"_results","type":"uint16[]"}],"name":"setResults","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"withdrawBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_poolIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_betIds","type":"uint256[]"}],"name":"withdrawBets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"biggerBetId","type":"uint256"},{"internalType":"uint256","name":"lessBetId","type":"uint256"}],"name":"withdrawPool","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60c060405260018055601e6002556003805463ffffffff19166032179055609560065567024dc01ed8b700006007553480156200003a575f80fd5b5060405162002a1538038062002a158339810160408190526200005d9162000077565b60015f55336080526001600160a01b031660a052620000a6565b5f6020828403121562000088575f80fd5b81516001600160a01b03811681146200009f575f80fd5b9392505050565b60805160a05161291c620000f95f395f81816102b901528181610dad0152818161123d0152818161127a0152818161137d01528181611bee0152611c2b01525f81816103a00152611dc1015261291c5ff3fe6080604052600436106101ba575f3560e01c80638a051c49116100f2578063cfc1b95211610092578063f22851d711610062578063f22851d7146105a4578063f5eacb90146105c3578063f665d10b14610656578063fd9be52214610682575f80fd5b8063cfc1b95214610520578063d58f2f271461053f578063e92a6d5414610570578063eec091dc14610585575f80fd5b8063b18721ad116100cd578063b18721ad146103e1578063c047b365146104c0578063c6fd03df146104df578063cc43ca04146104f4575f80fd5b80638a051c49146103705780638da5cb5b1461038f5780639cabc9c4146103c2575f80fd5b806336875af91161015d57806346541a241161013857806346541a2414610308578063476be95f1461031d57806348058b1514610332578063708e346214610351575f80fd5b806336875af91461028957806339463695146102a85780633dc296ca146102f3575f80fd5b806314dc58ef1161019857806314dc58ef1461021f5780632a2a39e51461023e5780632cd18bec1461026157806334a892ae14610276575f80fd5b80630d058ba1146101be578063126c4166146101d35780631288575a1461020c575b5f80fd5b6101d16101cc3660046123fd565b6106a1565b005b3480156101de575f80fd5b506101f26101ed36600461242f565b61095d565b604080519283526020830191909152015b60405180910390f35b6101d161021a366004612446565b610a7a565b34801561022a575f80fd5b506101d161023936600461242f565b610da2565b348015610249575f80fd5b506102536103e881565b604051908152602001610203565b34801561026c575f80fd5b5061025360025481565b6101d1610284366004612482565b610ddf565b348015610294575f80fd5b506101d16102a336600461257b565b611159565b3480156102b3575f80fd5b506102db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610203565b3480156102fe575f80fd5b5061025360055481565b348015610313575f80fd5b5061025360045481565b348015610328575f80fd5b5061025360015481565b34801561033d575f80fd5b506101d161034c3660046125db565b611217565b34801561035c575f80fd5b506101d161036b36600461242f565b611232565b34801561037b575f80fd5b506101d161038a3660046125fb565b61126f565b34801561039a575f80fd5b506102db7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103cd575f80fd5b506101d16103dc36600461242f565b611372565b3480156103ec575f80fd5b506104636103fb36600461242f565b60086020525f908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b0381169063ffffffff600160a01b820481169161ffff600160c01b8204811692600160d01b830490911691600160e01b90041689565b60408051998a5260208a01989098529688019590955260608701939093526001600160a01b03909116608086015263ffffffff90811660a086015261ffff91821660c0860152911660e08401521661010082015261012001610203565b3480156104cb575f80fd5b506102536104da3660046125db565b6113af565b3480156104ea575f80fd5b5061025360075481565b3480156104ff575f80fd5b5061051361050e3660046125db565b6115db565b60405161020391906126d4565b34801561052b575f80fd5b506101d161053a366004612482565b6117ba565b34801561054a575f80fd5b5060035461055b9063ffffffff1681565b60405163ffffffff9091168152602001610203565b34801561057b575f80fd5b5061025360065481565b348015610590575f80fd5b506101d161059f36600461242f565b611be3565b3480156105af575f80fd5b506101d16105be3660046126ee565b611c20565b3480156105ce575f80fd5b506106226105dd3660046125db565b600960209081525f9283526040808420909152908252902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b90041684565b604080519485526001600160a01b03909316602085015263ffffffff91821692840192909252166060820152608001610203565b348015610661575f80fd5b5061067561067036600461242f565b611c74565b604051610203919061270e565b34801561068d575f80fd5b506101d161069c366004612722565b611db6565b60045483111580156106b257508215155b6107035760405162461bcd60e51b815260206004820152601860248201527f6d616b654265743a3a696e76616c696420706f6f6c206964000000000000000060448201526064015b60405180910390fd5b813410156107535760405162461bcd60e51b815260206004820152601960248201527f6d616b654265743a3a76616c7565206e6f7420656e6f7567680000000000000060448201526064016106fa565b63ffffffff8116158061076c57508063ffffffff166001145b6107b85760405162461bcd60e51b815260206004820152601960248201527f6d616b654265743a3a696e76616c69642069734269676765720000000000000060448201526064016106fa565b5f6107c4848484611e4d565b5f858152600860205260408120919250604080516101208101825283548152600184015460208201526002840154918101919091526003830154606082015260048301546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b9091041661010082015261086090611ec1565b6003811115610871576108716126c0565b146108be5760405162461bcd60e51b815260206004820152601860248201527f6d616b654265743a3a706f6f6c206973206c6f636b656420000000000000000060448201526064016106fa565b8263ffffffff165f036108e45783816002015f8282546108de919061276b565b90915550505b8263ffffffff1660010361090b5783816001015f828254610905919061276b565b90915550505b7f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb224421085858584600101548560020154338860405161094e979695949392919061277e565b60405180910390a15050505050565b5f8181526008602090815260408083208151610120810183528154815260018201549381019390935260028101549183019190915260038101546060830152600401546001600160a01b038116608083015263ffffffff600160a01b8204811660a0840181905261ffff600160c01b8404811660c0860152600160d01b84041660e0850152600160e01b9092041661010083018190528392918391610a01916127bd565b610a0d906103e86127e1565b63ffffffff16905081602001518183604001518460200151610a2f919061276b565b610a3991906127fe565b610a439190612815565b60408301516020840151919550908290610a5d908361276b565b610a6791906127fe565b610a719190612815565b92505050915091565b438411610ac95760405162461bcd60e51b815260206004820181905260248201527f637265617465506f6f6c3a3a696e76616c696420626c6f636b206e756d62657260448201526064016106fa565b81341015610b195760405162461bcd60e51b815260206004820152601d60248201527f637265617465506f6f6c3a3a76616c7565206e6f7420656e6f7567682000000060448201526064016106fa565b600754821015610b6b5760405162461bcd60e51b815260206004820152601c60248201527f637265617465506f6f6c3a3a73697a6520746f6f206c6974746c65200000000060448201526064016106fa565b6001548163ffffffff1610158015610b8b57506002548163ffffffff1611155b610bd75760405162461bcd60e51b815260206004820152601b60248201527f637265617465506f6f6c3a3a696e76616c696420706f6f6c466565000000000060448201526064016106fa565b5f60085f60045f8154610be990612834565b9182905550815260208101919091526040015f90812086815560048101805460038084018990556001600160c01b03199091163363ffffffff60a01b191617600160a01b63ffffffff888116919091029190911780845591546001600160e01b039092169116600160e01b021790559150610c65600285612815565b60018301819055600283018190556004549091505f90610c86908383611e4d565b90505f610c97600454846001611e4d565b60045460408051918252602082018b90528101899052606081018590526080810185905263ffffffff871660a08201523360c082015260e0810182905261010081018490529091507f3fa7d36493139750e1f1ec48d3dc9a9a7dfa5044b0ff10a1ce04c3db982e7a66906101200160405180910390a17f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb2244210600454846001865f3387604051610d4b979695949392919061277e565b60405180910390a17f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb2244210600454845f86873388604051610d90979695949392919061277e565b60405180910390a15050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dda57610dda61284c565b600655565b6004548311158015610df057508215155b610e3c5760405162461bcd60e51b815260206004820152601a60248201527f617070656e644265743a3a696e76616c696420706f6f6c20696400000000000060448201526064016106fa565b6005548211158015610e4d57508115155b610e995760405162461bcd60e51b815260206004820152601960248201527f6265745374617475733a3a696e76616c6964206265742069640000000000000060448201526064016106fa565b80341015610ee95760405162461bcd60e51b815260206004820152601b60248201527f617070656e644265743a3a76616c7565206e6f7420656e6f756768000000000060448201526064016106fa565b5f838152600960209081526040808320858452909152902060018101546001600160a01b03163314610f5d5760405162461bcd60e51b815260206004820152601960248201527f617070656e644265743a3a696e76616c69642073656e6465720000000000000060448201526064016106fa565b5f84815260086020526040812090604080516101208101825283548152600180850154602080840191909152600286015483850152600386015460608085019190915260048701546001600160a01b0380821660808088019190915263ffffffff600160a01b808504821660a08a015261ffff600160c01b808704821660c08c0152600160d01b870490911660e08b0152600160e01b90950482166101008a015289519283018a528c548352968c015492831695820195909552948104841696850196909652909404169281019290925261103791611f14565b6005811115611048576110486126c0565b146110955760405162461bcd60e51b815260206004820152601c60248201527f617070656e644265743a3a626574206973206e6f74206163746976650000000060448201526064016106fa565b82825f015f8282546110a7919061276b565b90915550506001820154600160a01b900463ffffffff165f8190036110df5783826002015f8282546110d9919061276b565b90915550505b8063ffffffff166001036111065783826001015f828254611100919061276b565b90915550505b7fb21aca59b16307112bc212caa3c3279b0dda34c4dd005e37d413a9e0201e47ff86858385600101548660020154338b604051611149979695949392919061277e565b60405180910390a1505050505050565b611161611faf565b80518251146111b25760405162461bcd60e51b815260206004820152601860248201527f7769746864726177426574733a3a77726f6e672061726773000000000000000060448201526064016106fa565b5f5b8251811015611209576111f98382815181106111d2576111d2612860565b60200260200101518383815181106111ec576111ec612860565b6020026020010151611fd7565b61120281612834565b90506111b4565b5061121360015f55565b5050565b61121f611faf565b6112298282611fd7565b61121360015f55565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461126a5761126a61284c565b600755565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112a7576112a761284c565b5f5b815181101561136d575f8382815181106112c5576112c5612860565b602002602001015190505f8383815181106112e2576112e2612860565b6020908102919091018101515f8481526008835260409081902060048101805461ffff60d01b1916600160d01b61ffff86169081029190911790915582518781529485015291935090917f659c4dedbfc6e8c74b68a4b8cc96cd040e4254b333dd497b93cb1277d5925f0b910160405180910390a1505050808061136590612834565b9150506112a9565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113aa576113aa61284c565b600155565b5f60055482111580156113c157508115155b6113dd5760405162461bcd60e51b81526004016106fa90612874565b5f8381526009602090815260408083208584528252808320815160808082018452825482526001928301546001600160a01b0380821684880152600160a01b80830463ffffffff90811686890152600160c01b9384900481166060808801919091528d8b5260088a52888b20895161012081018b5281548152988101549a89019a909a5260028a01549888019890985260038901549787019790975260049097015490811692850192909252948104841660a0840181905294810461ffff90811660c0850152600160d01b82041660e08401819052600160e01b9091049093166101008301819052909491936114d2916127bd565b6114e49063ffffffff166103e86128b8565b90505f8261ffff166003036115115784516103e8906115049084906127fe565b61150e9190612815565b90505b604085015161ffff84166115268260016127bd565b63ffffffff16036115cd576040850151602086015163ffffffff83165f03611582576115546103e8836127fe565b885186611561848661276b565b61156b91906127fe565b61157591906127fe565b61157f9190612815565b93505b8263ffffffff166001036115ca5761159c6103e8826127fe565b8851866115a9848661276b565b6115b391906127fe565b6115bd91906127fe565b6115c79190612815565b93505b50505b509450505050505b92915050565b5f82815260096020908152604080832084845282528083208151608081018352815481526001909101546001600160a01b03811693820184905263ffffffff600160a01b8204811693830193909352600160c01b90049091166060820152906116865760405162461bcd60e51b815260206004820152601760248201527f6265745374617475733a3a696e76616c6964206265742000000000000000000060448201526064016106fa565b806060015163ffffffff166001036116a25760039150506115d5565b5f8481526008602090815260409182902082516101208101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e08401819052600160e01b90920416610100830152801561178e578061ffff1660030361175757600593505050506115d5565b604083015163ffffffff1661176d6001836128cb565b61ffff160361178257600293505050506115d5565b600493505050506115d5565b4360065461179c919061276b565b8251116117af57600193505050506115d5565b505f95945050505050565b6117c2611faf565b60045483111580156117d357508215155b61181f5760405162461bcd60e51b815260206004820152601d60248201527f7769746864726177506f6f6c3a3a696e76616c696420706f6f6c20696400000060448201526064016106fa565b5f8381526008602052604090206002604080516101208101825283548152600184015460208201526002840154918101919091526003830154606082015260048301546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b909104166101008201526118ba90611ec1565b60038111156118cb576118cb6126c0565b146119185760405162461bcd60e51b815260206004820181905260248201527f7769746864726177506f6f6c3a3a706f6f6c206973206e6f74206f70656e656460448201526064016106fa565b60048101546001600160a01b031633146119745760405162461bcd60e51b815260206004820152601a60248201527f7769746864726177506f6f6c3a3a77726f6e672073656e64657200000000000060448201526064016106fa565b600481018054600160c01b61ffff60c01b199091161790819055600182015460028301545f926103e892600160a01b90910463ffffffff16916119b7919061276b565b6119c191906127fe565b6119cb9190612815565b90505f6119d8868661219a565b5f878152600960209081526040808320898452909152812060018101805463ffffffff60c01b1916600160c01b179055919250611a15888761219a565b5f8981526009602090815260408083208a8452909152812060018101805463ffffffff60c01b1916600160c01b1790559192503383611a54878961276b565b611a5e919061276b565b6040515f81818185875af1925050503d805f8114611a97576040519150601f19603f3d011682016040523d82523d5f602084013e611a9c565b606091505b5050905080611af85760405162461bcd60e51b815260206004820152602260248201527f7769746864726177506f6f6c3a3a4661696c656420746f2073656e642045746860448201526132b960f11b60648201526084016106fa565b8415611b4657604080518b8152602081018b90529081018690523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800160405180910390a15b8215611b9457604080518b8152602081018a90529081018490523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800160405180910390a15b604080518b815260208101889052338183015290517f18e71488a52c33ebf71795ea5e4ac7ead55550e3984b311e263e3c786ab810529181900360600190a15050505050505061136d60015f55565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c1b57611c1b61284c565b600255565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5857611c5861284c565b6003805463ffffffff191663ffffffff92909216919091179055565b5f6004548211158015611c8657508115155b611cd25760405162461bcd60e51b815260206004820152601b60248201527f706f6f6c5374617475733a3a696e76616c696420706f6f6c206964000000000060448201526064016106fa565b5f82815260086020908152604091829020825161012081018452815481526001808301549382019390935260028201549381019390935260038101546060840152600401546001600160a01b038116608084015263ffffffff600160a01b8204811660a085015261ffff600160c01b8304811660c08601819052600160d01b840490911660e0860152600160e01b909204166101008401529003611d795750600392915050565b60e081015161ffff1615611d905750600292915050565b43600654611d9e919061276b565b815111611dae5750600192915050565b505f92915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dee57611dee61284c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611e37576040519150601f19603f3d011682016040523d82523d5f602084013e611e3c565b606091505b505090508061136d5761136d61284c565b5f8381526009602052604081206005805483929183918290611e6e90612834565b9182905550815260208101919091526040015f20848155600101805463ffffffff8516600160a01b0263ffffffff60a01b1933166001600160c01b03199092169190911717905550506005549392505050565b5f8160c0015161ffff16600103611eda57506003919050565b60e082015161ffff1615611ef057506002919050565b43600654611efe919061276b565b825111611f0d57506001919050565b505f919050565b5f816060015163ffffffff16600103611f2f575060036115d5565b60e083015161ffff811615611f87578061ffff16600303611f545760059150506115d5565b604083015163ffffffff16611f6a6001836128cb565b61ffff1603611f7d5760029150506115d5565b60049150506115d5565b43600654611f95919061276b565b845111611fa65760019150506115d5565b505f9392505050565b60025f5403611fd157604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b6004548211158015611fe857508115155b6120345760405162461bcd60e51b815260206004820152601c60248201527f77697468647261774265743a3a696e76616c696420706f6f6c2069640000000060448201526064016106fa565b5f61203f838361219a565b90505f81116120905760405162461bcd60e51b815260206004820152601860248201527f5f77697468647261774265743a3a6e6f742077696e6e6572000000000000000060448201526064016106fa565b5f83815260096020908152604080832085845290915280822060018101805463ffffffff60c01b1916600160c01b1790559051909190339084908381818185875af1925050503d805f8114612100576040519150601f19603f3d011682016040523d82523d5f602084013e612105565b606091505b50509050806121565760405162461bcd60e51b815260206004820152601760248201527f5f77697468647261774265743a3a73656e64206661696c00000000000000000060448201526064016106fa565b60408051868152602081018690529081018490523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800161094e565b5f60055482111580156121ac57508115155b6121c85760405162461bcd60e51b81526004016106fa90612874565b5f8381526009602090815260408083208584528252918290208251608081018452815481526001909101546001600160a01b03811692820183905263ffffffff600160a01b8204811694830194909452600160c01b9004909216606083015233146122835760405162461bcd60e51b815260206004820152602560248201527f5f676574426574576974686472617756616c75653a3a696e76616c69642073656044820152640373232b9160dd1b60648201526084016106fa565b5f84815260086020908152604091829020825161012081018452815481526001820154928101929092526002808201549383019390935260038101546060830152600401546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b90910416610100820152906123228284611f14565b6005811115612333576123336126c0565b1480612359575060046123468284611f14565b6005811115612357576123576126c0565b145b8061237e5750600561236b8284611f14565b600581111561237c5761237c6126c0565b145b6123ca5760405162461bcd60e51b815260206004820181905260248201527f5f676574426574576974686472617756616c75653a3a6e6f74206f70656e656460448201526064016106fa565b60e081015160a08201516101008301515f916114d2916127bd565b803563ffffffff811681146123f8575f80fd5b919050565b5f805f6060848603121561240f575f80fd5b8335925060208401359150612426604085016123e5565b90509250925092565b5f6020828403121561243f575f80fd5b5035919050565b5f805f8060808587031215612459575f80fd5b843593506020850135925060408501359150612477606086016123e5565b905092959194509250565b5f805f60608486031215612494575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124e8576124e86124ab565b604052919050565b5f67ffffffffffffffff821115612509576125096124ab565b5060051b60200190565b5f82601f830112612522575f80fd5b81356020612537612532836124f0565b6124bf565b82815260059290921b84018101918181019086841115612555575f80fd5b8286015b848110156125705780358352918301918301612559565b509695505050505050565b5f806040838503121561258c575f80fd5b823567ffffffffffffffff808211156125a3575f80fd5b6125af86838701612513565b935060208501359150808211156125c4575f80fd5b506125d185828601612513565b9150509250929050565b5f80604083850312156125ec575f80fd5b50508035926020909101359150565b5f806040838503121561260c575f80fd5b823567ffffffffffffffff80821115612623575f80fd5b61262f86838701612513565b9350602091508185013581811115612645575f80fd5b85019050601f81018613612657575f80fd5b8035612665612532826124f0565b81815260059190911b82018301908381019088831115612683575f80fd5b928401925b828410156126b157833561ffff811681146126a2575f8081fd5b82529284019290840190612688565b80955050505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106126e8576126e86126c0565b91905290565b5f602082840312156126fe575f80fd5b612707826123e5565b9392505050565b60208101600483106126e8576126e86126c0565b5f8060408385031215612733575f80fd5b82356001600160a01b0381168114612749575f80fd5b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115d5576115d5612757565b968752602087019590955263ffffffff939093166040860152606085019190915260808401526001600160a01b031660a083015260c082015260e00190565b63ffffffff8181168382160190808211156127da576127da612757565b5092915050565b63ffffffff8281168282160390808211156127da576127da612757565b80820281158282048414176115d5576115d5612757565b5f8261282f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161284557612845612757565b5060010190565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f5f676574426574576974686472617756616c75653a3a696e76616c69642062656040820152631d081a5960e21b606082015260800190565b818103818111156115d5576115d5612757565b61ffff8281168282160390808211156127da576127da61275756fea26469706673582212209ff38d92fde51af8db287add7853c2af26cfd585212c68862c664ed1b51c8d1a64736f6c63430008140033000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c80638a051c49116100f2578063cfc1b95211610092578063f22851d711610062578063f22851d7146105a4578063f5eacb90146105c3578063f665d10b14610656578063fd9be52214610682575f80fd5b8063cfc1b95214610520578063d58f2f271461053f578063e92a6d5414610570578063eec091dc14610585575f80fd5b8063b18721ad116100cd578063b18721ad146103e1578063c047b365146104c0578063c6fd03df146104df578063cc43ca04146104f4575f80fd5b80638a051c49146103705780638da5cb5b1461038f5780639cabc9c4146103c2575f80fd5b806336875af91161015d57806346541a241161013857806346541a2414610308578063476be95f1461031d57806348058b1514610332578063708e346214610351575f80fd5b806336875af91461028957806339463695146102a85780633dc296ca146102f3575f80fd5b806314dc58ef1161019857806314dc58ef1461021f5780632a2a39e51461023e5780632cd18bec1461026157806334a892ae14610276575f80fd5b80630d058ba1146101be578063126c4166146101d35780631288575a1461020c575b5f80fd5b6101d16101cc3660046123fd565b6106a1565b005b3480156101de575f80fd5b506101f26101ed36600461242f565b61095d565b604080519283526020830191909152015b60405180910390f35b6101d161021a366004612446565b610a7a565b34801561022a575f80fd5b506101d161023936600461242f565b610da2565b348015610249575f80fd5b506102536103e881565b604051908152602001610203565b34801561026c575f80fd5b5061025360025481565b6101d1610284366004612482565b610ddf565b348015610294575f80fd5b506101d16102a336600461257b565b611159565b3480156102b3575f80fd5b506102db7f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a81565b6040516001600160a01b039091168152602001610203565b3480156102fe575f80fd5b5061025360055481565b348015610313575f80fd5b5061025360045481565b348015610328575f80fd5b5061025360015481565b34801561033d575f80fd5b506101d161034c3660046125db565b611217565b34801561035c575f80fd5b506101d161036b36600461242f565b611232565b34801561037b575f80fd5b506101d161038a3660046125fb565b61126f565b34801561039a575f80fd5b506102db7f0000000000000000000000000665738cf9f8db3831b5016256725373817f826d81565b3480156103cd575f80fd5b506101d16103dc36600461242f565b611372565b3480156103ec575f80fd5b506104636103fb36600461242f565b60086020525f908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b0381169063ffffffff600160a01b820481169161ffff600160c01b8204811692600160d01b830490911691600160e01b90041689565b60408051998a5260208a01989098529688019590955260608701939093526001600160a01b03909116608086015263ffffffff90811660a086015261ffff91821660c0860152911660e08401521661010082015261012001610203565b3480156104cb575f80fd5b506102536104da3660046125db565b6113af565b3480156104ea575f80fd5b5061025360075481565b3480156104ff575f80fd5b5061051361050e3660046125db565b6115db565b60405161020391906126d4565b34801561052b575f80fd5b506101d161053a366004612482565b6117ba565b34801561054a575f80fd5b5060035461055b9063ffffffff1681565b60405163ffffffff9091168152602001610203565b34801561057b575f80fd5b5061025360065481565b348015610590575f80fd5b506101d161059f36600461242f565b611be3565b3480156105af575f80fd5b506101d16105be3660046126ee565b611c20565b3480156105ce575f80fd5b506106226105dd3660046125db565b600960209081525f9283526040808420909152908252902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b90041684565b604080519485526001600160a01b03909316602085015263ffffffff91821692840192909252166060820152608001610203565b348015610661575f80fd5b5061067561067036600461242f565b611c74565b604051610203919061270e565b34801561068d575f80fd5b506101d161069c366004612722565b611db6565b60045483111580156106b257508215155b6107035760405162461bcd60e51b815260206004820152601860248201527f6d616b654265743a3a696e76616c696420706f6f6c206964000000000000000060448201526064015b60405180910390fd5b813410156107535760405162461bcd60e51b815260206004820152601960248201527f6d616b654265743a3a76616c7565206e6f7420656e6f7567680000000000000060448201526064016106fa565b63ffffffff8116158061076c57508063ffffffff166001145b6107b85760405162461bcd60e51b815260206004820152601960248201527f6d616b654265743a3a696e76616c69642069734269676765720000000000000060448201526064016106fa565b5f6107c4848484611e4d565b5f858152600860205260408120919250604080516101208101825283548152600184015460208201526002840154918101919091526003830154606082015260048301546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b9091041661010082015261086090611ec1565b6003811115610871576108716126c0565b146108be5760405162461bcd60e51b815260206004820152601860248201527f6d616b654265743a3a706f6f6c206973206c6f636b656420000000000000000060448201526064016106fa565b8263ffffffff165f036108e45783816002015f8282546108de919061276b565b90915550505b8263ffffffff1660010361090b5783816001015f828254610905919061276b565b90915550505b7f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb224421085858584600101548560020154338860405161094e979695949392919061277e565b60405180910390a15050505050565b5f8181526008602090815260408083208151610120810183528154815260018201549381019390935260028101549183019190915260038101546060830152600401546001600160a01b038116608083015263ffffffff600160a01b8204811660a0840181905261ffff600160c01b8404811660c0860152600160d01b84041660e0850152600160e01b9092041661010083018190528392918391610a01916127bd565b610a0d906103e86127e1565b63ffffffff16905081602001518183604001518460200151610a2f919061276b565b610a3991906127fe565b610a439190612815565b60408301516020840151919550908290610a5d908361276b565b610a6791906127fe565b610a719190612815565b92505050915091565b438411610ac95760405162461bcd60e51b815260206004820181905260248201527f637265617465506f6f6c3a3a696e76616c696420626c6f636b206e756d62657260448201526064016106fa565b81341015610b195760405162461bcd60e51b815260206004820152601d60248201527f637265617465506f6f6c3a3a76616c7565206e6f7420656e6f7567682000000060448201526064016106fa565b600754821015610b6b5760405162461bcd60e51b815260206004820152601c60248201527f637265617465506f6f6c3a3a73697a6520746f6f206c6974746c65200000000060448201526064016106fa565b6001548163ffffffff1610158015610b8b57506002548163ffffffff1611155b610bd75760405162461bcd60e51b815260206004820152601b60248201527f637265617465506f6f6c3a3a696e76616c696420706f6f6c466565000000000060448201526064016106fa565b5f60085f60045f8154610be990612834565b9182905550815260208101919091526040015f90812086815560048101805460038084018990556001600160c01b03199091163363ffffffff60a01b191617600160a01b63ffffffff888116919091029190911780845591546001600160e01b039092169116600160e01b021790559150610c65600285612815565b60018301819055600283018190556004549091505f90610c86908383611e4d565b90505f610c97600454846001611e4d565b60045460408051918252602082018b90528101899052606081018590526080810185905263ffffffff871660a08201523360c082015260e0810182905261010081018490529091507f3fa7d36493139750e1f1ec48d3dc9a9a7dfa5044b0ff10a1ce04c3db982e7a66906101200160405180910390a17f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb2244210600454846001865f3387604051610d4b979695949392919061277e565b60405180910390a17f686ad2f4dd49975897ff8988c52c3b0e7f69fcdcfd3c3d3b8fe2802bb2244210600454845f86873388604051610d90979695949392919061277e565b60405180910390a15050505050505050565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a1614610dda57610dda61284c565b600655565b6004548311158015610df057508215155b610e3c5760405162461bcd60e51b815260206004820152601a60248201527f617070656e644265743a3a696e76616c696420706f6f6c20696400000000000060448201526064016106fa565b6005548211158015610e4d57508115155b610e995760405162461bcd60e51b815260206004820152601960248201527f6265745374617475733a3a696e76616c6964206265742069640000000000000060448201526064016106fa565b80341015610ee95760405162461bcd60e51b815260206004820152601b60248201527f617070656e644265743a3a76616c7565206e6f7420656e6f756768000000000060448201526064016106fa565b5f838152600960209081526040808320858452909152902060018101546001600160a01b03163314610f5d5760405162461bcd60e51b815260206004820152601960248201527f617070656e644265743a3a696e76616c69642073656e6465720000000000000060448201526064016106fa565b5f84815260086020526040812090604080516101208101825283548152600180850154602080840191909152600286015483850152600386015460608085019190915260048701546001600160a01b0380821660808088019190915263ffffffff600160a01b808504821660a08a015261ffff600160c01b808704821660c08c0152600160d01b870490911660e08b0152600160e01b90950482166101008a015289519283018a528c548352968c015492831695820195909552948104841696850196909652909404169281019290925261103791611f14565b6005811115611048576110486126c0565b146110955760405162461bcd60e51b815260206004820152601c60248201527f617070656e644265743a3a626574206973206e6f74206163746976650000000060448201526064016106fa565b82825f015f8282546110a7919061276b565b90915550506001820154600160a01b900463ffffffff165f8190036110df5783826002015f8282546110d9919061276b565b90915550505b8063ffffffff166001036111065783826001015f828254611100919061276b565b90915550505b7fb21aca59b16307112bc212caa3c3279b0dda34c4dd005e37d413a9e0201e47ff86858385600101548660020154338b604051611149979695949392919061277e565b60405180910390a1505050505050565b611161611faf565b80518251146111b25760405162461bcd60e51b815260206004820152601860248201527f7769746864726177426574733a3a77726f6e672061726773000000000000000060448201526064016106fa565b5f5b8251811015611209576111f98382815181106111d2576111d2612860565b60200260200101518383815181106111ec576111ec612860565b6020026020010151611fd7565b61120281612834565b90506111b4565b5061121360015f55565b5050565b61121f611faf565b6112298282611fd7565b61121360015f55565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a161461126a5761126a61284c565b600755565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a16146112a7576112a761284c565b5f5b815181101561136d575f8382815181106112c5576112c5612860565b602002602001015190505f8383815181106112e2576112e2612860565b6020908102919091018101515f8481526008835260409081902060048101805461ffff60d01b1916600160d01b61ffff86169081029190911790915582518781529485015291935090917f659c4dedbfc6e8c74b68a4b8cc96cd040e4254b333dd497b93cb1277d5925f0b910160405180910390a1505050808061136590612834565b9150506112a9565b505050565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a16146113aa576113aa61284c565b600155565b5f60055482111580156113c157508115155b6113dd5760405162461bcd60e51b81526004016106fa90612874565b5f8381526009602090815260408083208584528252808320815160808082018452825482526001928301546001600160a01b0380821684880152600160a01b80830463ffffffff90811686890152600160c01b9384900481166060808801919091528d8b5260088a52888b20895161012081018b5281548152988101549a89019a909a5260028a01549888019890985260038901549787019790975260049097015490811692850192909252948104841660a0840181905294810461ffff90811660c0850152600160d01b82041660e08401819052600160e01b9091049093166101008301819052909491936114d2916127bd565b6114e49063ffffffff166103e86128b8565b90505f8261ffff166003036115115784516103e8906115049084906127fe565b61150e9190612815565b90505b604085015161ffff84166115268260016127bd565b63ffffffff16036115cd576040850151602086015163ffffffff83165f03611582576115546103e8836127fe565b885186611561848661276b565b61156b91906127fe565b61157591906127fe565b61157f9190612815565b93505b8263ffffffff166001036115ca5761159c6103e8826127fe565b8851866115a9848661276b565b6115b391906127fe565b6115bd91906127fe565b6115c79190612815565b93505b50505b509450505050505b92915050565b5f82815260096020908152604080832084845282528083208151608081018352815481526001909101546001600160a01b03811693820184905263ffffffff600160a01b8204811693830193909352600160c01b90049091166060820152906116865760405162461bcd60e51b815260206004820152601760248201527f6265745374617475733a3a696e76616c6964206265742000000000000000000060448201526064016106fa565b806060015163ffffffff166001036116a25760039150506115d5565b5f8481526008602090815260409182902082516101208101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e08401819052600160e01b90920416610100830152801561178e578061ffff1660030361175757600593505050506115d5565b604083015163ffffffff1661176d6001836128cb565b61ffff160361178257600293505050506115d5565b600493505050506115d5565b4360065461179c919061276b565b8251116117af57600193505050506115d5565b505f95945050505050565b6117c2611faf565b60045483111580156117d357508215155b61181f5760405162461bcd60e51b815260206004820152601d60248201527f7769746864726177506f6f6c3a3a696e76616c696420706f6f6c20696400000060448201526064016106fa565b5f8381526008602052604090206002604080516101208101825283548152600184015460208201526002840154918101919091526003830154606082015260048301546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b909104166101008201526118ba90611ec1565b60038111156118cb576118cb6126c0565b146119185760405162461bcd60e51b815260206004820181905260248201527f7769746864726177506f6f6c3a3a706f6f6c206973206e6f74206f70656e656460448201526064016106fa565b60048101546001600160a01b031633146119745760405162461bcd60e51b815260206004820152601a60248201527f7769746864726177506f6f6c3a3a77726f6e672073656e64657200000000000060448201526064016106fa565b600481018054600160c01b61ffff60c01b199091161790819055600182015460028301545f926103e892600160a01b90910463ffffffff16916119b7919061276b565b6119c191906127fe565b6119cb9190612815565b90505f6119d8868661219a565b5f878152600960209081526040808320898452909152812060018101805463ffffffff60c01b1916600160c01b179055919250611a15888761219a565b5f8981526009602090815260408083208a8452909152812060018101805463ffffffff60c01b1916600160c01b1790559192503383611a54878961276b565b611a5e919061276b565b6040515f81818185875af1925050503d805f8114611a97576040519150601f19603f3d011682016040523d82523d5f602084013e611a9c565b606091505b5050905080611af85760405162461bcd60e51b815260206004820152602260248201527f7769746864726177506f6f6c3a3a4661696c656420746f2073656e642045746860448201526132b960f11b60648201526084016106fa565b8415611b4657604080518b8152602081018b90529081018690523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800160405180910390a15b8215611b9457604080518b8152602081018a90529081018490523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800160405180910390a15b604080518b815260208101889052338183015290517f18e71488a52c33ebf71795ea5e4ac7ead55550e3984b311e263e3c786ab810529181900360600190a15050505050505061136d60015f55565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a1614611c1b57611c1b61284c565b600255565b336001600160a01b037f000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a1614611c5857611c5861284c565b6003805463ffffffff191663ffffffff92909216919091179055565b5f6004548211158015611c8657508115155b611cd25760405162461bcd60e51b815260206004820152601b60248201527f706f6f6c5374617475733a3a696e76616c696420706f6f6c206964000000000060448201526064016106fa565b5f82815260086020908152604091829020825161012081018452815481526001808301549382019390935260028201549381019390935260038101546060840152600401546001600160a01b038116608084015263ffffffff600160a01b8204811660a085015261ffff600160c01b8304811660c08601819052600160d01b840490911660e0860152600160e01b909204166101008401529003611d795750600392915050565b60e081015161ffff1615611d905750600292915050565b43600654611d9e919061276b565b815111611dae5750600192915050565b505f92915050565b336001600160a01b037f0000000000000000000000000665738cf9f8db3831b5016256725373817f826d1614611dee57611dee61284c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611e37576040519150601f19603f3d011682016040523d82523d5f602084013e611e3c565b606091505b505090508061136d5761136d61284c565b5f8381526009602052604081206005805483929183918290611e6e90612834565b9182905550815260208101919091526040015f20848155600101805463ffffffff8516600160a01b0263ffffffff60a01b1933166001600160c01b03199092169190911717905550506005549392505050565b5f8160c0015161ffff16600103611eda57506003919050565b60e082015161ffff1615611ef057506002919050565b43600654611efe919061276b565b825111611f0d57506001919050565b505f919050565b5f816060015163ffffffff16600103611f2f575060036115d5565b60e083015161ffff811615611f87578061ffff16600303611f545760059150506115d5565b604083015163ffffffff16611f6a6001836128cb565b61ffff1603611f7d5760029150506115d5565b60049150506115d5565b43600654611f95919061276b565b845111611fa65760019150506115d5565b505f9392505050565b60025f5403611fd157604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b6004548211158015611fe857508115155b6120345760405162461bcd60e51b815260206004820152601c60248201527f77697468647261774265743a3a696e76616c696420706f6f6c2069640000000060448201526064016106fa565b5f61203f838361219a565b90505f81116120905760405162461bcd60e51b815260206004820152601860248201527f5f77697468647261774265743a3a6e6f742077696e6e6572000000000000000060448201526064016106fa565b5f83815260096020908152604080832085845290915280822060018101805463ffffffff60c01b1916600160c01b1790559051909190339084908381818185875af1925050503d805f8114612100576040519150601f19603f3d011682016040523d82523d5f602084013e612105565b606091505b50509050806121565760405162461bcd60e51b815260206004820152601760248201527f5f77697468647261774265743a3a73656e64206661696c00000000000000000060448201526064016106fa565b60408051868152602081018690529081018490523360608201527fc60bad134e35a45f1b1322cee1a67789132e04a185d4f4f71ed464125ef971b29060800161094e565b5f60055482111580156121ac57508115155b6121c85760405162461bcd60e51b81526004016106fa90612874565b5f8381526009602090815260408083208584528252918290208251608081018452815481526001909101546001600160a01b03811692820183905263ffffffff600160a01b8204811694830194909452600160c01b9004909216606083015233146122835760405162461bcd60e51b815260206004820152602560248201527f5f676574426574576974686472617756616c75653a3a696e76616c69642073656044820152640373232b9160dd1b60648201526084016106fa565b5f84815260086020908152604091829020825161012081018452815481526001820154928101929092526002808201549383019390935260038101546060830152600401546001600160a01b038116608083015263ffffffff600160a01b8204811660a084015261ffff600160c01b8304811660c0850152600160d01b83041660e0840152600160e01b90910416610100820152906123228284611f14565b6005811115612333576123336126c0565b1480612359575060046123468284611f14565b6005811115612357576123576126c0565b145b8061237e5750600561236b8284611f14565b600581111561237c5761237c6126c0565b145b6123ca5760405162461bcd60e51b815260206004820181905260248201527f5f676574426574576974686472617756616c75653a3a6e6f74206f70656e656460448201526064016106fa565b60e081015160a08201516101008301515f916114d2916127bd565b803563ffffffff811681146123f8575f80fd5b919050565b5f805f6060848603121561240f575f80fd5b8335925060208401359150612426604085016123e5565b90509250925092565b5f6020828403121561243f575f80fd5b5035919050565b5f805f8060808587031215612459575f80fd5b843593506020850135925060408501359150612477606086016123e5565b905092959194509250565b5f805f60608486031215612494575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124e8576124e86124ab565b604052919050565b5f67ffffffffffffffff821115612509576125096124ab565b5060051b60200190565b5f82601f830112612522575f80fd5b81356020612537612532836124f0565b6124bf565b82815260059290921b84018101918181019086841115612555575f80fd5b8286015b848110156125705780358352918301918301612559565b509695505050505050565b5f806040838503121561258c575f80fd5b823567ffffffffffffffff808211156125a3575f80fd5b6125af86838701612513565b935060208501359150808211156125c4575f80fd5b506125d185828601612513565b9150509250929050565b5f80604083850312156125ec575f80fd5b50508035926020909101359150565b5f806040838503121561260c575f80fd5b823567ffffffffffffffff80821115612623575f80fd5b61262f86838701612513565b9350602091508185013581811115612645575f80fd5b85019050601f81018613612657575f80fd5b8035612665612532826124f0565b81815260059190911b82018301908381019088831115612683575f80fd5b928401925b828410156126b157833561ffff811681146126a2575f8081fd5b82529284019290840190612688565b80955050505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106126e8576126e86126c0565b91905290565b5f602082840312156126fe575f80fd5b612707826123e5565b9392505050565b60208101600483106126e8576126e86126c0565b5f8060408385031215612733575f80fd5b82356001600160a01b0381168114612749575f80fd5b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115d5576115d5612757565b968752602087019590955263ffffffff939093166040860152606085019190915260808401526001600160a01b031660a083015260c082015260e00190565b63ffffffff8181168382160190808211156127da576127da612757565b5092915050565b63ffffffff8281168282160390808211156127da576127da612757565b80820281158282048414176115d5576115d5612757565b5f8261282f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161284557612845612757565b5060010190565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f5f676574426574576974686472617756616c75653a3a696e76616c69642062656040820152631d081a5960e21b606082015260800190565b818103818111156115d5576115d5612757565b61ffff8281168282160390808211156127da576127da61275756fea26469706673582212209ff38d92fde51af8db287add7853c2af26cfd585212c68862c664ed1b51c8d1a64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a
-----Decoded View---------------
Arg [0] : _resultSetter (address): 0x605Da936936C7771f4E10eCc788aE545E4f6238A
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000605da936936c7771f4e10ecc788ae545e4f6238a
Deployed Bytecode Sourcemap
4522:15840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8797:793;;;;;;:::i;:::-;;:::i;:::-;;16846:452;;;;;;;;;;-1:-1:-1;16846:452:0;;;;;:::i;:::-;;:::i;:::-;;;;866:25:1;;;922:2;907:18;;900:34;;;;839:18;16846:452:0;;;;;;;;7488:1299;;;;;;:::i;:::-;;:::i;6724:166::-;;;;;;;;;;-1:-1:-1;6724:166:0;;;;;:::i;:::-;;:::i;6077:39::-;;;;;;;;;;;;6112:4;6077:39;;;;;1485:25:1;;;1473:2;1458:18;6077:39:0;1339:177:1;6248:28:0;;;;;;;;;;;;;;;;9598:977;;;;;;:::i;:::-;;:::i;12502:297::-;;;;;;;;;;-1:-1:-1;12502:297:0;;;;;:::i;:::-;;:::i;6160:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3873:32:1;;;3855:51;;3843:2;3828:18;6160:37:0;3709:203:1;6366:26:0;;;;;;;;;;;;;;;;6332:27;;;;;;;;;;;;;;;;6206;;;;;;;;;;;;;;;;12376:118;;;;;;;;;;-1:-1:-1;12376:118:0;;;;;:::i;:::-;;:::i;6898:142::-;;;;;;;;;;-1:-1:-1;6898:142:0;;;;;:::i;:::-;;:::i;10591:415::-;;;;;;;;;;-1:-1:-1;10591:415:0;;;;;:::i;:::-;;:::i;6123:30::-;;;;;;;;;;;;;;;7048:138;;;;;;;;;;-1:-1:-1;7048:138:0;;;;;:::i;:::-;;:::i;6496:38::-;;;;;;;;;;-1:-1:-1;6496:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6496:38:0;;;;-1:-1:-1;;;6496:38:0;;;;;;-1:-1:-1;;;6496:38:0;;;;;-1:-1:-1;;;6496:38:0;;;;;;-1:-1:-1;;;6496:38:0;;;;;;;;;5846:25:1;;;5902:2;5887:18;;5880:34;;;;5930:18;;;5923:34;;;;5988:2;5973:18;;5966:34;;;;-1:-1:-1;;;;;6037:32:1;;;6031:3;6016:19;;6009:61;6089:10;6136:15;;;6057:3;6115:19;;6108:44;6171:6;6214:15;;;6208:3;6193:19;;6186:44;6267:15;;6261:3;6246:19;;6239:44;6320:15;6314:3;6299:19;;6292:44;5833:3;5818:19;6496:38:0;5483:859:1;18981:1378:0;;;;;;;;;;-1:-1:-1;18981:1378:0;;;;;:::i;:::-;;:::i;6450:37::-;;;;;;;;;;;;;;;;14916:975;;;;;;;;;;-1:-1:-1;14916:975:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11014:1323::-;;;;;;;;;;-1:-1:-1;11014:1323:0;;;;;:::i;:::-;;:::i;6288:30::-;;;;;;;;;;-1:-1:-1;6288:30:0;;;;;;;;;;;6902:10:1;6890:23;;;6872:42;;6860:2;6845:18;6288:30:0;6728:192:1;6399:35:0;;;;;;;;;;;;;;;;7194:138;;;;;;;;;;-1:-1:-1;7194:138:0;;;;;:::i;:::-;;:::i;7340:140::-;;;;;;;;;;-1:-1:-1;7340:140:0;;;;;:::i;:::-;;:::i;6541:56::-;;;;;;;;;;-1:-1:-1;6541:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6541:56:0;;;;-1:-1:-1;;;6541:56:0;;;;;-1:-1:-1;;;6541:56:0;;;;;;;;;7341:25:1;;;-1:-1:-1;;;;;7402:32:1;;;7397:2;7382:18;;7375:60;7454:10;7500:15;;;7480:18;;;7473:43;;;;7552:15;7547:2;7532:18;;7525:43;7328:3;7313:19;6541:56:0;7114:460:1;13820:537:0;;;;;;;;;;-1:-1:-1;13820:537:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13625:185::-;;;;;;;;;;-1:-1:-1;13625:185:0;;;;;:::i;:::-;;:::i;8797:793::-;8905:12;;8895:6;:22;;:37;;;;-1:-1:-1;8921:11:0;;;8895:37;8887:74;;;;-1:-1:-1;;;8887:74:0;;8390:2:1;8887:74:0;;;8372:21:1;8429:2;8409:18;;;8402:30;8468:26;8448:18;;;8441:54;8512:18;;8887:74:0;;;;;;;;;8993:8;8980:9;:21;;8972:59;;;;-1:-1:-1;;;8972:59:0;;8743:2:1;8972:59:0;;;8725:21:1;8782:2;8762:18;;;8755:30;8821:27;8801:18;;;8794:55;8866:18;;8972:59:0;8541:349:1;8972:59:0;9050:13;;;;;:30;;;9067:8;:13;;9079:1;9067:13;9050:30;9042:68;;;;-1:-1:-1;;;9042:68:0;;9097:2:1;9042:68:0;;;9079:21:1;9136:2;9116:18;;;9109:30;9175:27;9155:18;;;9148:55;9220:18;;9042:68:0;8895:349:1;9042:68:0;9123:10;9136:36;9145:6;9153:8;9163;9136;:36::i;:::-;9185:17;9205:14;;;:6;:14;;;;;9123:49;;-1:-1:-1;9238:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9238:17:0;;;;;;;-1:-1:-1;;;9238:17:0;;;;;;;;;-1:-1:-1;;;9238:17:0;;;;;;;;-1:-1:-1;;;9238:17:0;;;;;;;-1:-1:-1;;;9238:17:0;;;;;;;;;;:11;:17::i;:::-;:38;;;;;;;;:::i;:::-;;9230:75;;;;-1:-1:-1;;;9230:75:0;;9451:2:1;9230:75:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:26;9509:18;;;9502:54;9573:18;;9230:75:0;9249:348:1;9230:75:0;9320:8;:13;;9332:1;9320:13;9316:73;;9369:8;9350:4;:15;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;9316:73:0;9403:8;:13;;9415:1;9403:13;9399:75;;9454:8;9433:4;:17;;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;9399:75:0;9489:93;9500:6;9508:8;9518;9528:4;:17;;;9547:4;:15;;;9564:10;9576:5;9489:93;;;;;;;;;;;;:::i;:::-;;;;;;;;8876:714;;8797:793;;;:::o;16846:452::-;16900:15;17041;;;:6;:15;;;;;;;;17022:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17022:34:0;;;;;;;-1:-1:-1;;;17022:34:0;;;;;;;;;;;-1:-1:-1;;;17022:34:0;;;;;;;;-1:-1:-1;;;17022:34:0;;;;;;;-1:-1:-1;;;17022:34:0;;;;;;;;;;16900:15;;17022:34;16900:15;;17086:30;;;:::i;:::-;17078:39;;:4;:39;:::i;:::-;17067:50;;;;17190:4;:17;;;17183:3;17164:4;:15;;;17144:4;:17;;;:35;;;;:::i;:::-;17143:43;;;;:::i;:::-;:64;;;;:::i;:::-;17275:15;;;;17248:17;;;;17130:77;;-1:-1:-1;17275:15:0;17269:3;;17230:35;;17275:15;17230:35;:::i;:::-;17229:43;;;;:::i;:::-;:61;;;;:::i;:::-;17218:72;;16932:366;;16846:452;;;:::o;7488:1299::-;7624:12;7610:11;:26;7602:71;;;;-1:-1:-1;;;7602:71:0;;11471:2:1;7602:71:0;;;11453:21:1;;;11490:18;;;11483:30;11549:34;11529:18;;;11522:62;11601:18;;7602:71:0;11269:356:1;7602:71:0;7767:12;7754:9;:25;;7746:67;;;;-1:-1:-1;;;7746:67:0;;11832:2:1;7746:67:0;;;11814:21:1;11871:2;11851:18;;;11844:30;11910:31;11890:18;;;11883:59;11959:18;;7746:67:0;11630:353:1;7746:67:0;7848:11;;7832:12;:27;;7824:68;;;;-1:-1:-1;;;7824:68:0;;12190:2:1;7824:68:0;;;12172:21:1;12229:2;12209:18;;;12202:30;12268;12248:18;;;12241:58;12316:18;;7824:68:0;11988:352:1;7824:68:0;7922:10;;7911:7;:21;;;;:46;;;;;7947:10;;7936:7;:21;;;;7911:46;7903:86;;;;-1:-1:-1;;;7903:86:0;;12547:2:1;7903:86:0;;;12529:21:1;12586:2;12566:18;;;12559:30;12625:29;12605:18;;;12598:57;12672:18;;7903:86:0;12345:351:1;7903:86:0;8002:17;8022:6;:22;8031:12;;8029:14;;;;;:::i;:::-;;;;;-1:-1:-1;8022:22:0;;;;;;;;;;;-1:-1:-1;8022:22:0;;;8055:25;;;8091:12;;;:25;;8127:8;;;;:14;;;-1:-1:-1;;;;;;8152:22:0;;;8106:10;-1:-1:-1;;;;8152:22:0;;-1:-1:-1;;;8152:22:0;;;;;;;;;;;;;;;8203:10;;-1:-1:-1;;;;;8185:28:0;;;8203:10;;-1:-1:-1;;;8185:28:0;;;;8022:22;-1:-1:-1;8240:16:0;8255:1;8240:12;:16;:::i;:::-;8269:17;;;:28;;;8308:15;;;:26;;;8371:12;;8224:32;;-1:-1:-1;;;8362:35:0;;8224:32;-1:-1:-1;8362:8:0;:35::i;:::-;8345:52;;8408:16;8427:35;8436:12;;8450:8;8460:1;8427:8;:35::i;:::-;8492:12;;8480:108;;;13210:25:1;;;13266:2;13251:18;;13244:34;;;13294:18;;13287:34;;;13352:2;13337:18;;13330:34;;;13395:3;13380:19;;13373:35;;;13457:10;13445:23;;13439:3;13424:19;;13417:52;8553:10:0;13500:3:1;13485:19;;13478:61;13570:3;13555:19;;13548:35;;;13614:3;13599:19;;13592:35;;;8408:54:0;;-1:-1:-1;8480:108:0;;13197:3:1;13182:19;8480:108:0;;;;;;;8604:75;8615:12;;8629:8;8639:1;8642:8;8652:1;8655:10;8667:11;8604:75;;;;;;;;;;;;:::i;:::-;;;;;;;;8695:80;8706:12;;8720:8;8730:1;8733:8;8743;8753:10;8765:9;8695:80;;;;;;;;;;;;:::i;:::-;;;;;;;;7591:1196;;;;7488:1299;;;;:::o;6724:166::-;6806:10;-1:-1:-1;;;;;6820:12:0;6806:26;;6799:34;;;;:::i;:::-;6844:17;:38;6724:166::o;9598:977::-;9712:12;;9701:7;:23;;:39;;;;-1:-1:-1;9728:12:0;;;9701:39;9693:78;;;;-1:-1:-1;;;9693:78:0;;15304:2:1;9693:78:0;;;15286:21:1;15343:2;15323:18;;;15316:30;15382:28;15362:18;;;15355:56;15428:18;;9693:78:0;15102:350:1;9693:78:0;9800:11;;9790:6;:21;;:36;;;;-1:-1:-1;9815:11:0;;;9790:36;9782:74;;;;-1:-1:-1;;;9782:74:0;;15659:2:1;9782:74:0;;;15641:21:1;15698:2;15678:18;;;15671:30;15737:27;15717:18;;;15710:55;15782:18;;9782:74:0;15457:349:1;9782:74:0;9888:11;9875:9;:24;;9867:64;;;;-1:-1:-1;;;9867:64:0;;16013:2:1;9867:64:0;;;15995:21:1;16052:2;16032:18;;;16025:30;16091:29;16071:18;;;16064:57;16138:18;;9867:64:0;15811:351:1;9867:64:0;9944:15;9962:14;;;:5;:14;;;;;;;;:22;;;;;;;;10003:11;;;;-1:-1:-1;;;;;10003:11:0;10018:10;10003:25;9995:63;;;;-1:-1:-1;;;9995:63:0;;16369:2:1;9995:63:0;;;16351:21:1;16408:2;16388:18;;;16381:30;16447:27;16427:18;;;16420:55;16492:18;;9995:63:0;16167:349:1;9995:63:0;10069:17;10089:15;;;:6;:15;;;;;;10123:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10123:21:0;;;;;;;;;;;;-1:-1:-1;;;10123:21:0;;;;;;;;;;-1:-1:-1;;;10123:21:0;;;;;;;;;-1:-1:-1;;;10123:21:0;;;;;;;;;-1:-1:-1;;;10123:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;:21::i;:::-;:41;;;;;;;;:::i;:::-;;10115:82;;;;-1:-1:-1;;;10115:82:0;;16723:2:1;10115:82:0;;;16705:21:1;16762:2;16742:18;;;16735:30;16801;16781:18;;;16774:58;16849:18;;10115:82:0;16521:352:1;10115:82:0;10224:11;10210:3;:10;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;10264:12:0;;;;-1:-1:-1;;;10264:12:0;;;;10246:15;10291:13;;;10287:76;;10340:11;10321:4;:15;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;10287:76:0;10377:8;:13;;10389:1;10377:13;10373:78;;10428:11;10407:4;:17;;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;10373:78:0;10468:99;10480:7;10489:11;10502:8;10512:4;:17;;;10531:4;:15;;;10548:10;10560:6;10468:99;;;;;;;;;;;;:::i;:::-;;;;;;;;9682:893;;;9598:977;;;:::o;12502:297::-;3495:21;:19;:21::i;:::-;12631:7:::1;:14;12612:8;:15;:33;12604:70;;;::::0;-1:-1:-1;;;12604:70:0;;17080:2:1;12604:70:0::1;::::0;::::1;17062:21:1::0;17119:2;17099:18;;;17092:30;17158:26;17138:18;;;17131:54;17202:18;;12604:70:0::1;16878:348:1::0;12604:70:0::1;12690:6;12685:107;12706:8;:15;12702:1;:19;12685:107;;;12743:37;12756:8;12765:1;12756:11;;;;;;;;:::i;:::-;;;;;;;12769:7;12777:1;12769:10;;;;;;;;:::i;:::-;;;;;;;12743:12;:37::i;:::-;12723:3;::::0;::::1;:::i;:::-;;;12685:107;;;;3539:20:::0;2830:1;4081:7;:21;3898:212;3539:20;12502:297;;:::o;12376:118::-;3495:21;:19;:21::i;:::-;12457:29:::1;12470:7;12479:6;12457:12;:29::i;:::-;3539:20:::0;2830:1;4081:7;:21;3898:212;6898:142;6968:10;-1:-1:-1;;;;;6982:12:0;6968:26;;6961:34;;;;:::i;:::-;7006:11;:26;6898:142::o;10591:415::-;10688:10;-1:-1:-1;;;;;10702:12:0;10688:26;;10681:34;;;;:::i;:::-;10731:6;10726:273;10747:8;:15;10743:1;:19;10726:273;;;10784:12;10799:8;10808:1;10799:11;;;;;;;;:::i;:::-;;;;;;;10784:26;;10825:14;10842:8;10851:1;10842:11;;;;;;;;:::i;:::-;;;;;;;;;;;;10868:17;10888:15;;;:6;:15;;;;;;;10918:11;;;:21;;-1:-1:-1;;;;10918:21:0;-1:-1:-1;;;10918:21:0;;;;;;;;;;;;;10959:28;;17535:25:1;;;17576:18;;;17569:47;10842:11:0;;-1:-1:-1;10888:15:0;;10959:28;;17508:18:1;10959:28:0;;;;;;;10769:230;;;10764:3;;;;;:::i;:::-;;;;10726:273;;;;10591:415;;:::o;7048:138::-;7116:10;-1:-1:-1;;;;;7130:12:0;7116:26;;7109:34;;;;:::i;:::-;7154:10;:24;7048:138::o;18981:1378::-;19060:4;19095:11;;19085:6;:21;;:36;;;;-1:-1:-1;19110:11:0;;;19085:36;19077:85;;;;-1:-1:-1;;;19077:85:0;;;;;;;:::i;:::-;19173:14;19190;;;:5;:14;;;;;;;;:22;;;;;;;;19173:39;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19173:39:0;;;;;;;-1:-1:-1;;;19173:39:0;;;;;;;;;;;-1:-1:-1;;;19173:39:0;;;;;;;;;;;;;;19330:15;;;:6;:15;;;;;19311:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19311:34:0;;;;;;;;;-1:-1:-1;;;19311:34:0;;;;;;19173:39;19311:34;;;;;19173:39;;19311:34;;19614:30;;;:::i;:::-;19599:46;;;;6112:4;19599:46;:::i;:::-;19581:64;;19656:13;19686:6;:11;;19696:1;19686:11;19682:89;;19722:10;;6112:4;;19722:23;;19735:10;;19722:23;:::i;:::-;:37;;;;:::i;:::-;19714:45;;19682:89;19799:12;;;;19826:22;;;:12;19799;19837:1;19826:12;:::i;:::-;:22;;;19822:507;;19886:15;;;;19939:17;;;;20018:13;;;19865:18;20018:13;20014:144;;20117:24;6112:4;20117:10;:24;:::i;:::-;20103:10;;20090;20061:25;20074:12;20061:10;:25;:::i;:::-;20060:40;;;;:::i;:::-;:53;;;;:::i;:::-;:82;;;;:::i;:::-;20052:90;;20014:144;20176:8;:13;;20188:1;20176:13;20172:146;;20275:26;6112:4;20275:12;:26;:::i;:::-;20261:10;;20248;20219:25;20232:12;20219:10;:25;:::i;:::-;20218:40;;;;:::i;:::-;:53;;;;:::i;:::-;:84;;;;:::i;:::-;20210:92;;20172:146;19850:479;;19822:507;-1:-1:-1;20346:5:0;-1:-1:-1;;;;;18981:1378:0;;;;;:::o;14916:975::-;14988:9;15207:14;;;:5;:14;;;;;;;;:22;;;;;;;;15190:39;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15190:39:0;;;;;;;;;-1:-1:-1;;;15190:39:0;;;;;;;;;;;-1:-1:-1;;;15190:39:0;;;;;;;;;;15240:61;;;;-1:-1:-1;;;15240:61:0;;18367:2:1;15240:61:0;;;18349:21:1;18406:2;18386:18;;;18379:30;18445:25;18425:18;;;18418:53;18488:18;;15240:61:0;18165:347:1;15240:61:0;15316:3;:15;;;:20;;15335:1;15316:20;15312:79;;15360:19;15353:26;;;;;15312:79;15401:16;15420:15;;;:6;:15;;;;;;;;;15401:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15401:34:0;;;;;;;-1:-1:-1;;;15401:34:0;;;;;;;;;-1:-1:-1;;;15401:34:0;;;;;;;;-1:-1:-1;;;15401:34:0;;;;;;;;;-1:-1:-1;;;15401:34:0;;;;;;;;15488:10;;15484:253;;15519:6;:11;;15529:1;15519:11;15515:72;;15558:13;15551:20;;;;;;;15515:72;15619:12;;;;15605:26;;:10;15614:1;15605:6;:10;:::i;:::-;:26;;;15601:87;;15659:13;15652:20;;;;;;;15601:87;15709:16;15702:23;;;;;;;15484:253;15786:12;15766:17;;:32;;;;:::i;:::-;15751:11;;:47;15747:103;;15822:16;15815:23;;;;;;;15747:103;-1:-1:-1;15867:16:0;;14916:975;-1:-1:-1;;;;;14916:975:0:o;11014:1323::-;3495:21;:19;:21::i;:::-;11136:12:::1;;11125:7;:23;;:39;;;;-1:-1:-1::0;11152:12:0;;::::1;11125:39;11117:81;;;::::0;-1:-1:-1;;;11117:81:0;;18895:2:1;11117:81:0::1;::::0;::::1;18877:21:1::0;18934:2;18914:18;;;18907:30;18973:31;18953:18;;;18946:59;19022:18;;11117:81:0::1;18693:353:1::0;11117:81:0::1;11209:17;11229:15:::0;;;:6:::1;:15;::::0;;;;11284:17:::1;11263;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;11263:17:0;::::1;::::0;;;;::::1;-1:-1:-1::0;;;11263:17:0;::::1;::::0;::::1;::::0;;;;::::1;-1:-1:-1::0;;;11263:17:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11263:17:0;::::1;;::::0;;;;-1:-1:-1;;;11263:17:0;;::::1;;;::::0;;;::::1;::::0;:11:::1;:17::i;:::-;:38;;;;;;;;:::i;:::-;;11255:83;;;::::0;-1:-1:-1;;;11255:83:0;;19253:2:1;11255:83:0::1;::::0;::::1;19235:21:1::0;;;19272:18;;;19265:30;19331:34;19311:18;;;19304:62;19383:18;;11255:83:0::1;19051:356:1::0;11255:83:0::1;11371:12;::::0;::::1;::::0;-1:-1:-1;;;;;11371:12:0::1;11357:10;:26;11349:65;;;::::0;-1:-1:-1;;;11349:65:0;;19614:2:1;11349:65:0::1;::::0;::::1;19596:21:1::0;19653:2;19633:18;;;19626:30;19692:28;19672:18;;;19665:56;19738:18;;11349:65:0::1;19412:350:1::0;11349:65:0::1;11427:16;::::0;::::1;:20:::0;;-1:-1:-1;;;;;;;11427:20:0;;::::1;;::::0;;;;-1:-1:-1;11491:17:0;::::1;::::0;11473:15:::1;::::0;::::1;::::0;-1:-1:-1;;6112:4:0::1;::::0;-1:-1:-1;;;11512:12:0;;::::1;;;::::0;11473:35:::1;::::0;11491:17;11473:35:::1;:::i;:::-;11472:52;;;;:::i;:::-;:66;;;;:::i;:::-;11458:80;;11551:16;11570:42;11591:7;11600:11;11570:20;:42::i;:::-;11623:22;11648:14:::0;;;:5:::1;:14;::::0;;;;;;;:27;;;;;;;;11710:1:::1;11686:21:::0;::::1;:25:::0;;-1:-1:-1;;;;11686:25:0::1;-1:-1:-1::0;;;11686:25:0::1;::::0;;11551:61;;-1:-1:-1;11741:40:0::1;11654:7:::0;11771:9;11741:20:::1;:40::i;:::-;11792:20;11815:14:::0;;;:5:::1;:14;::::0;;;;;;;:25;;;;;;;;11873:1:::1;11851:19:::0;::::1;:23:::0;;-1:-1:-1;;;;11851:23:0::1;-1:-1:-1::0;;;11851:23:0::1;::::0;;11724:57;;-1:-1:-1;11910:10:0::1;11724:57:::0;11934:17:::1;11940:11:::0;11934:3;:17:::1;:::i;:::-;:29;;;;:::i;:::-;11902:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11887:81;;;11987:4;11979:51;;;::::0;-1:-1:-1;;;11979:51:0;;20179:2:1;11979:51:0::1;::::0;::::1;20161:21:1::0;20218:2;20198:18;;;20191:30;20257:34;20237:18;;;20230:62;-1:-1:-1;;;20308:18:1;;;20301:32;20350:19;;11979:51:0::1;19977:398:1::0;11979:51:0::1;12047:16:::0;;12043:113:::1;;12085:59;::::0;;20611:25:1;;;20667:2;20652:18;;20645:34;;;20695:18;;;20688:34;;;12133:10:0::1;20753:2:1::0;20738:18;;20731:60;12085:59:0::1;::::0;20598:3:1;20583:19;12085:59:0::1;;;;;;;12043:113;12170:14:::0;;12166:107:::1;;12206:55;::::0;;20611:25:1;;;20667:2;20652:18;;20645:34;;;20695:18;;;20688:34;;;12250:10:0::1;20753:2:1::0;20738:18;;20731:60;12206:55:0::1;::::0;20598:3:1;20583:19;12206:55:0::1;;;;;;;12166:107;12288:39;::::0;;21004:25:1;;;21060:2;21045:18;;21038:34;;;12316:10:0::1;21088:18:1::0;;;21081:60;12288:39:0;;::::1;::::0;;;;20992:2:1;12288:39:0;;::::1;11106:1231;;;;;;;3539:20:::0;2830:1;4081:7;:21;3898:212;7194:138;7262:10;-1:-1:-1;;;;;7276:12:0;7262:26;;7255:34;;;;:::i;:::-;7300:10;:24;7194:138::o;7340:140::-;7410:10;-1:-1:-1;;;;;7424:12:0;7410:26;;7403:34;;;;:::i;:::-;7448:10;:24;;-1:-1:-1;;7448:24:0;;;;;;;;;;;;7340:140::o;13820:537::-;13880:10;13922:12;;13911:7;:23;;:39;;;;-1:-1:-1;13938:12:0;;;13911:39;13903:79;;;;-1:-1:-1;;;13903:79:0;;21354:2:1;13903:79:0;;;21336:21:1;21393:2;21373:18;;;21366:30;21432:29;21412:18;;;21405:57;21479:18;;13903:79:0;21152:351:1;13903:79:0;13993:16;14012:15;;;:6;:15;;;;;;;;;13993:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13993:34:0;;;;;;;-1:-1:-1;;;13993:34:0;;;;;;;;;-1:-1:-1;;;13993:34:0;;;;;;;;;;-1:-1:-1;;;13993:34:0;;;;;;;;;-1:-1:-1;;;13993:34:0;;;;;;;;14042:21;;14038:81;;-1:-1:-1;14087:20:0;;13820:537;-1:-1:-1;;13820:537:0:o;14038:81::-;14133:11;;;;:15;;;14129:72;;-1:-1:-1;14172:17:0;;13820:537;-1:-1:-1;;13820:537:0:o;14129:72::-;14250:12;14230:17;;:32;;;;:::i;:::-;14215:11;;:47;14211:104;;-1:-1:-1;14286:17:0;;13820:537;-1:-1:-1;;13820:537:0:o;14211:104::-;-1:-1:-1;14332:17:0;;13820:537;-1:-1:-1;;13820:537:0:o;13625:185::-;13698:10;-1:-1:-1;;;;;13712:5:0;13698:19;;13691:27;;;;:::i;:::-;13730:9;13752:2;-1:-1:-1;;;;;13744:16:0;13768:6;13744:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13729:50;;;13797:4;13790:12;;;;:::i;17306:284::-;17387:4;17424:13;;;:5;:13;;;;;17440:11;17438:13;;17387:4;;17424:13;17387:4;;;;17438:13;;;:::i;:::-;;;;;-1:-1:-1;17424:28:0;;;;;;;;;;;-1:-1:-1;17424:28:0;17463:21;;;17495:11;;:24;;17530:23;;;-1:-1:-1;;;17530:23:0;-1:-1:-1;;;;17509:10:0;17530:23;-1:-1:-1;;;;;;17530:23:0;;;;;;;;;;-1:-1:-1;;17571:11:0;;17306:284;;;;;:::o;14365:543::-;14427:10;14593:4;:16;;;:21;;14613:1;14593:21;14589:81;;-1:-1:-1;14638:20:0;;14365:543;-1:-1:-1;14365:543:0:o;14589:81::-;14684:11;;;;:15;;;14680:72;;-1:-1:-1;14723:17:0;;14365:543;-1:-1:-1;14365:543:0:o;14680:72::-;14801:12;14781:17;;:32;;;;:::i;:::-;14766:11;;:47;14762:104;;-1:-1:-1;14837:17:0;;14365:543;-1:-1:-1;14365:543:0:o;14762:104::-;-1:-1:-1;14883:17:0;;14365:543;-1:-1:-1;14365:543:0:o;15899:939::-;15976:9;16308:3;:15;;;:20;;16327:1;16308:20;16304:79;;-1:-1:-1;16352:19:0;16345:26;;16304:79;16409:11;;;;16435:10;;;;16431:253;;16466:6;:11;;16476:1;16466:11;16462:72;;16505:13;16498:20;;;;;16462:72;16566:12;;;;16552:26;;:10;16561:1;16552:6;:10;:::i;:::-;:26;;;16548:87;;16606:13;16599:20;;;;;16548:87;16656:16;16649:23;;;;;16431:253;16733:12;16713:17;;:32;;;;:::i;:::-;16698:11;;:47;16694:103;;16769:16;16762:23;;;;;16694:103;-1:-1:-1;16814:16:0;;15899:939;-1:-1:-1;;;15899:939:0:o;3575:315::-;2873:1;3704:7;;:18;3700:88;;3746:30;;-1:-1:-1;;;3746:30:0;;;;;;;;;;;3700:88;2873:1;3865:7;:17;3575:315::o;12807:808::-;12895:12;;12884:7;:23;;:39;;;;-1:-1:-1;12911:12:0;;;12884:39;12876:80;;;;-1:-1:-1;;;12876:80:0;;21710:2:1;12876:80:0;;;21692:21:1;21749:2;21729:18;;;21722:30;21788;21768:18;;;21761:58;21836:18;;12876:80:0;21508:352:1;12876:80:0;13110:10;13123:37;13144:7;13153:6;13123:20;:37::i;:::-;13110:50;;13187:1;13179:5;:9;13171:46;;;;-1:-1:-1;;;13171:46:0;;22067:2:1;13171:46:0;;;22049:21:1;22106:2;22086:18;;;22079:30;22145:26;22125:18;;;22118:54;22189:18;;13171:46:0;21865:348:1;13171:46:0;13228:22;13253:14;;;:5;:14;;;;;;;;:22;;;;;;;;;13310:1;13286:21;;:25;;-1:-1:-1;;;;13286:25:0;-1:-1:-1;;;13286:25:0;;;13417:42;;13253:22;;13228;13425:10;;13449:5;;13228:22;13417:42;13228:22;13417:42;13449:5;13425:10;13417:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13402:57;;;13509:4;13501:40;;;;-1:-1:-1;;;13501:40:0;;22420:2:1;13501:40:0;;;22402:21:1;22459:2;22439:18;;;22432:30;22498:25;22478:18;;;22471:53;22541:18;;13501:40:0;22218:347:1;13501:40:0;13559:48;;;20611:25:1;;;20667:2;20652:18;;20645:34;;;20695:18;;;20688:34;;;13596:10:0;20753:2:1;20738:18;;20731:60;13559:48:0;;20598:3:1;20583:19;13559:48:0;20380:417:1;17598:1375:0;17678:4;17713:11;;17703:6;:21;;:36;;;;-1:-1:-1;17728:11:0;;;17703:36;17695:85;;;;-1:-1:-1;;;17695:85:0;;;;;;;:::i;:::-;17791:14;17808;;;:5;:14;;;;;;;;:22;;;;;;;;;17791:39;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17791:39:0;;;;;;;;;-1:-1:-1;;;17791:39:0;;;;;;;;;;;-1:-1:-1;;;17791:39:0;;;;;;;;;17864:10;17849:25;17841:75;;;;-1:-1:-1;;;17841:75:0;;22772:2:1;17841:75:0;;;22754:21:1;22811:2;22791:18;;;22784:30;22850:34;22830:18;;;22823:62;-1:-1:-1;;;22901:18:1;;;22894:35;22946:19;;17841:75:0;22570:401:1;17841:75:0;17927:16;17946:15;;;:6;:15;;;;;;;;;17927:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17927:34:0;;;;;;;-1:-1:-1;;;17927:34:0;;;;;;;;;-1:-1:-1;;;17927:34:0;;;;;;;;-1:-1:-1;;;17927:34:0;;;;;;;-1:-1:-1;;;17927:34:0;;;;;;;;;17980:21;17991:4;17997:3;17980:10;:21::i;:::-;:38;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1;18047:16:0;18022:21;18033:4;18039:3;18022:10;:21::i;:::-;:41;;;;;;;;:::i;:::-;;17980:83;:125;;;-1:-1:-1;18092:13:0;18067:21;18078:4;18084:3;18067:10;:21::i;:::-;:38;;;;;;;;:::i;:::-;;17980:125;17972:170;;;;-1:-1:-1;;;17972:170:0;;23178:2:1;17972:170:0;;;23160:21:1;;;23197:18;;;23190:30;23256:34;23236:18;;;23229:62;23308:18;;17972:170:0;22976:356:1;17972:170:0;18173:11;;;;18246:12;;;;18228:15;;;;18157:13;;18228:30;;;:::i;14:163:1:-;81:20;;141:10;130:22;;120:33;;110:61;;167:1;164;157:12;110:61;14:163;;;:::o;182:320::-;258:6;266;274;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;379:9;366:23;356:33;;436:2;425:9;421:18;408:32;398:42;;459:37;492:2;481:9;477:18;459:37;:::i;:::-;449:47;;182:320;;;;;:::o;507:180::-;566:6;619:2;607:9;598:7;594:23;590:32;587:52;;;635:1;632;625:12;587:52;-1:-1:-1;658:23:1;;507:180;-1:-1:-1;507:180:1:o;945:389::-;1030:6;1038;1046;1054;1107:3;1095:9;1086:7;1082:23;1078:33;1075:53;;;1124:1;1121;1114:12;1075:53;1160:9;1147:23;1137:33;;1217:2;1206:9;1202:18;1189:32;1179:42;;1268:2;1257:9;1253:18;1240:32;1230:42;;1291:37;1324:2;1313:9;1309:18;1291:37;:::i;:::-;1281:47;;945:389;;;;;;;:::o;1521:316::-;1598:6;1606;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;-1:-1:-1;;1706:23:1;;;1776:2;1761:18;;1748:32;;-1:-1:-1;1827:2:1;1812:18;;;1799:32;;1521:316;-1:-1:-1;1521:316:1:o;1842:127::-;1903:10;1898:3;1894:20;1891:1;1884:31;1934:4;1931:1;1924:15;1958:4;1955:1;1948:15;1974:275;2045:2;2039:9;2110:2;2091:13;;-1:-1:-1;;2087:27:1;2075:40;;2145:18;2130:34;;2166:22;;;2127:62;2124:88;;;2192:18;;:::i;:::-;2228:2;2221:22;1974:275;;-1:-1:-1;1974:275:1:o;2254:183::-;2314:4;2347:18;2339:6;2336:30;2333:56;;;2369:18;;:::i;:::-;-1:-1:-1;2414:1:1;2410:14;2426:4;2406:25;;2254:183::o;2442:662::-;2496:5;2549:3;2542:4;2534:6;2530:17;2526:27;2516:55;;2567:1;2564;2557:12;2516:55;2603:6;2590:20;2629:4;2653:60;2669:43;2709:2;2669:43;:::i;:::-;2653:60;:::i;:::-;2747:15;;;2833:1;2829:10;;;;2817:23;;2813:32;;;2778:12;;;;2857:15;;;2854:35;;;2885:1;2882;2875:12;2854:35;2921:2;2913:6;2909:15;2933:142;2949:6;2944:3;2941:15;2933:142;;;3015:17;;3003:30;;3053:12;;;;2966;;2933:142;;;-1:-1:-1;3093:5:1;2442:662;-1:-1:-1;;;;;;2442:662:1:o;3109:595::-;3227:6;3235;3288:2;3276:9;3267:7;3263:23;3259:32;3256:52;;;3304:1;3301;3294:12;3256:52;3344:9;3331:23;3373:18;3414:2;3406:6;3403:14;3400:34;;;3430:1;3427;3420:12;3400:34;3453:61;3506:7;3497:6;3486:9;3482:22;3453:61;:::i;:::-;3443:71;;3567:2;3556:9;3552:18;3539:32;3523:48;;3596:2;3586:8;3583:16;3580:36;;;3612:1;3609;3602:12;3580:36;;3635:63;3690:7;3679:8;3668:9;3664:24;3635:63;:::i;:::-;3625:73;;;3109:595;;;;;:::o;3917:248::-;3985:6;3993;4046:2;4034:9;4025:7;4021:23;4017:32;4014:52;;;4062:1;4059;4052:12;4014:52;-1:-1:-1;;4085:23:1;;;4155:2;4140:18;;;4127:32;;-1:-1:-1;3917:248:1:o;4170:1308::-;4287:6;4295;4348:2;4336:9;4327:7;4323:23;4319:32;4316:52;;;4364:1;4361;4354:12;4316:52;4404:9;4391:23;4433:18;4474:2;4466:6;4463:14;4460:34;;;4490:1;4487;4480:12;4460:34;4513:61;4566:7;4557:6;4546:9;4542:22;4513:61;:::i;:::-;4503:71;;4593:2;4583:12;;4648:2;4637:9;4633:18;4620:32;4677:2;4667:8;4664:16;4661:36;;;4693:1;4690;4683:12;4661:36;4716:24;;;-1:-1:-1;4771:4:1;4763:13;;4759:27;-1:-1:-1;4749:55:1;;4800:1;4797;4790:12;4749:55;4836:2;4823:16;4859:60;4875:43;4915:2;4875:43;:::i;4859:60::-;4953:15;;;5035:1;5031:10;;;;5023:19;;5019:28;;;4984:12;;;;5059:19;;;5056:39;;;5091:1;5088;5081:12;5056:39;5115:11;;;;5135:313;5151:6;5146:3;5143:15;5135:313;;;5231:3;5218:17;5279:6;5272:5;5268:18;5261:5;5258:29;5248:127;;5329:1;5358:2;5354;5347:14;5248:127;5388:18;;5168:12;;;;5426;;;;5135:313;;;5467:5;5457:15;;;;;;;4170:1308;;;;;:::o;6347:127::-;6408:10;6403:3;6399:20;6396:1;6389:31;6439:4;6436:1;6429:15;6463:4;6460:1;6453:15;6479:244;6624:2;6609:18;;6657:1;6646:13;;6636:47;;6663:18;;:::i;:::-;6692:25;;;6479:244;:::o;6925:184::-;6983:6;7036:2;7024:9;7015:7;7011:23;7007:32;7004:52;;;7052:1;7049;7042:12;7004:52;7075:28;7093:9;7075:28;:::i;:::-;7065:38;6925:184;-1:-1:-1;;;6925:184:1:o;7579:245::-;7725:2;7710:18;;7758:1;7747:13;;7737:47;;7764:18;;:::i;7829:354::-;7897:6;7905;7958:2;7946:9;7937:7;7933:23;7929:32;7926:52;;;7974:1;7971;7964:12;7926:52;8000:23;;-1:-1:-1;;;;;8052:31:1;;8042:42;;8032:70;;8098:1;8095;8088:12;8032:70;8121:5;8173:2;8158:18;;;;8145:32;;-1:-1:-1;;;7829:354:1:o;9602:127::-;9663:10;9658:3;9654:20;9651:1;9644:31;9694:4;9691:1;9684:15;9718:4;9715:1;9708:15;9734:125;9799:9;;;9820:10;;;9817:36;;;9833:18;;:::i;9864:648::-;10177:25;;;10233:2;10218:18;;10211:34;;;;10293:10;10281:23;;;;10276:2;10261:18;;10254:51;10336:2;10321:18;;10314:34;;;;10379:3;10364:19;;10357:35;-1:-1:-1;;;;;10429:32:1;10449:3;10408:19;;10401:61;10493:3;10478:19;;10471:35;10164:3;10149:19;;9864:648::o;10517:172::-;10584:10;10614;;;10626;;;10610:27;;10649:11;;;10646:37;;;10663:18;;:::i;:::-;10646:37;10517:172;;;;:::o;10694:175::-;10762:10;10805;;;10793;;;10789:27;;10828:12;;;10825:38;;;10843:18;;:::i;10874:168::-;10947:9;;;10978;;10995:15;;;10989:22;;10975:37;10965:71;;11016:18;;:::i;11047:217::-;11087:1;11113;11103:132;;11157:10;11152:3;11148:20;11145:1;11138:31;11192:4;11189:1;11182:15;11220:4;11217:1;11210:15;11103:132;-1:-1:-1;11249:9:1;;11047:217::o;12701:135::-;12740:3;12761:17;;;12758:43;;12781:18;;:::i;:::-;-1:-1:-1;12828:1:1;12817:13;;12701:135::o;14970:127::-;15031:10;15026:3;15022:20;15019:1;15012:31;15062:4;15059:1;15052:15;15086:4;15083:1;15076:15;17231:127;17292:10;17287:3;17283:20;17280:1;17273:31;17323:4;17320:1;17313:15;17347:4;17344:1;17337:15;17627:400;17829:2;17811:21;;;17868:2;17848:18;;;17841:30;17907:34;17902:2;17887:18;;17880:62;-1:-1:-1;;;17973:2:1;17958:18;;17951:34;18017:3;18002:19;;17627:400::o;18032:128::-;18099:9;;;18120:11;;;18117:37;;;18134:18;;:::i;18517:171::-;18585:6;18624:10;;;18612;;;18608:27;;18647:12;;;18644:38;;;18662:18;;:::i
Swarm Source
ipfs://9ff38d92fde51af8db287add7853c2af26cfd585212c68862c664ed1b51c8d1a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$686.42
Net Worth in ETH
0.291684
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,350.25 | 0.2921 | $686.42 |
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.