Contract
0x536e911b8ba66c9a8697bf7d7b9924456abcc9e7
7
Contract Overview
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
Stash
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-05-20 */ // Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // Dependency file: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // Dependency file: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) // pragma solidity ^0.8.0; // import "@openzeppelin/contracts/utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // Dependency file: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // Dependency file: contracts/interfaces/IJoeFactory.sol // pragma solidity ^0.8.13; interface IJoeFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } // Dependency file: contracts/interfaces/IJoePair.sol // pragma solidity ^0.8.13; interface IJoePair { function sync() external; } // Dependency file: contracts/interfaces/IJoeRouter.sol // pragma solidity ^0.8.13; interface IJoeRouter { function factory() external pure returns (address); function WAVAX() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityAVAX( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountAVAX, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactAVAXForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } // Root file: contracts/Stash.sol pragma solidity ^0.8.13; // import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; // import "@openzeppelin/contracts/access/Ownable.sol"; // import "@openzeppelin/contracts/utils/math/SafeMath.sol"; // import "contracts/interfaces/IJoeFactory.sol"; // import "contracts/interfaces/IJoePair.sol"; // import "contracts/interfaces/IJoeRouter.sol"; /** * @title STASH ERC20 token * @dev This is part of an implementation of the Stash protocol. * STASH is a normal ERC20 token, but its supply can be adjusted by splitting and * combining tokens proportionally across all wallets. * * Stash balances are internally represented with a hidden denomination, 'gons'. * We support splitting the currency in expansion and combining the currency on contraction by * changing the exchange rate between the hidden 'gons' and the public 'fragments'. */ contract Stash is IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Stash"; string private constant _symbol = "STASH"; uint8 private constant _decimals = 5; uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 500 * 10**3 * 10**_decimals; uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY); uint256 private constant MAX_SUPPLY = 500 * 10**7 * 10**_decimals; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; uint256 public constant ADD_LIQUIDITY_PERIOD = 2 days; uint256 public constant MAX_UINT256 = ~uint256(0); uint8 public constant RATE_DECIMALS = 7; uint256 public constant REBASE_PERIOD = 15 minutes; bool private inSwap = false; uint256 private _totalSupply; uint256 private _gonsPerFragment; mapping(address => bool) private _isFeeExempt; mapping(address => uint256) private _gonBalances; mapping(address => mapping(address => uint256)) private _allowedFragments; uint256 public basicRebaseRate = 2374; uint256 public liquidityFee = 40; uint256 public treasuryFee = 20; uint256 public stashInsuranceFundFee = 50; uint256 public sellFee = 30; uint256 public burnRate = 20; uint256 public totalFee = liquidityFee.add(treasuryFee).add(stashInsuranceFundFee).add(burnRate); uint256 public feeDenominator = 1000; bool public autoRebase; bool public autoAddLiquidity; bool public autoSwapback; uint256 public initRebaseStartTime; uint256 public lastRebasedTime; uint256 public lastAddLiquidityTime; address public autoLiquidityReceiver; address public treasuryReceiver; address public stashInsuranceFundReceiver; address public pair; IJoeRouter public router; mapping(address => bool) public blacklist; event LogRebase(uint256 indexed epoch, uint256 lastTotalSupply, uint256 currentTotalSupply); modifier validRecipient(address to) { require(to != address(0x0)); _; } modifier swapping() { inSwap = true; _; inSwap = false; } constructor( address _joeRouter, address _autoLiquidityReceiver, address _treasuryReceiver, address _stashInsuranceFundReceiver ) { router = IJoeRouter(_joeRouter); pair = IJoeFactory(router.factory()).createPair(router.WAVAX(), address(this)); autoLiquidityReceiver = _autoLiquidityReceiver; treasuryReceiver = _treasuryReceiver; stashInsuranceFundReceiver = _stashInsuranceFundReceiver; _allowedFragments[address(this)][address(router)] = MAX_UINT256; _totalSupply = INITIAL_FRAGMENTS_SUPPLY; _gonBalances[treasuryReceiver] = TOTAL_GONS; _gonsPerFragment = TOTAL_GONS.div(_totalSupply); _isFeeExempt[treasuryReceiver] = true; _isFeeExempt[address(this)] = true; emit Transfer(address(0x0), treasuryReceiver, _totalSupply); } /** * @dev Get current rebase rate of Stash tokens. * Rebase rate will reduce as time goes by */ function getRebaseRate() public view returns (uint256 rebaseRate) { uint256 deltaTimeFromInit = block.timestamp - initRebaseStartTime; if (deltaTimeFromInit < (365 days)) { rebaseRate = basicRebaseRate; } else if (deltaTimeFromInit >= (365 days)) { rebaseRate = 211; } else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) { rebaseRate = 14; } else if (deltaTimeFromInit >= (7 * 365 days)) { rebaseRate = 2; } } function setBasicRebaseRate(uint256 value) external onlyOwner { basicRebaseRate = value; } /** * @dev Notifies Stash contract about a new rebase cycle * After a rebase, the totalSupply should increase proportionally to the current rebase rate. */ function rebase() internal { if (inSwap) return; uint256 deltaTime = block.timestamp - lastRebasedTime; uint256 times = deltaTime.div(REBASE_PERIOD); uint256 epoch = times.mul(15); uint256 rebaseRate = getRebaseRate(); uint256 lastTotalSupply = _totalSupply; for (uint256 i = 0; i < times; i++) { _totalSupply = _totalSupply.mul((10**RATE_DECIMALS).add(rebaseRate)).div(10**RATE_DECIMALS); } _gonsPerFragment = TOTAL_GONS.div(_totalSupply); lastRebasedTime = lastRebasedTime.add(times.mul(REBASE_PERIOD)); IJoePair(pair).sync(); emit LogRebase(epoch, lastTotalSupply, _totalSupply); } function transfer(address to, uint256 value) external override validRecipient(to) returns (bool) { _transferFrom(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external override validRecipient(to) returns (bool) { uint256 currentAllowance = allowance(from, msg.sender); if (currentAllowance != MAX_UINT256) { _allowedFragments[from][msg.sender] = currentAllowance.sub(value, "ERC20: insufficient allowance"); } _transferFrom(from, to, value); return true; } function _basicTransfer( address from, address to, uint256 amount ) internal returns (bool) { uint256 gonAmount = amount.mul(_gonsPerFragment); _gonBalances[from] = _gonBalances[from].sub(gonAmount, "ERC20: transfer amount exceeds balance"); _gonBalances[to] = _gonBalances[to].add(gonAmount); return true; } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!blacklist[sender] && !blacklist[recipient], "ADDRESS_IN_BLACKLIST"); if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldRebase()) { rebase(); } if (shouldAddLiquidity()) { addLiquidity(); } if (shouldSwapBack()) { swapBack(); } uint256 gonAmount = amount.mul(_gonsPerFragment); _gonBalances[sender] = _gonBalances[sender].sub(gonAmount, "ERC20: transfer amount exceeds balance"); uint256 gonAmountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, gonAmount) : gonAmount; _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived); emit Transfer(sender, recipient, gonAmountReceived.div(_gonsPerFragment)); return true; } function takeFee( address sender, address recipient, uint256 gonAmount ) internal returns (uint256) { uint256 _totalFee = totalFee; uint256 _treasuryFee = treasuryFee; if (recipient == pair) { _totalFee = totalFee.add(sellFee); _treasuryFee = treasuryFee.add(sellFee); } uint256 feeAmount = gonAmount.div(feeDenominator).mul(_totalFee); // burn tokens _gonBalances[DEAD] = _gonBalances[DEAD].add(gonAmount.div(feeDenominator).mul(burnRate)); _gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(_treasuryFee.add(stashInsuranceFundFee))); _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(gonAmount.div(feeDenominator).mul(liquidityFee)); emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment)); return gonAmount.sub(feeAmount); } function addLiquidity() internal swapping { uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div(_gonsPerFragment); _gonBalances[address(this)] = _gonBalances[address(this)].add(_gonBalances[autoLiquidityReceiver]); _gonBalances[autoLiquidityReceiver] = 0; uint256 amountToLiquify = autoLiquidityAmount.div(2); uint256 amountToSwap = autoLiquidityAmount.sub(amountToLiquify); if (amountToSwap == 0) { return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WAVAX(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForAVAXSupportingFeeOnTransferTokens(amountToSwap, 0, path, address(this), block.timestamp); uint256 amountAVAXLiquidity = address(this).balance.sub(balanceBefore); if (amountToLiquify > 0 && amountAVAXLiquidity > 0) { router.addLiquidityAVAX{value: amountAVAXLiquidity}(address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp); } lastAddLiquidityTime = block.timestamp; } function swapBack() internal swapping { uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment); if (amountToSwap == 0) { return; } uint256 balanceBefore = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WAVAX(); router.swapExactTokensForAVAXSupportingFeeOnTransferTokens(amountToSwap, 0, path, address(this), block.timestamp); uint256 amountAVAXToTreasuryAndSIF = address(this).balance.sub(balanceBefore); (bool success, ) = payable(treasuryReceiver).call{value: amountAVAXToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(stashInsuranceFundFee)), gas: 30000}(""); (success, ) = payable(stashInsuranceFundReceiver).call{value: amountAVAXToTreasuryAndSIF.mul(stashInsuranceFundFee).div(treasuryFee.add(stashInsuranceFundFee)), gas: 30000}(""); } function withdrawAllToTreasury() external swapping onlyOwner { uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment); require(amountToSwap > 0, "NO_TOKENS_DEPOSITED"); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WAVAX(); router.swapExactTokensForAVAXSupportingFeeOnTransferTokens(amountToSwap, 0, path, treasuryReceiver, block.timestamp); } function shouldTakeFee(address from, address to) internal view returns (bool) { if (_isFeeExempt[from] || _isFeeExempt[to]) { return false; } return (pair == from || pair == to); } function shouldRebase() internal view returns (bool) { return autoRebase && (_totalSupply < MAX_SUPPLY) && msg.sender != pair && !inSwap && block.timestamp >= (lastRebasedTime + REBASE_PERIOD); } function shouldAddLiquidity() internal view returns (bool) { return autoAddLiquidity && !inSwap && msg.sender != pair && block.timestamp >= (lastAddLiquidityTime + ADD_LIQUIDITY_PERIOD); } function shouldSwapBack() internal view returns (bool) { return autoSwapback && !inSwap && msg.sender != pair; } function setAutoRebase(bool _flag) external onlyOwner { if (_flag) { autoRebase = _flag; if (initRebaseStartTime == 0) { initRebaseStartTime = block.timestamp; } lastRebasedTime = block.timestamp; } else { autoRebase = _flag; } } function setAutoAddLiquidity(bool _flag) external onlyOwner { if (_flag) { autoAddLiquidity = _flag; lastAddLiquidityTime = block.timestamp; } else { autoAddLiquidity = _flag; } } function setAutoSwapback(bool flag) external onlyOwner { autoSwapback = flag; } function allowance(address owner_, address spender) public view override returns (uint256) { return _allowedFragments[owner_][spender]; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue); } emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } function approve(address spender, uint256 value) external override returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function checkFeeExempt(address _addr) external view returns (bool) { return _isFeeExempt[_addr]; } function getCirculatingSupply() public view returns (uint256) { return (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(_gonsPerFragment); } function isNotInSwap() external view returns (bool) { return !inSwap; } function manualSync() external { IJoePair(pair).sync(); } function setFeeReceivers( address _autoLiquidityReceiver, address _treasuryReceiver, address _stashInsuranceFundReceiver ) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; treasuryReceiver = _treasuryReceiver; stashInsuranceFundReceiver = _stashInsuranceFundReceiver; } function setFees( uint256 _liquidityFee, uint256 _treasuryFee, uint256 _stashInsuranceFundFee, uint256 _sellFee, uint256 _burnRate, uint256 _feeDenominator ) external onlyOwner { liquidityFee = _liquidityFee; treasuryFee = _treasuryFee; stashInsuranceFundFee = _stashInsuranceFundFee; sellFee = _sellFee; burnRate = _burnRate; feeDenominator = _feeDenominator; } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment); return accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()); } function setWhitelist(address _addr) external onlyOwner { _isFeeExempt[_addr] = true; } function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner { require(isContract(_botAddress), "MUST_BE_A_CONTRACT_ADDRESS"); blacklist[_botAddress] = _flag; } function setLP(address _address) external onlyOwner { pair = _address; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address who) external view override returns (uint256) { return _gonBalances[who].div(_gonsPerFragment); } /** * @dev Returns the name of the token. */ function name() public pure returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public pure returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public pure returns (uint8) { return _decimals; } function isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } /** * @dev Function allows admin to withdraw ETH accidentally dropped to the contract. */ function rescue() external onlyOwner { payable(owner()).transfer(address(this).balance); } /** * @dev Function allows admin to withdraw tokens accidentally dropped to the contract. */ function rescueToken(address tokenAddress, uint256 amount) external onlyOwner { require(IERC20(tokenAddress).transfer(msg.sender, amount), "RESCUE_TOKENS_FAILED"); } receive() external payable {} }
[{"inputs":[{"internalType":"address","name":"_joeRouter","type":"address"},{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_stashInsuranceFundReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastTotalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"currentTotalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADD_LIQUIDITY_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REBASE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoSwapback","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basicRebaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRebaseRate","outputs":[{"internalType":"uint256","name":"rebaseRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initRebaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebasedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IJoeRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"setAutoSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBasicRebaseRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_stashInsuranceFundReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_stashInsuranceFundFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_burnRate","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stashInsuranceFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stashInsuranceFundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAllToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000805460ff60a01b19169055610946600655602860078190556014600881905560326009819055601e600a55600b8290556200006a92620000569190829084620003e0602090811b6200165d17901c565b620003e060201b6200165d1790919060201c565b600c556103e8600d553480156200008057600080fd5b506040516200307338038062003073833981016040819052620000a39162000472565b620000ae33620003f7565b601680546001600160a01b0319166001600160a01b0386169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e9190620004cf565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b69190620004cf565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000203573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002299190620004cf565b601580546001600160a01b03199081166001600160a01b039384161790915560128054821686841617905560138054821685841617905560148054909116838316179055306000908152600560208181526040808420601654909516845293905291902060001990556200029f90600a62000600565b620002ae906207a12062000611565b600155620002bf6005600a62000600565b620002ce906207a12062000611565b620002dc9060001962000649565b620002ea9060001962000660565b6013546001600160a01b03166000908152600460205260409020556001546200035a906200031b6005600a62000600565b6200032a906207a12062000611565b620003389060001962000649565b620003469060001962000660565b6200044760201b620016691790919060201c565b600255601380546001600160a01b0390811660009081526003602090815260408083208054600160ff199182168117909255308552828520805490911682179055945494549051908152939092169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050620006ac565b6000620003ee82846200067a565b90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620003ee828462000695565b80516001600160a01b03811681146200046d57600080fd5b919050565b600080600080608085870312156200048957600080fd5b620004948562000455565b9350620004a46020860162000455565b9250620004b46040860162000455565b9150620004c46060860162000455565b905092959194509250565b600060208284031215620004e257600080fd5b620003ee8262000455565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000544578160001904821115620005285762000528620004ed565b808516156200053657918102915b93841c939080029062000508565b509250929050565b6000826200055d57506001620003f1565b816200056c57506000620003f1565b81600181146200058557600281146200059057620005b0565b6001915050620003f1565b60ff841115620005a457620005a4620004ed565b50506001821b620003f1565b5060208310610133831016604e8410600b8410161715620005d5575081810a620003f1565b620005e1838362000503565b8060001904821115620005f857620005f8620004ed565b029392505050565b6000620003ee60ff8416836200054c565b60008160001904831182151516156200062e576200062e620004ed565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200065b576200065b62000633565b500690565b600082821015620006755762000675620004ed565b500390565b60008219821115620006905762000690620004ed565b500190565b600082620006a757620006a762000633565b500490565b6129b780620006bc6000396000f3fe60806040526004361061036f5760003560e01c8063854cff2f116101c6578063ca33e64c116100f7578063df313c8511610095578063efd462bb1161006f578063efd462bb146109b7578063f2fde38b146109d6578063f887ea40146109f6578063f9f92be414610a1657600080fd5b8063df313c8514610960578063e15beb8014610980578063e33e42f4146109a057600080fd5b8063d4399790116100d1578063d4399790146108a1578063d51ed1c8146108da578063d7c01032146108fa578063dd62ed3e1461091a57600080fd5b8063ca33e64c1461084b578063cc32d1761461086b578063cfbac92f1461088157600080fd5b8063a457c2d711610164578063a9059cbb1161013e578063a9059cbb146107ea578063ba71c44e1461080a578063bd59558114610820578063bed998501461083557600080fd5b8063a457c2d71461078a578063a724ecfd146107aa578063a8aa1b31146107ca57600080fd5b80639079f932116101a05780639079f9321461071657806395d89b411461073057806398118cb41461075e5780639d12ec011461077457600080fd5b8063854cff2f146106b857806386f6c3c1146106d85780638da5cb5b146106f857600080fd5b806333a581d2116102a0578063650a0ac81161023e578063715018a611610218578063715018a614610658578063753d02a11461066d57806382b97bec1461068257806383b4ac681461069857600080fd5b8063650a0ac81461060d57806368381a881461062257806370a082311461063857600080fd5b8063395093511161027a57806339509351146105ac5780635a604c52146105cc5780636085e220146105e157806364452b01146105f757600080fd5b806333a581d21461055657806333f3d6281461056c57806337c9be871461058c57600080fd5b80631fbe19791161030d5780632b112e49116102e75780632b112e49146104e95780632b14ca56146104fe5780632f34d28214610514578063313ce5671461053457600080fd5b80631fbe19791461049257806320a94780146104a957806323b872dd146104c957600080fd5b8063180b0d7e11610349578063180b0d7e1461042357806318160ddd14610447578063186019721461045c5780631df4ccfc1461047c57600080fd5b806306fdde031461037b57806308b1fd8f146103bb578063095ea7b3146103f357600080fd5b3661037657005b600080fd5b34801561038757600080fd5b506040805180820190915260058152640a6e8c2e6d60db1b60208201525b6040516103b2919061245c565b60405180910390f35b3480156103c757600080fd5b506013546103db906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b3480156103ff57600080fd5b5061041361040e3660046124c6565b610a46565b60405190151581526020016103b2565b34801561042f57600080fd5b50610439600d5481565b6040519081526020016103b2565b34801561045357600080fd5b50600154610439565b34801561046857600080fd5b506014546103db906001600160a01b031681565b34801561048857600080fd5b50610439600c5481565b34801561049e57600080fd5b506104a7610ab3565b005b3480156104b557600080fd5b506104a76104c43660046124f2565b610b23565b3480156104d557600080fd5b506104136104e436600461250b565b610b52565b3480156104f557600080fd5b50610439610c13565b34801561050a57600080fd5b50610439600a5481565b34801561052057600080fd5b506104a761052f36600461254c565b610cba565b34801561054057600080fd5b5060055b60405160ff90911681526020016103b2565b34801561056257600080fd5b5061043960001981565b34801561057857600080fd5b506104a76105873660046124c6565b610d06565b34801561059857600080fd5b506104a76105a7366004612577565b610de8565b3480156105b857600080fd5b506104136105c73660046124c6565b610e8b565b3480156105d857600080fd5b50610544600781565b3480156105ed57600080fd5b5061043960105481565b34801561060357600080fd5b5061043961038481565b34801561061957600080fd5b50610439610f10565b34801561062e57600080fd5b5061043960095481565b34801561064457600080fd5b5061043961065336600461254c565b610f71565b34801561066457600080fd5b506104a7610f99565b34801561067957600080fd5b506104a7610fcf565b34801561068e57600080fd5b5061043960065481565b3480156106a457600080fd5b50600054600160a01b900460ff1615610413565b3480156106c457600080fd5b506104a76106d336600461254c565b611039565b3480156106e457600080fd5b506104a76106f33660046125b0565b611087565b34801561070457600080fd5b506000546001600160a01b03166103db565b34801561072257600080fd5b50600e546104139060ff1681565b34801561073c57600080fd5b506040805180820190915260058152640a6a882a6960db1b60208201526103a5565b34801561076a57600080fd5b5061043960075481565b34801561078057600080fd5b5061043960115481565b34801561079657600080fd5b506104136107a53660046124c6565b6110ce565b3480156107b657600080fd5b50600e546104139062010000900460ff1681565b3480156107d657600080fd5b506015546103db906001600160a01b031681565b3480156107f657600080fd5b506104136108053660046124c6565b6111b5565b34801561081657600080fd5b50610439600f5481565b34801561082c57600080fd5b506104a76111e1565b34801561084157600080fd5b50610439600b5481565b34801561085757600080fd5b506012546103db906001600160a01b031681565b34801561087757600080fd5b5061043960085481565b34801561088d57600080fd5b506104a761089c3660046125f3565b6113f7565b3480156108ad57600080fd5b506104136108bc36600461254c565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156108e657600080fd5b506104396108f53660046124f2565b61145b565b34801561090657600080fd5b506104a7610915366004612610565b6114af565b34801561092657600080fd5b5061043961093536600461265b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561096c57600080fd5b506104a761097b3660046125f3565b611518565b34801561098c57600080fd5b506104a761099b3660046125f3565b61155e565b3480156109ac57600080fd5b506104396202a30081565b3480156109c357600080fd5b50600e5461041390610100900460ff1681565b3480156109e257600080fd5b506104a76109f136600461254c565b6115c5565b348015610a0257600080fd5b506016546103db906001600160a01b031681565b348015610a2257600080fd5b50610413610a3136600461254c565b60176020526000908152604090205460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610aa19086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610ae65760405162461bcd60e51b8152600401610add90612689565b60405180910390fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b20573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610b4d5760405162461bcd60e51b8152600401610add90612689565b600655565b6000826001600160a01b038116610b6857600080fd5b6001600160a01b03851660009081526005602090815260408083203384529091529020546000198114610bfb5760408051808201909152601d81527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006020820152610bd69082908690611675565b6001600160a01b03871660009081526005602090815260408083203384529091529020555b610c068686866116a1565b5060019695505050505050565b60025460046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd549092610cb5929091610caf9190610ca990610c846005600a6127b8565b610c91906207a1206127c7565b610c9d906000196127fc565b610ca990600019612810565b906118ae565b90611669565b905090565b6000546001600160a01b03163314610ce45760405162461bcd60e51b8152600401610add90612689565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d305760405162461bcd60e51b8152600401610add90612689565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190612827565b610de45760405162461bcd60e51b8152602060048201526014602482015273149154d0d55157d513d2d15394d7d1905253115160621b6044820152606401610add565b5050565b6000546001600160a01b03163314610e125760405162461bcd60e51b8152600401610add90612689565b813b610e605760405162461bcd60e51b815260206004820152601a60248201527f4d5553545f42455f415f434f4e54524143545f414444524553530000000000006044820152606401610add565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360009081526005602090815260408083206001600160a01b0386168452909152812054610eb9908361165d565b3360008181526005602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610aa1565b600080600f5442610f219190612810565b90506301e13380811015610f3757505060065490565b6301e133808110610f4a5760d391505090565b6302d1cd408110610f5d57600e91505090565b630d2868808110610f6d57600291505b5090565b6002546001600160a01b0382166000908152600460205260408120549091610aad9190611669565b6000546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610add90612689565b610fcd60006118ba565b565b601560009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561101f57600080fd5b505af1158015611033573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146110635760405162461bcd60e51b8152600401610add90612689565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b031633146110b15760405162461bcd60e51b8152600401610add90612689565b600795909555600893909355600991909155600a55600b55600d55565b3360009081526005602090815260408083206001600160a01b0386168452909152812054808310611122573360009081526005602090815260408083206001600160a01b0388168452909152812055611151565b61112c81846118ae565b3360009081526005602090815260408083206001600160a01b03891684529091529020555b3360008181526005602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b0381166111cb57600080fd5b6111d63385856116a1565b506001949350505050565b6000805460ff60a01b1916600160a01b1790556111fb3390565b6001600160a01b03166112166000546001600160a01b031690565b6001600160a01b03161461123c5760405162461bcd60e51b8152600401610add90612689565b60025430600090815260046020526040812054909161125b9190611669565b9050600081116112a35760405162461bcd60e51b81526020600482015260136024820152721393d7d513d2d15394d7d1115413d4d2551151606a1b6044820152606401610add565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112d8576112d8612844565b6001600160a01b03928316602091820292909201810191909152601654604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611355919061285a565b8160018151811061136857611368612844565b6001600160a01b039283166020918202929092010152601654601354604051633b158ab160e11b81529183169263762b1562926113b49287926000928892909116904290600401612877565b600060405180830381600087803b1580156113ce57600080fd5b505af11580156113e2573d6000803e3d6000fd5b50506000805460ff60a01b1916905550505050565b6000546001600160a01b031633146114215760405162461bcd60e51b8152600401610add90612689565b801561144357600e80548215156101000261ff00199091161790554260115550565b600e80548215156101000261ff001990911617905550565b6002546015546001600160a01b03166000908152600460205260408120549091829161148691611669565b90506114a8611493610c13565b610caf6114a184600261190a565b869061190a565b9392505050565b6000546001600160a01b031633146114d95760405162461bcd60e51b8152600401610add90612689565b601280546001600160a01b039485166001600160a01b031991821617909155601380549385169382169390931790925560148054919093169116179055565b6000546001600160a01b031633146115425760405162461bcd60e51b8152600401610add90612689565b600e8054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146115885760405162461bcd60e51b8152600401610add90612689565b80156115b257600e805460ff1916821515179055600f546000036115ab5742600f555b4260105550565b600e805482151560ff1990911617905550565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610add90612689565b6001600160a01b0381166116545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610add565b610b20816118ba565b60006114a882846128e8565b60006114a88284612900565b600081848411156116995760405162461bcd60e51b8152600401610add919061245c565b505050900390565b6001600160a01b03831660009081526017602052604081205460ff161580156116e357506001600160a01b03831660009081526017602052604090205460ff16155b6117265760405162461bcd60e51b8152602060048201526014602482015273105111149154d4d7d25397d0931050d2d31254d560621b6044820152606401610add565b600054600160a01b900460ff161561174a57611743848484611916565b90506114a8565b6117526119c1565b1561175f5761175f611a3d565b611767611be7565b1561177457611774611c3a565b61177c611f13565b1561178957611789611f52565b60006117a06002548461190a90919063ffffffff16565b90506117df8160405180606001604052806026815260200161295c602691396001600160a01b0388166000908152600460205260409020549190611675565b6001600160a01b03861660009081526004602052604081209190915561180586866121f6565b61180f578161181a565b61181a868684612270565b6001600160a01b038616600090815260046020526040902054909150611840908261165d565b6001600160a01b03808716600081815260046020526040902092909255600254908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611891908590611669565b60405190815260200160405180910390a350600195945050505050565b60006114a88284612810565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006114a882846127c7565b60008061192e6002548461190a90919063ffffffff16565b905061196d8160405180606001604052806026815260200161295c602691396001600160a01b0388166000908152600460205260409020549190611675565b6001600160a01b03808716600090815260046020526040808220939093559086168152205461199c908261165d565b6001600160a01b03851660009081526004602052604090205550600190509392505050565b600e5460009060ff1680156119f157506119dd6005600a6127b8565b6119ec9064012a05f2006127c7565b600154105b8015611a0857506015546001600160a01b03163314155b8015611a1e5750600054600160a01b900460ff16155b8015610cb55750610384601054611a3591906128e8565b421015905090565b600054600160a01b900460ff1615611a5157565b600060105442611a619190612810565b90506000611a7182610384611669565b90506000611a8082600f61190a565b90506000611a8c610f10565b60015490915060005b84811015611ae357611ace611aac6007600a6127b8565b610caf611ac586611abf6007600a6127b8565b9061165d565b6001549061190a565b60015580611adb81612914565b915050611a95565b50600154611b1c90611af76005600a6127b8565b611b04906207a1206127c7565b611b10906000196127fc565b610caf90600019612810565b600255611b37611b2e8561038461190a565b6010549061165d565b6010556015546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b158015611b8357600080fd5b505af1158015611b97573d6000803e3d6000fd5b50505050827f6012dbce857565c4a40974aa5de8373a761fc429077ef0c8c8611d1e20d63fb282600154604051611bd8929190918252602082015260400190565b60405180910390a25050505050565b600e54600090610100900460ff168015611c0b5750600054600160a01b900460ff16155b8015611c2257506015546001600160a01b03163314155b8015610cb557506202a300601154611a3591906128e8565b6000805460ff60a01b1916600160a01b1781556002546012546001600160a01b0316825260046020526040822054611c7191611669565b6012546001600160a01b031660009081526004602052604080822054308352912054919250611ca0919061165d565b30600090815260046020526040808220929092556012546001600160a01b03168152908120819055611cd3826002611669565b90506000611ce183836118ae565b905080600003611cf357505050611f04565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2857611d28612844565b6001600160a01b03928316602091820292909201810191909152601654604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da5919061285a565b81600181518110611db857611db8612844565b6001600160a01b039283166020918202929092010152601654604051633b158ab160e11b81524792919091169063762b156290611e02908690600090879030904290600401612877565b600060405180830381600087803b158015611e1c57600080fd5b505af1158015611e30573d6000803e3d6000fd5b505050506000611e4982476118ae90919063ffffffff16565b9050600085118015611e5b5750600081115b15611ef957601654601254604051637c8d9fb960e11b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290839060c40160606040518083038185885af1158015611ed0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ef5919061292d565b5050505b505042601155505050505b6000805460ff60a01b19169055565b600e5460009062010000900460ff168015611f385750600054600160a01b900460ff16155b8015610cb55750506015546001600160a01b031633141590565b6000805460ff60a01b1916600160a01b17815560025430825260046020526040822054611f7e91611669565b905080600003611f8e5750611f04565b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110611fc757611fc7612844565b6001600160a01b03928316602091820292909201810191909152601654604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015612020573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612044919061285a565b8160018151811061205757612057612844565b6001600160a01b039283166020918202929092010152601654604051633b158ab160e11b815291169063762b15629061209d908690600090869030904290600401612877565b600060405180830381600087803b1580156120b757600080fd5b505af11580156120cb573d6000803e3d6000fd5b5050505060006120e483476118ae90919063ffffffff16565b6013546009546008549293506000926001600160a01b039092169161211b9161210d919061165d565b600854610caf90869061190a565b60405161753091906000818181858888f193505050503d806000811461215d576040519150601f19603f3d011682016040523d82523d6000602084013e612162565b606091505b50506014546009546008549293506001600160a01b03909116916121989161218a919061165d565b600954610caf90869061190a565b60405161753091906000818181858888f193505050503d80600081146121da576040519150601f19603f3d011682016040523d82523d6000602084013e6121df565b606091505b50505050505050506000805460ff60a01b19169055565b6001600160a01b03821660009081526003602052604081205460ff168061223557506001600160a01b03821660009081526003602052604090205460ff165b1561224257506000610aad565b6015546001600160a01b03848116911614806114a85750506015546001600160a01b03918216911614919050565b600c5460085460155460009291906001600160a01b03908116908616036122bc57600a54600c546122a09161165d565b91506122b9600a5460085461165d90919063ffffffff16565b90505b60006122dd836122d7600d548861166990919063ffffffff16565b9061190a565b90506123306122fd600b546122d7600d548961166990919063ffffffff16565b61dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd549061165d565b61dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd55600954612397906123819061237390859061165d565b600d546122d7908990611669565b306000908152600460205260409020549061165d565b30600090815260046020526040902055600754600d546123e1916123c0916122d7908990611669565b6012546001600160a01b03166000908152600460205260409020549061165d565b6012546001600160a01b0390811660009081526004602052604090209190915560025430918916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612436908590611669565b60405190815260200160405180910390a361245185826118ae565b979650505050505050565b600060208083528351808285015260005b818110156124895785810183015185820160400152820161246d565b8181111561249b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610b2057600080fd5b600080604083850312156124d957600080fd5b82356124e4816124b1565b946020939093013593505050565b60006020828403121561250457600080fd5b5035919050565b60008060006060848603121561252057600080fd5b833561252b816124b1565b9250602084013561253b816124b1565b929592945050506040919091013590565b60006020828403121561255e57600080fd5b81356114a8816124b1565b8015158114610b2057600080fd5b6000806040838503121561258a57600080fd5b8235612595816124b1565b915060208301356125a581612569565b809150509250929050565b60008060008060008060c087890312156125c957600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561260557600080fd5b81356114a881612569565b60008060006060848603121561262557600080fd5b8335612630816124b1565b92506020840135612640816124b1565b91506040840135612650816124b1565b809150509250925092565b6000806040838503121561266e57600080fd5b8235612679816124b1565b915060208301356125a5816124b1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561270f5781600019048211156126f5576126f56126be565b8085161561270257918102915b93841c93908002906126d9565b509250929050565b60008261272657506001610aad565b8161273357506000610aad565b816001811461274957600281146127535761276f565b6001915050610aad565b60ff841115612764576127646126be565b50506001821b610aad565b5060208310610133831016604e8410600b8410161715612792575081810a610aad565b61279c83836126d4565b80600019048211156127b0576127b06126be565b029392505050565b60006114a860ff841683612717565b60008160001904831182151516156127e1576127e16126be565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261280b5761280b6127e6565b500690565b600082821015612822576128226126be565b500390565b60006020828403121561283957600080fd5b81516114a881612569565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561286c57600080fd5b81516114a8816124b1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128c75784516001600160a01b0316835293830193918301916001016128a2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128fb576128fb6126be565b500190565b60008261290f5761290f6127e6565b500490565b600060018201612926576129266126be565b5060010190565b60008060006060848603121561294257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212202c32edddf546bdb553ef4d5962a597b2853d73c8ff68fe2f5f4f6f70fbcf365464736f6c634300080d003300000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d400000000000000000000000042174c941a7008e4ae81af29839a617d1a0a675000000000000000000000000009f7b26f83835c32bc042e372abd65c2afbe1716000000000000000000000000e39ec2278cb5026ddcb0116f6915dac73d78474c
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d400000000000000000000000042174c941a7008e4ae81af29839a617d1a0a675000000000000000000000000009f7b26f83835c32bc042e372abd65c2afbe1716000000000000000000000000e39ec2278cb5026ddcb0116f6915dac73d78474c
-----Decoded View---------------
Arg [0] : _joeRouter (address): 0x60ae616a2155ee3d9a68541ba4544862310933d4
Arg [1] : _autoLiquidityReceiver (address): 0x42174c941a7008e4ae81af29839a617d1a0a6750
Arg [2] : _treasuryReceiver (address): 0x09f7b26f83835c32bc042e372abd65c2afbe1716
Arg [3] : _stashInsuranceFundReceiver (address): 0xe39ec2278cb5026ddcb0116f6915dac73d78474c
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4
Arg [1] : 00000000000000000000000042174c941a7008e4ae81af29839a617d1a0a6750
Arg [2] : 00000000000000000000000009f7b26f83835c32bc042e372abd65c2afbe1716
Arg [3] : 000000000000000000000000e39ec2278cb5026ddcb0116f6915dac73d78474c
Deployed ByteCode Sourcemap
16248:16035:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30630:77;;;;;;;;;;-1:-1:-1;30696:5:0;;;;;;;;;;;;-1:-1:-1;;;30696:5:0;;;;30630:77;;;;;;;:::i;:::-;;;;;;;;17968:31;;;;;;;;;;-1:-1:-1;17968:31:0;;;;-1:-1:-1;;;;;17968:31:0;;;;;;-1:-1:-1;;;;;780:32:1;;;762:51;;750:2;735:18;17968:31:0;616:203:1;28293:207:0;;;;;;;;;;-1:-1:-1;28293:207:0;;;;;:::i;:::-;;:::i;:::-;;;1445:14:1;;1438:22;1420:41;;1408:2;1393:18;28293:207:0;1280:187:1;17677:36:0;;;;;;;;;;;;;;;;;;;1618:25:1;;;1606:2;1591:18;17677:36:0;1472:177:1;30334:96:0;;;;;;;;;;-1:-1:-1;30412:12:0;;30334:96;;18004:41;;;;;;;;;;-1:-1:-1;18004:41:0;;;;-1:-1:-1;;;;;18004:41:0;;;17576:96;;;;;;;;;;;;;;;;31864:98;;;;;;;;;;;;;:::i;:::-;;19838;;;;;;;;;;-1:-1:-1;19838:98:0;;;;;:::i;:::-;;:::i;20951:415::-;;;;;;;;;;-1:-1:-1;20951:415:0;;;;;:::i;:::-;;:::i;28619:164::-;;;;;;;;;;;;;:::i;17511:27::-;;;;;;;;;;;;;;;;30248:80;;;;;;;;;;-1:-1:-1;30248:80:0;;;;;:::i;:::-;;:::i;31508:77::-;;;;;;;;;;-1:-1:-1;16445:1:0;31508:77;;;2724:4:1;2712:17;;;2694:36;;2682:2;2667:18;31508:77:0;2552:184:1;16908:49:0;;;;;;;;;;-1:-1:-1;16908:49:0;-1:-1:-1;;16908:49:0;;32072:173;;;;;;;;;;-1:-1:-1;32072:173:0;;;;;:::i;:::-;;:::i;30053:189::-;;;;;;;;;;-1:-1:-1;30053:189:0;;;;;:::i;:::-;;:::i;27992:295::-;;;;;;;;;;-1:-1:-1;27992:295:0;;;;;:::i;:::-;;:::i;16962:39::-;;;;;;;;;;;;17000:1;16962:39;;17850:30;;;;;;;;;;;;;;;;17006:50;;;;;;;;;;;;17046:10;17006:50;;19358:474;;;;;;;;;;;;;:::i;17465:41::-;;;;;;;;;;;;;;;;30436:132;;;;;;;;;;-1:-1:-1;30436:132:0;;;;;:::i;:::-;;:::i;5614:103::-;;;;;;;;;;;;;:::i;28874:65::-;;;;;;;;;;;;;:::i;17348:37::-;;;;;;;;;;;;;;;;28789:79;;;;;;;;;;-1:-1:-1;28835:4:0;28856:6;-1:-1:-1;;;28856:6:0;;;;28855:7;28789:79;;29952:95;;;;;;;;;;-1:-1:-1;29952:95:0;;;;;:::i;:::-;;:::i;29276:428::-;;;;;;;;;;-1:-1:-1;29276:428:0;;;;;:::i;:::-;;:::i;4963:87::-;;;;;;;;;;-1:-1:-1;5009:7:0;5036:6;-1:-1:-1;;;;;5036:6:0;4963:87;;17720:22;;;;;;;;;;-1:-1:-1;17720:22:0;;;;;;;;30816:81;;;;;;;;;;-1:-1:-1;30884:7:0;;;;;;;;;;;;-1:-1:-1;;;30884:7:0;;;;30816:81;;17392:32;;;;;;;;;;;;;;;;17885:35;;;;;;;;;;;;;;;;27533:453;;;;;;;;;;-1:-1:-1;27533:453:0;;;;;:::i;:::-;;:::i;17780:24::-;;;;;;;;;;-1:-1:-1;17780:24:0;;;;;;;;;;;18050:19;;;;;;;;;;-1:-1:-1;18050:19:0;;;;-1:-1:-1;;;;;18050:19:0;;;20781:164;;;;;;;;;;-1:-1:-1;20781:164:0;;;;;:::i;:::-;;:::i;17811:34::-;;;;;;;;;;;;;;;;25580:432;;;;;;;;;;;;;:::i;17543:28::-;;;;;;;;;;;;;;;;17927:36;;;;;;;;;;-1:-1:-1;17927:36:0;;;;-1:-1:-1;;;;;17927:36:0;;;17429:31;;;;;;;;;;;;;;;;27065:218;;;;;;;;;;-1:-1:-1;27065:218:0;;;;;:::i;:::-;;:::i;28506:107::-;;;;;;;;;;-1:-1:-1;28506:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;28588:19:0;28568:4;28588:19;;;:12;:19;;;;;;;;;28506:107;29710:236;;;;;;;;;;-1:-1:-1;29710:236:0;;;;;:::i;:::-;;:::i;28945:325::-;;;;;;;;;;-1:-1:-1;28945:325:0;;;;;:::i;:::-;;:::i;27382:145::-;;;;;;;;;;-1:-1:-1;27382:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;27487:25:0;;;27464:7;27487:25;;;:17;:25;;;;;;;;:34;;;;;;;;;;;;;27382:145;27289:87;;;;;;;;;;-1:-1:-1;27289:87:0;;;;;:::i;:::-;;:::i;26768:291::-;;;;;;;;;;-1:-1:-1;26768:291:0;;;;;:::i;:::-;;:::i;16850:53::-;;;;;;;;;;;;16897:6;16850:53;;17747:28;;;;;;;;;;-1:-1:-1;17747:28:0;;;;;;;;;;;5872:201;;;;;;;;;;-1:-1:-1;5872:201:0;;;;;:::i;:::-;;:::i;18074:24::-;;;;;;;;;;-1:-1:-1;18074:24:0;;;;-1:-1:-1;;;;;18074:24:0;;;18103:41;;;;;;;;;;-1:-1:-1;18103:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28293:207;28400:10;28369:4;28382:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;28382:38:0;;;;;;;;;;:46;;;28440:36;28369:4;;28382:38;;28440:36;;;;28423:5;1618:25:1;;1606:2;1591:18;;1472:177;28440:36:0;;;;;;;;-1:-1:-1;28490:4:0;28293:207;;;;;:::o;31864:98::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;;;;;;;;;5009:7;5036:6;;31908:48:::1;::::0;-1:-1:-1;;;;;5036:6:0;;;;31934:21:::1;31908:48:::0;::::1;;;::::0;31934:21;;31908:48;5009:7;31908:48;31934:21;5036:6;31908:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31864:98::o:0;19838:::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;19907:15:::1;:23:::0;19838:98::o;20951:415::-;21080:4;21067:2;-1:-1:-1;;;;;18300:18:0;;18292:27;;;;;;-1:-1:-1;;;;;27487:25:0;;21093:24:::1;27487:25:::0;;;:17;:25;;;;;;;;21136:10:::1;27487:34:::0;;;;;;;;-1:-1:-1;;21158:31:0;::::1;21154:152;;21238:60;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;:16;;21259:5;;21238:20:::1;:60::i;:::-;-1:-1:-1::0;;;;;21200:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;21224:10:::1;21200:35:::0;;;;;;;:98;21154:152:::1;21312:30;21326:4;21332:2;21336:5;21312:13;:30::i;:::-;-1:-1:-1::0;21356:4:0::1;::::0;20951:415;-1:-1:-1;;;;;;20951:415:0:o;28619:164::-;28760:16;;28735:12;:18;;;;16730:42;28672:7;28711:18;;;;;28672:7;;28695:82;;28760:16;;28696:58;;28735:18;28696:34;;16519:13;16445:1;16519:2;:13;:::i;:::-;16505:27;;:11;:27;:::i;:::-;16590:38;;-1:-1:-1;;16590:38:0;:::i;:::-;16575:54;;-1:-1:-1;;16575:54:0;:::i;:::-;28696:14;;:34::i;:58::-;28695:64;;:82::i;:::-;28688:89;;28619:164;:::o;30248:80::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;30307:4:::1;:15:::0;;-1:-1:-1;;;;;;30307:15:0::1;-1:-1:-1::0;;;;;30307:15:0;;;::::1;::::0;;;::::1;::::0;;30248:80::o;32072:173::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;32165:49:::1;::::0;-1:-1:-1;;;32165:49:0;;32195:10:::1;32165:49;::::0;::::1;7780:51:1::0;7847:18;;;7840:34;;;-1:-1:-1;;;;;32165:29:0;::::1;::::0;::::1;::::0;7753:18:1;;32165:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32157:82;;;::::0;-1:-1:-1;;;32157:82:0;;8337:2:1;32157:82:0::1;::::0;::::1;8319:21:1::0;8376:2;8356:18;;;8349:30;-1:-1:-1;;;8395:18:1;;;8388:50;8455:18;;32157:82:0::1;8135:344:1::0;32157:82:0::1;32072:173:::0;;:::o;30053:189::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;31706:17;;30137:62:::1;;;::::0;-1:-1:-1;;;30137:62:0;;8686:2:1;30137:62:0::1;::::0;::::1;8668:21:1::0;8725:2;8705:18;;;8698:30;8764:28;8744:18;;;8737:56;8810:18;;30137:62:0::1;8484:350:1::0;30137:62:0::1;-1:-1:-1::0;;;;;30206:22:0;;;::::1;;::::0;;;:9:::1;:22;::::0;;;;:30;;-1:-1:-1;;30206:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30053:189::o;27992:295::-;28146:10;28074:4;28128:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;28128:38:0;;;;;;;;;;:54;;28171:10;28128:42;:54::i;:::-;28105:10;28087:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;28087:38:0;;;;;;;;;;;;:95;;;28194:69;1618:25:1;;;28087:38:0;;28194:69;;1591:18:1;28194:69:0;1472:177:1;19358:474:0;19404:18;19431:25;19477:19;;19459:15;:37;;;;:::i;:::-;19431:65;;19530:8;19509:17;:30;19505:322;;;-1:-1:-1;;19563:15:0;;;19358:474::o;19505:322::-;19618:8;19596:17;:31;19592:235;;19651:3;19638:16;;19424:408;19358:474;:::o;19592:235::-;19694:20;19672:17;:43;19668:159;;19739:2;19726:15;;19424:408;19358:474;:::o;19668:159::-;19781:12;19759:17;:35;19755:72;;19818:1;19805:14;;19755:72;19424:408;19358:474;:::o;30436:132::-;30545:16;;-1:-1:-1;;;;;30523:17:0;;30500:7;30523:17;;;:12;:17;;;;;;30500:7;;30523:39;;:17;:21;:39::i;5614:103::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;5679:30:::1;5706:1;5679:18;:30::i;:::-;5614:103::o:0;28874:65::-;28921:4;;;;;;;;;-1:-1:-1;;;;;28921:4:0;-1:-1:-1;;;;;28912:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28874:65::o;29952:95::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30015:19:0::1;;::::0;;;:12:::1;:19;::::0;;;;:26;;-1:-1:-1;;30015:26:0::1;30037:4;30015:26;::::0;;29952:95::o;29276:428::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;29493:12:::1;:28:::0;;;;29528:11:::1;:26:::0;;;;29561:21:::1;:46:::0;;;;29614:7:::1;:18:::0;29639:8:::1;:20:::0;29666:14:::1;:32:::0;29276:428::o;27533:453::-;27670:10;27620:4;27652:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;27652:38:0;;;;;;;;;;27701:27;;;27697:185;;27757:10;27780:1;27739:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;27739:38:0;;;;;;;;;:42;27697:185;;;27845:29;:8;27858:15;27845:12;:29::i;:::-;27822:10;27804:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;27804:38:0;;;;;;;;;:70;27697:185;27902:10;27923:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;27893:69:0;;27923:38;;;;;;;;;;;27893:69;;1618:25:1;;;27893:69:0;;27902:10;27893:69;;1591:18:1;27893:69:0;;;;;;;-1:-1:-1;27976:4:0;;27533:453;-1:-1:-1;;;27533:453:0:o;20781:164::-;20872:4;20859:2;-1:-1:-1;;;;;18300:18:0;;18292:27;;;;;;20885:36:::1;20899:10;20911:2;20915:5;20885:13;:36::i;:::-;-1:-1:-1::0;20935:4:0::1;::::0;20781:164;-1:-1:-1;;;;20781:164:0:o;25580:432::-;18366:6;:13;;-1:-1:-1;;;;18366:13:0;-1:-1:-1;;;18366:13:0;;;5194:12:::1;3697:10:::0;;3617:98;5194:12:::1;-1:-1:-1::0;;;;;5183:23:0::1;:7;5009::::0;5036:6;-1:-1:-1;;;;;5036:6:0;;4963:87;5183:7:::1;-1:-1:-1::0;;;;;5183:23:0::1;;5175:68;;;;-1:-1:-1::0;;;5175:68:0::1;;;;;;;:::i;:::-;25703:16:::2;::::0;25692:4:::2;25648:20;25671:27:::0;;;:12:::2;:27;::::0;;;;;25648:20;;25671:49:::2;::::0;:27;:31:::2;:49::i;:::-;25648:72;;25750:1;25735:12;:16;25727:48;;;::::0;-1:-1:-1;;;25727:48:0;;9041:2:1;25727:48:0::2;::::0;::::2;9023:21:1::0;9080:2;9060:18;;;9053:30;-1:-1:-1;;;9099:18:1;;;9092:49;9158:18;;25727:48:0::2;8839:343:1::0;25727:48:0::2;25806:16;::::0;;25820:1:::2;25806:16:::0;;;;;::::2;::::0;;25782:21:::2;::::0;25806:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;25806:16:0::2;25782:40;;25847:4;25829;25834:1;25829:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25829:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;25869:6:::2;::::0;:14:::2;::::0;;-1:-1:-1;;;25869:14:0;;;;:6;;;::::2;::::0;:12:::2;::::0;:14:::2;::::0;;::::2;::::0;25829:7;;25869:14;;;;;:6;:14:::2;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25859:4;25864:1;25859:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25859:24:0;;::::2;:7;::::0;;::::2;::::0;;;;;:24;25890:6:::2;::::0;25972:16:::2;::::0;25890:116:::2;::::0;-1:-1:-1;;;25890:116:0;;:6;;::::2;::::0;:58:::2;::::0;:116:::2;::::0;25949:12;;25890:6:::2;::::0;25966:4;;25972:16;;::::2;::::0;25990:15:::2;::::0;25890:116:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;18403:5:0;18394:14;;-1:-1:-1;;;;18394:14:0;;;-1:-1:-1;;;;25580:432:0:o;27065:218::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;27136:5:::1;27132:146;;;27152:16;:24:::0;;;::::1;;;;-1:-1:-1::0;;27152:24:0;;::::1;;::::0;;27208:15:::1;27185:20;:38:::0;31908:48:::1;31864:98::o:0;27132:146::-:1;27246:16;:24:::0;;;::::1;;;;-1:-1:-1::0;;27246:24:0;;::::1;;::::0;;27065:218;:::o;29710:236::-;29844:16;;29834:4;;-1:-1:-1;;;;;29834:4:0;29778:7;29821:18;;;:12;:18;;;;;;29778:7;;;;29821:40;;:22;:40::i;:::-;29794:67;;29875:65;29917:22;:20;:22::i;:::-;29875:37;29888:23;:16;29909:1;29888:20;:23::i;:::-;29875:8;;:12;:37::i;:65::-;29868:72;29710:236;-1:-1:-1;;;29710:236:0:o;28945:325::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;29112:21:::1;:46:::0;;-1:-1:-1;;;;;29112:46:0;;::::1;-1:-1:-1::0;;;;;;29112:46:0;;::::1;;::::0;;;29165:16:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;29208:26:::1;:56:::0;;;;;::::1;::::0;::::1;;::::0;;28945:325::o;27289:87::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;27351:12:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27351:19:0;;::::1;::::0;;;::::1;::::0;;27289:87::o;26768:291::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;26833:5:::1;26829:225;;;26849:10;:18:::0;;-1:-1:-1;;26849:18:0::1;::::0;::::1;;;::::0;;26880:19:::1;::::0;-1:-1:-1;26880:24:0;26876:88:::1;;26939:15;26917:19;:37:::0;26876:88:::1;26990:15;26972;:33:::0;31908:48:::1;31864:98::o:0;26829:225::-:1;27028:10;:18:::0;;;::::1;;-1:-1:-1::0;;27028:18:0;;::::1;;::::0;;26768:291;:::o;5872:201::-;5009:7;5036:6;-1:-1:-1;;;;;5036:6:0;3697:10;5183:23;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5961:22:0;::::1;5953:73;;;::::0;-1:-1:-1;;;5953:73:0;;10894:2:1;5953:73:0::1;::::0;::::1;10876:21:1::0;10933:2;10913:18;;;10906:30;10972:34;10952:18;;;10945:62;-1:-1:-1;;;11023:18:1;;;11016:36;11069:19;;5953:73:0::1;10692:402:1::0;5953:73:0::1;6037:28;6056:8;6037:18;:28::i;9321:98::-:0;9379:7;9406:5;9410:1;9406;:5;:::i;10458:98::-;10516:7;10543:5;10547:1;10543;:5;:::i;11600:240::-;11720:7;11781:12;11773:6;;;;11765:29;;;;-1:-1:-1;;;11765:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11816:5:0;;;11600:240::o;21727:927::-;-1:-1:-1;;;;;21861:17:0;;21839:4;21861:17;;;:9;:17;;;;;;;;21860:18;:43;;;;-1:-1:-1;;;;;;21883:20:0;;;;;;:9;:20;;;;;;;;21882:21;21860:43;21852:76;;;;-1:-1:-1;;;21852:76:0;;11559:2:1;21852:76:0;;;11541:21:1;11598:2;11578:18;;;11571:30;-1:-1:-1;;;11617:18:1;;;11610:50;11677:18;;21852:76:0;11357:344:1;21852:76:0;21941:6;;-1:-1:-1;;;21941:6:0;;;;21937:77;;;21965:41;21980:6;21988:9;21999:6;21965:14;:41::i;:::-;21958:48;;;;21937:77;22024:14;:12;:14::i;:::-;22020:45;;;22049:8;:6;:8::i;:::-;22077:20;:18;:20::i;:::-;22073:57;;;22108:14;:12;:14::i;:::-;22142:16;:14;:16::i;:::-;22138:49;;;22169:10;:8;:10::i;:::-;22195:17;22215:28;22226:16;;22215:6;:10;;:28;;;;:::i;:::-;22195:48;;22273:77;22298:9;22273:77;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22273:20:0;;;;;;:12;:20;;;;;;;:77;:24;:77::i;:::-;-1:-1:-1;;;;;22250:20:0;;;;;;:12;:20;;;;;:100;;;;22385:32;22263:6;22407:9;22385:13;:32::i;:::-;:84;;22460:9;22385:84;;;22420:37;22428:6;22436:9;22447;22420:7;:37::i;:::-;-1:-1:-1;;;;;22502:23:0;;;;;;:12;:23;;;;;;22357:112;;-1:-1:-1;22502:46:0;;22357:112;22502:27;:46::i;:::-;-1:-1:-1;;;;;22476:23:0;;;;;;;:12;:23;;;;;:72;;;;22612:16;;22562:68;;;;;;22590:39;;:17;;:21;:39::i;:::-;22562:68;;1618:25:1;;;1606:2;1591:18;22562:68:0;;;;;;;-1:-1:-1;22644:4:0;;21727:927;-1:-1:-1;;;;;21727:927:0:o;9702:98::-;9760:7;9787:5;9791:1;9787;:5;:::i;6233:191::-;6307:16;6326:6;;-1:-1:-1;;;;;6343:17:0;;;-1:-1:-1;;;;;;6343:17:0;;;;;;6376:40;;6326:6;;;;;;;6376:40;;6307:16;6376:40;6296:128;6233:191;:::o;10059:98::-;10117:7;10144:5;10148:1;10144;:5;:::i;21372:349::-;21476:4;21489:17;21509:28;21520:16;;21509:6;:10;;:28;;;;:::i;:::-;21489:48;;21565:75;21588:9;21565:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21565:18:0;;;;;;:12;:18;;;;;;;:75;:22;:75::i;:::-;-1:-1:-1;;;;;21544:18:0;;;;;;;:12;:18;;;;;;:96;;;;21666:16;;;;;;;:31;;21687:9;21666:20;:31::i;:::-;-1:-1:-1;;;;;21647:16:0;;;;;;:12;:16;;;;;:50;-1:-1:-1;21711:4:0;;-1:-1:-1;21372:349:0;;;;;:::o;26231:203::-;26298:10;;26278:4;;26298:10;;:41;;;;-1:-1:-1;16686:13:0;16445:1;16686:2;:13;:::i;:::-;16672:27;;:11;:27;:::i;:::-;26313:12;;:25;26298:41;:63;;;;-1:-1:-1;26357:4:0;;-1:-1:-1;;;;;26357:4:0;26343:10;:18;;26298:63;:74;;;;-1:-1:-1;26366:6:0;;-1:-1:-1;;;26366:6:0;;;;26365:7;26298:74;:130;;;;;17046:10;26396:15;;:31;;;;:::i;:::-;26376:15;:52;;26291:137;;26231:203;:::o;20113:662::-;20151:6;;-1:-1:-1;;;20151:6:0;;;;20147:19;;;20113:662::o;20147:19::-;20172:17;20210:15;;20192;:33;;;;:::i;:::-;20172:53;-1:-1:-1;20232:13:0;20248:28;20172:53;17046:10;20248:13;:28::i;:::-;20232:44;-1:-1:-1;20283:13:0;20299;20232:44;20309:2;20299:9;:13::i;:::-;20283:29;;20319:18;20340:15;:13;:15::i;:::-;20390:12;;20319:36;;-1:-1:-1;20364:23:0;20409:144;20433:5;20429:1;:9;20409:144;;;20469:76;20527:17;17000:1;20527:2;:17;:::i;:::-;20469:53;20486:35;20510:10;20487:17;17000:1;20487:2;:17;:::i;:::-;20486:23;;:35::i;:::-;20469:12;;;:16;:53::i;:76::-;20454:12;:91;20440:3;;;;:::i;:::-;;;;20409:144;;;-1:-1:-1;20595:12:0;;20580:28;;16519:13;16445:1;16519:2;:13;:::i;:::-;16505:27;;:11;:27;:::i;:::-;16590:38;;-1:-1:-1;;16590:38:0;:::i;:::-;16575:54;;-1:-1:-1;;16575:54:0;:::i;20580:28::-;20561:16;:47;20633:45;20653:24;:5;17046:10;20653:9;:24::i;:::-;20633:15;;;:19;:45::i;:::-;20615:15;:63;20696:4;;20687:21;;;-1:-1:-1;;;;;;20687:21:0;;;;-1:-1:-1;;;;;20696:4:0;;;;20687:19;;:21;;;;;20696:4;;20687:21;;;;;;;;20696:4;;20687:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20732:5;20722:47;20739:15;20756:12;;20722:47;;;;;;12020:25:1;;;12076:2;12061:18;;12054:34;12008:2;11993:18;;11846:248;20722:47:0;;;;;;;;20140:635;;;;;20113:662::o;26440:196::-;26513:16;;26493:4;;26513:16;;;;;:27;;;;-1:-1:-1;26534:6:0;;-1:-1:-1;;;26534:6:0;;;;26533:7;26513:27;:49;;;;-1:-1:-1;26558:4:0;;-1:-1:-1;;;;;26558:4:0;26544:10;:18;;26513:49;:117;;;;;16897:6;26586:20;;:43;;;;:::i;23578:1090::-;18366:6;:13;;-1:-1:-1;;;;18366:13:0;-1:-1:-1;;;18366:13:0;;;23697:16:::1;::::0;23670:21:::1;::::0;-1:-1:-1;;;;;23670:21:0::1;23657:35:::0;;:12:::1;:35;::::0;;;;;:57:::1;::::0;:39:::1;:57::i;:::-;23796:21;::::0;-1:-1:-1;;;;;23796:21:0::1;23783:35;::::0;;;:12:::1;:35;::::0;;;;;;23772:4:::1;23751:27:::0;;;;;23627:87;;-1:-1:-1;23751:68:0::1;::::0;:27;:31:::1;:68::i;:::-;23742:4;23721:27;::::0;;;:12:::1;:27;::::0;;;;;:98;;;;23839:21:::1;::::0;-1:-1:-1;;;;;23839:21:0::1;23826:35:::0;;;;;:39;;;23898:26:::1;:19:::0;23922:1:::1;23898:23;:26::i;:::-;23872:52:::0;-1:-1:-1;23931:20:0::1;23954:40;:19:::0;23872:52;23954:23:::1;:40::i;:::-;23931:63;;24007:12;24023:1;24007:17:::0;24003:46:::1;;24035:7;;;;;24003:46;24079:16;::::0;;24093:1:::1;24079:16:::0;;;;;::::1;::::0;;24055:21:::1;::::0;24079:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24079:16:0::1;24055:40;;24120:4;24102;24107:1;24102:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24102:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24142:6:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;24142:14:0;;;;:6;;;::::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;24102:7;;24142:14;;;;;:6;:14:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24132:4;24137:1;24132:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24132:24:0;;::::1;:7;::::0;;::::1;::::0;;;;;:24;24219:6:::1;::::0;:113:::1;::::0;-1:-1:-1;;;24219:113:0;;24189:21:::1;::::0;24219:6;;;::::1;::::0;:58:::1;::::0;:113:::1;::::0;24278:12;;24165:21:::1;::::0;24295:4;;24309::::1;::::0;24316:15:::1;::::0;24219:113:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24341:27;24371:40;24397:13;24371:21;:25;;:40;;;;:::i;:::-;24341:70;;24442:1;24424:15;:19;:46;;;;;24469:1;24447:19;:23;24424:46;24420:198;;;24481:6;::::0;24571:21:::1;::::0;24481:129:::1;::::0;-1:-1:-1;;;24481:129:0;;24541:4:::1;24481:129;::::0;::::1;12440:34:1::0;12490:18;;;12483:34;;;24481:6:0::1;12533:18:1::0;;;12526:34;;;12576:18;;;12569:34;-1:-1:-1;;;;;24571:21:0;;::::1;12619:19:1::0;;;12612:44;24594:15:0::1;12672:19:1::0;;;12665:35;24481:6:0;::::1;::::0;:23:::1;::::0;24512:19;;12374::1;;24481:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24420:198;-1:-1:-1::0;;24647:15:0::1;24624:20;:38:::0;-1:-1:-1;;;;18386:1:0::1;18403:5:::0;18394:14;;-1:-1:-1;;;;18394:14:0;;;23578:1090::o;26642:120::-;26711:12;;26691:4;;26711:12;;;;;:23;;;;-1:-1:-1;26728:6:0;;-1:-1:-1;;;26728:6:0;;;;26727:7;26711:23;:45;;;;-1:-1:-1;;26752:4:0;;-1:-1:-1;;;;;26752:4:0;26738:10;:18;;;26642:120::o;24674:900::-;18366:6;:13;;-1:-1:-1;;;;18366:13:0;-1:-1:-1;;;18366:13:0;;;24774:16:::1;::::0;24763:4:::1;24742:27:::0;;:12:::1;:27;::::0;;;;;:49:::1;::::0;:31:::1;:49::i;:::-;24719:72;;24804:12;24820:1;24804:17:::0;24800:46:::1;;24832:7;;;24800:46;24930:16;::::0;;24944:1:::1;24930:16:::0;;;;;::::1;::::0;;24878:21:::1;::::0;24854::::1;::::0;24930:16;24944:1;24930:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24930:16:0::1;24906:40;;24971:4;24953;24958:1;24953:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24953:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24993:6:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;24993:14:0;;;;:6;;;::::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;24953:7;;24993:14;;;;;:6;:14:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24983:4;24988:1;24983:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24983:24:0;;::::1;:7;::::0;;::::1;::::0;;;;;:24;25016:6:::1;::::0;:113:::1;::::0;-1:-1:-1;;;25016:113:0;;:6;::::1;::::0;:58:::1;::::0;:113:::1;::::0;25075:12;;25016:6:::1;::::0;25092:4;;25106::::1;::::0;25113:15:::1;::::0;25016:113:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25138:34;25175:40;25201:13;25175:21;:25;;:40;;;;:::i;:::-;25251:16;::::0;25345:21:::1;::::0;25329:11:::1;::::0;25138:77;;-1:-1:-1;25225:12:0::1;::::0;-1:-1:-1;;;;;25251:16:0;;::::1;::::0;25281:87:::1;::::0;25329:38:::1;::::0;:11;:15:::1;:38::i;:::-;25312:11;::::0;25281:43:::1;::::0;:26;;:30:::1;:43::i;:87::-;25243:142;::::0;25375:5:::1;::::0;25243:142;::::1;::::0;;;;;25375:5;25243:142:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25414:26:0::1;::::0;25528:21:::1;::::0;25512:11:::1;::::0;25224:161;;-1:-1:-1;;;;;;25414:26:0;;::::1;::::0;25454:97:::1;::::0;25512:38:::1;::::0;:11;:15:::1;:38::i;:::-;25485:21;::::0;25454:53:::1;::::0;:26;;:30:::1;:53::i;:97::-;25406:162;::::0;25558:5:::1;::::0;25406:162;::::1;::::0;;;;;25558:5;25406:162:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;18403:5:0;18394:14;;-1:-1:-1;;;;18394:14:0;;;24674:900::o;26018:207::-;-1:-1:-1;;;;;26107:18:0;;26090:4;26107:18;;;:12;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;26129:16:0;;;;;;:12;:16;;;;;;;;26107:38;26103:73;;;-1:-1:-1;26163:5:0;26156:12;;26103:73;26192:4;;-1:-1:-1;;;;;26192:12:0;;;:4;;:12;;:26;;-1:-1:-1;;26208:4:0;;-1:-1:-1;;;;;26208:10:0;;;:4;;:10;;26018:207;-1:-1:-1;26018:207:0:o;22660:912::-;22805:8;;22843:11;;22880:4;;22769:7;;22805:8;22843:11;-1:-1:-1;;;;;22880:4:0;;;22867:17;;;;22863:121;;22920:7;;22907:8;;:21;;:12;:21::i;:::-;22895:33;;22952:24;22968:7;;22952:11;;:15;;:24;;;;:::i;:::-;22937:39;;22863:121;22992:17;23012:44;23046:9;23012:29;23026:14;;23012:9;:13;;:29;;;;:::i;:::-;:33;;:44::i;:::-;22992:64;;23106:67;23129:43;23163:8;;23129:29;23143:14;;23129:9;:13;;:29;;;;:::i;:43::-;16730:42;23106:18;;:12;:18;;;;;:22;:67::i;:::-;16730:42;23085:18;;:12;:18;;;:88;23293:21;;23210:107;;23242:74;;23276:39;;:12;;:16;:39::i;:::-;23256:14;;23242:29;;:9;;:13;:29::i;:74::-;23231:4;23210:27;;;;:12;:27;;;;;;;:31;:107::i;:::-;23201:4;23180:27;;;;:12;:27;;;;;:137;23436:12;;23416:14;;23362:88;;23402:47;;:29;;:9;;:13;:29::i;:47::-;23375:21;;-1:-1:-1;;;;;23375:21:0;23362:35;;;;:12;:35;;;;;;;:39;:88::i;:::-;23337:21;;-1:-1:-1;;;;;23337:21:0;;;23324:35;;;;:12;:35;;;;;:126;;;;23510:16;;23489:4;;23464:64;;;;;23496:31;;:9;;:13;:31::i;:::-;23464:64;;1618:25:1;;;1606:2;1591:18;23464:64:0;;;;;;;23542:24;:9;23556;23542:13;:24::i;:::-;23535:31;22660:912;-1:-1:-1;;;;;;;22660:912:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;824:131::-;-1:-1:-1;;;;;899:31:1;;889:42;;879:70;;945:1;942;935:12;960:315;1028:6;1036;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1144:9;1131:23;1163:31;1188:5;1163:31;:::i;:::-;1213:5;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;960:315:1:o;1654:180::-;1713:6;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;-1:-1:-1;1805:23:1;;1654:180;-1:-1:-1;1654:180:1:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:1;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:1;2270:18;;;;2257:32;;1839:456::o;2300:247::-;2359:6;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;2467:9;2454:23;2486:31;2511:5;2486:31;:::i;2741:118::-;2827:5;2820:13;2813:21;2806:5;2803:32;2793:60;;2849:1;2846;2839:12;2864:382;2929:6;2937;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;3045:9;3032:23;3064:31;3089:5;3064:31;:::i;:::-;3114:5;-1:-1:-1;3171:2:1;3156:18;;3143:32;3184:30;3143:32;3184:30;:::i;:::-;3233:7;3223:17;;;2864:382;;;;;:::o;3251:523::-;3355:6;3363;3371;3379;3387;3395;3448:3;3436:9;3427:7;3423:23;3419:33;3416:53;;;3465:1;3462;3455:12;3416:53;-1:-1:-1;;3488:23:1;;;3558:2;3543:18;;3530:32;;-1:-1:-1;3609:2:1;3594:18;;3581:32;;3660:2;3645:18;;3632:32;;-1:-1:-1;3711:3:1;3696:19;;3683:33;;-1:-1:-1;3763:3:1;3748:19;3735:33;;-1:-1:-1;3251:523:1;-1:-1:-1;3251:523:1:o;3779:241::-;3835:6;3888:2;3876:9;3867:7;3863:23;3859:32;3856:52;;;3904:1;3901;3894:12;3856:52;3943:9;3930:23;3962:28;3984:5;3962:28;:::i;4025:529::-;4102:6;4110;4118;4171:2;4159:9;4150:7;4146:23;4142:32;4139:52;;;4187:1;4184;4177:12;4139:52;4226:9;4213:23;4245:31;4270:5;4245:31;:::i;:::-;4295:5;-1:-1:-1;4352:2:1;4337:18;;4324:32;4365:33;4324:32;4365:33;:::i;:::-;4417:7;-1:-1:-1;4476:2:1;4461:18;;4448:32;4489:33;4448:32;4489:33;:::i;:::-;4541:7;4531:17;;;4025:529;;;;;:::o;4559:388::-;4627:6;4635;4688:2;4676:9;4667:7;4663:23;4659:32;4656:52;;;4704:1;4701;4694:12;4656:52;4743:9;4730:23;4762:31;4787:5;4762:31;:::i;:::-;4812:5;-1:-1:-1;4869:2:1;4854:18;;4841:32;4882:33;4841:32;4882:33;:::i;5178:356::-;5380:2;5362:21;;;5399:18;;;5392:30;5458:34;5453:2;5438:18;;5431:62;5525:2;5510:18;;5178:356::o;5539:127::-;5600:10;5595:3;5591:20;5588:1;5581:31;5631:4;5628:1;5621:15;5655:4;5652:1;5645:15;5671:422;5760:1;5803:5;5760:1;5817:270;5838:7;5828:8;5825:21;5817:270;;;5897:4;5893:1;5889:6;5885:17;5879:4;5876:27;5873:53;;;5906:18;;:::i;:::-;5956:7;5946:8;5942:22;5939:55;;;5976:16;;;;5939:55;6055:22;;;;6015:15;;;;5817:270;;;5821:3;5671:422;;;;;:::o;6098:806::-;6147:5;6177:8;6167:80;;-1:-1:-1;6218:1:1;6232:5;;6167:80;6266:4;6256:76;;-1:-1:-1;6303:1:1;6317:5;;6256:76;6348:4;6366:1;6361:59;;;;6434:1;6429:130;;;;6341:218;;6361:59;6391:1;6382:10;;6405:5;;;6429:130;6466:3;6456:8;6453:17;6450:43;;;6473:18;;:::i;:::-;-1:-1:-1;;6529:1:1;6515:16;;6544:5;;6341:218;;6643:2;6633:8;6630:16;6624:3;6618:4;6615:13;6611:36;6605:2;6595:8;6592:16;6587:2;6581:4;6578:12;6574:35;6571:77;6568:159;;;-1:-1:-1;6680:19:1;;;6712:5;;6568:159;6759:34;6784:8;6778:4;6759:34;:::i;:::-;6829:6;6825:1;6821:6;6817:19;6808:7;6805:32;6802:58;;;6840:18;;:::i;:::-;6878:20;;6098:806;-1:-1:-1;;;6098:806:1:o;6909:140::-;6967:5;6996:47;7037:4;7027:8;7023:19;7017:4;6996:47;:::i;7054:168::-;7094:7;7160:1;7156;7152:6;7148:14;7145:1;7142:21;7137:1;7130:9;7123:17;7119:45;7116:71;;;7167:18;;:::i;:::-;-1:-1:-1;7207:9:1;;7054:168::o;7227:127::-;7288:10;7283:3;7279:20;7276:1;7269:31;7319:4;7316:1;7309:15;7343:4;7340:1;7333:15;7359:112;7391:1;7417;7407:35;;7422:18;;:::i;:::-;-1:-1:-1;7456:9:1;;7359:112::o;7476:125::-;7516:4;7544:1;7541;7538:8;7535:34;;;7549:18;;:::i;:::-;-1:-1:-1;7586:9:1;;7476:125::o;7885:245::-;7952:6;8005:2;7993:9;7984:7;7980:23;7976:32;7973:52;;;8021:1;8018;8011:12;7973:52;8053:9;8047:16;8072:28;8094:5;8072:28;:::i;9319:127::-;9380:10;9375:3;9371:20;9368:1;9361:31;9411:4;9408:1;9401:15;9435:4;9432:1;9425:15;9451:251;9521:6;9574:2;9562:9;9553:7;9549:23;9545:32;9542:52;;;9590:1;9587;9580:12;9542:52;9622:9;9616:16;9641:31;9666:5;9641:31;:::i;9707:980::-;9969:4;10017:3;10006:9;10002:19;10048:6;10037:9;10030:25;10074:2;10112:6;10107:2;10096:9;10092:18;10085:34;10155:3;10150:2;10139:9;10135:18;10128:31;10179:6;10214;10208:13;10245:6;10237;10230:22;10283:3;10272:9;10268:19;10261:26;;10322:2;10314:6;10310:15;10296:29;;10343:1;10353:195;10367:6;10364:1;10361:13;10353:195;;;10432:13;;-1:-1:-1;;;;;10428:39:1;10416:52;;10523:15;;;;10488:12;;;;10464:1;10382:9;10353:195;;;-1:-1:-1;;;;;;;10604:32:1;;;;10599:2;10584:18;;10577:60;-1:-1:-1;;;10668:3:1;10653:19;10646:35;10565:3;9707:980;-1:-1:-1;;;9707:980:1:o;11099:128::-;11139:3;11170:1;11166:6;11163:1;11160:13;11157:39;;;11176:18;;:::i;:::-;-1:-1:-1;11212:9:1;;11099:128::o;11232:120::-;11272:1;11298;11288:35;;11303:18;;:::i;:::-;-1:-1:-1;11337:9:1;;11232:120::o;11706:135::-;11745:3;11766:17;;;11763:43;;11786:18;;:::i;:::-;-1:-1:-1;11833:1:1;11822:13;;11706:135::o;12711:306::-;12799:6;12807;12815;12868:2;12856:9;12847:7;12843:23;12839:32;12836:52;;;12884:1;12881;12874:12;12836:52;12913:9;12907:16;12897:26;;12963:2;12952:9;12948:18;12942:25;12932:35;;13007:2;12996:9;12992:18;12986:25;12976:35;;12711:306;;;;;:::o
Swarm Source
ipfs://2c32edddf546bdb553ef4d5962a597b2853d73c8ff68fe2f5f4f6f70fbcf3654
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.