More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 229,987 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mine | 18294565 | 50 secs ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294561 | 58 secs ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294538 | 1 min ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294532 | 1 min ago | IN | 0 ETH | 0.0000012 | ||||
Multi Deposit | 18294529 | 2 mins ago | IN | 0.024456 ETH | 0.00000001 | ||||
Mine | 18294529 | 2 mins ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294526 | 2 mins ago | IN | 0 ETH | 0.00000121 | ||||
Mine | 18294502 | 2 mins ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294496 | 3 mins ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294493 | 3 mins ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294490 | 3 mins ago | IN | 0 ETH | 0.0000012 | ||||
Mine | 18294462 | 4 mins ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294458 | 4 mins ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294455 | 4 mins ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294432 | 5 mins ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294426 | 5 mins ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294420 | 5 mins ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294396 | 6 mins ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294390 | 6 mins ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294387 | 6 mins ago | IN | 0 ETH | 0.00000122 | ||||
Mine | 18294384 | 6 mins ago | IN | 0 ETH | 0.00000123 | ||||
Mine | 18294353 | 7 mins ago | IN | 0 ETH | 0.00000129 | ||||
Mine | 18294349 | 8 mins ago | IN | 0 ETH | 0.00000129 | ||||
Mine | 18294323 | 8 mins ago | IN | 0 ETH | 0.00000128 | ||||
Mine | 18294320 | 9 mins ago | IN | 0 ETH | 0.00000129 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18293761 | 27 mins ago | 0.024 ETH | ||||
18293755 | 27 mins ago | 0.00026504 ETH | ||||
18293755 | 27 mins ago | 0.0002511 ETH | ||||
18293755 | 27 mins ago | 0.0004104 ETH | ||||
18293755 | 27 mins ago | 0.0000456 ETH | ||||
18133958 | 3 days ago | 0.024 ETH | ||||
18133945 | 3 days ago | 0.00021709 ETH | ||||
18133945 | 3 days ago | 0.00021105 ETH | ||||
18133945 | 3 days ago | 0.0001368 ETH | ||||
18133945 | 3 days ago | 0.0000152 ETH | ||||
17991716 | 7 days ago | 0.024 ETH | ||||
17991710 | 7 days ago | 0.00080111 ETH | ||||
17991710 | 7 days ago | 0.00076658 ETH | ||||
17991710 | 7 days ago | 0.0004104 ETH | ||||
17991710 | 7 days ago | 0.0000456 ETH | ||||
17688527 | 14 days ago | 0.024 ETH | ||||
17558391 | 17 days ago | 0.0015593 ETH | ||||
17558391 | 17 days ago | 0.00154173 ETH | ||||
17558391 | 17 days ago | 0.000855 ETH | ||||
17558391 | 17 days ago | 0.000095 ETH | ||||
17000700 | 29 days ago | 0.024 ETH | ||||
16989821 | 30 days ago | 0.00101185 ETH | ||||
16989821 | 30 days ago | 0.00101075 ETH | ||||
16681047 | 37 days ago | 0.024 ETH | ||||
16681040 | 37 days ago | 0.0003515 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
KONKHypersPoolV2
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.28; import "./IERC20.sol"; import "./Ownable.sol"; import "./ReentrancyGuard.sol"; import "./SafeMath.sol"; import "./IERC20.sol"; import "./Ownable.sol"; import "./ReentrancyGuard.sol"; import "./SafeMath.sol"; import "./IERC4626.sol"; import "./IERC721.sol"; import "./IKONKMaster.sol"; import "./IHypersoundV3.sol"; import "./IBlastPoints.sol"; import "./IBlast.sol"; contract KONKHypersPoolV2 is ReentrancyGuard, Ownable { using SafeMath for uint256; struct Pool { uint256 totalDeposits; bool locked; uint256 smartRampVotes; uint256 aggressiveVotes; uint256 hypersMined; uint256 sessionFees; } struct UserDeposit { uint256 amount; bool isSmartRamp; } struct CommunityDiscount { address tokenAddress; uint256 discountBps; bool isActive; bool isERC721; } IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002); IBlastPoints public constant BLAST_POINTS = IBlastPoints(0x2536FE9ab3F511540F2f9e2eC2A805005C3Dd800); IERC4626 public constant stKONK = IERC4626(0x90fC7ABB6734dF30b9dC726f6f92EefD9c3c7Bb2); IERC20 public constant KONK = IERC20(0x2b9712190Ce9570C1CA860D55B1623Bd88BF96fF); IKONKMaster public masterContract; IHypersoundV3 public hypersound; IERC20 public hypersToken; uint256 public poolSize; bool public isPaused; // To pause deposits during pool size changes uint256 public constant MAX_POOLS = 100; uint256 public currentPoolPointer = 1; // Points to pool accepting deposits uint256 public miningPoolPointer = 1; // Points to pool being mined uint256 public fixedDeposit; uint256 public stakerDiscount; uint256 public fixedFeeAmount; uint256 public platformFees; uint256 public totalHypersMined; uint256 public miningSessionCount; uint256 public leftoverHypers; uint256 public requiredKONKAmount = 10_000 * 1e18; // 10k KONK/stKONK minimum address public pointsOperator; address public currentMiningBot; uint256 public lastMinedPool; bool public miningSessionInProgress; // Pool management mapping(uint256 => Pool) public pools; mapping(uint256 => mapping(address => UserDeposit)) public poolDeposits; mapping(uint256 => address[]) public poolDepositors; mapping(address => CommunityDiscount) public communityDiscounts; address[] public communityTokens; uint256 public platformFeePercentage; // Multisig variables address[5] public signers; uint256 public constant REQUIRED_SIGNATURES = 3; mapping(address => bool) public isSigner; uint256 public emergencyWithdrawalProposalId; mapping(uint256 => mapping(address => bool)) public hasSignedWithdrawal; uint256 public emergencyWithdrawalSignatures; uint256 public currentSessionId; address public feeRecipient; // Wallet to receive remaining platform fees bool public maxDepositLimitEnabled; uint256 public maxDepositLimit; uint256 public totalContributions; uint256 public previousSessionHypersMined; uint256 public stakerThreshold = 10000 * 1e18; // 10,000 KONK default // Events event Deposited(address indexed user, uint256 amount, uint256 fee, bool isSmartRamp, uint256 poolId); event PoolFilled(uint256 poolId, uint256 smartRampVotes, uint256 aggressiveVotes, uint256 poolAmount); event MiningSessionStarted(uint256 sessionId, uint256 requiredAmount, address bot); event MiningComplete(uint256 sessionId, uint256 totalRewards); event RewardDistributed(address indexed user, uint256 amount, uint256 sessionId); event PoolReset(uint256 indexed newPoolId); event PoolYieldAndGasClaimed(uint256 yieldAmount, uint256 gasAmount); event EmergencyWithdrawalExecuted(uint256 proposalId, uint256 ethAmount, uint256 hypersAmount); event SignerUpdated(address oldSigner, address newSigner); event LeftoverHypersWithdrawn(address recipient, uint256 amount); event CommunityDiscountAdded(address token, uint256 discountBps, bool isERC721); event CommunityDiscountRemoved(address token); event RequiredKONKAmountUpdated(uint256 newAmount); event PoolSizeUpdated(uint256 newSize); event ContractPaused(bool isPaused); event FeeRecipientUpdated(address newRecipient); event MaxDepositLimitUpdated(uint256 newLimit); event MaxDepositLimitToggled(bool enabled); event HypersMined(uint256 sessionId, uint256 poolId, uint256 hypersMined); event StakerThresholdUpdated(uint256 newAmount); constructor( address _pointsOperator, address _masterContract, address _hypersound, address _hypersToken, uint256 _fixedDeposit, uint256 _fixedFeeAmount, uint256 _stakerDiscount, address _feeRecipient, uint256 _initialMaxDepositLimit, bool _maxDepositLimitEnabled, address[5] memory _initialSigners ) Ownable(msg.sender) { pointsOperator = _pointsOperator; BLAST_POINTS.configurePointsOperator(_pointsOperator); masterContract = IKONKMaster(_masterContract); hypersound = IHypersoundV3(_hypersound); hypersToken = IERC20(_hypersToken); poolSize = 0.024 ether; fixedDeposit = _fixedDeposit; fixedFeeAmount = _fixedFeeAmount; stakerDiscount = _stakerDiscount; platformFeePercentage = 10; currentSessionId = 1; feeRecipient = _feeRecipient; maxDepositLimit = _initialMaxDepositLimit; maxDepositLimitEnabled = _maxDepositLimitEnabled; BLAST.configureClaimableYield(); BLAST.configureClaimableGas(); for (uint i = 0; i < 5; i++) { require(_initialSigners[i] != address(0), "Invalid signer"); signers[i] = _initialSigners[i]; isSigner[_initialSigners[i]] = true; } } function updatePoolSize(uint256 _newPoolSize) external onlyOwner { require(isPaused, "Contract must be paused"); require(_newPoolSize > 0, "Invalid pool size"); require(address(this).balance == 0, "Contract must be empty"); // Check if any pools have deposits or are locked for (uint256 i = 1; i <= MAX_POOLS; i++) { require(!pools[i].locked, "Pools are locked"); require(pools[i].totalDeposits == 0, "Pools have deposits"); } poolSize = _newPoolSize; emit PoolSizeUpdated(_newPoolSize); } function setPaused(bool _isPaused) external onlyOwner { isPaused = _isPaused; emit ContractPaused(_isPaused); } function setRequiredKONKAmount(uint256 _newAmount) external onlyOwner { requiredKONKAmount = _newAmount; emit RequiredKONKAmountUpdated(_newAmount); } function addCommunityDiscount( address _token, uint256 _discountBps, bool _isERC721 ) external onlyOwner { require(_discountBps <= 5000, "Max 50% discount"); require(!communityDiscounts[_token].isActive, "Already added"); communityDiscounts[_token] = CommunityDiscount({ tokenAddress: _token, discountBps: _discountBps, isActive: true, isERC721: _isERC721 }); communityTokens.push(_token); emit CommunityDiscountAdded(_token, _discountBps, _isERC721); } function removeCommunityDiscount(address _token) external onlyOwner { require(communityDiscounts[_token].isActive, "Not active"); communityDiscounts[_token].isActive = false; emit CommunityDiscountRemoved(_token); } function calculateFee(address user) public view returns (uint256) { uint256 konkBalance = KONK.balanceOf(user); uint256 stKONKBalance = stKONK.balanceOf(user); require( konkBalance >= requiredKONKAmount || stKONKBalance >= requiredKONKAmount, "Must have 10k KONK or stKONK" ); uint256 fee = fixedFeeAmount; if (stKONKBalance >= stakerThreshold) { fee = fee.mul(10000 - stakerDiscount).div(10000); } // Find highest eligible community discount uint256 highestDiscount = 0; for (uint256 i = 0; i < communityTokens.length; i++) { address token = communityTokens[i]; CommunityDiscount memory discount = communityDiscounts[token]; if (discount.isActive) { if (discount.isERC721) { if (IERC721(token).balanceOf(user) > 0 && discount.discountBps > highestDiscount) { highestDiscount = discount.discountBps; } } else { if (IERC20(token).balanceOf(user) > 0 && discount.discountBps > highestDiscount) { highestDiscount = discount.discountBps; } } } } // Apply highest eligible discount if any if (highestDiscount > 0) { fee = fee.mul(10000 - highestDiscount).div(10000); } return fee; } function multiDeposit(uint256 times, bool isSmartRamp) external payable nonReentrant { require(!isPaused, "Contract is paused"); require(times > 0, "Invalid deposit count"); uint256 feePerDeposit = calculateFee(msg.sender); uint256 depositAmount = fixedDeposit + feePerDeposit; uint256 totalRequiredAmount = depositAmount.mul(times); require(msg.value == totalRequiredAmount, "Incorrect ETH amount"); // Check max deposit limit if enabled if (maxDepositLimitEnabled) { require(msg.value <= maxDepositLimit, "Exceeds max deposit limit"); } uint256 remainingAmount = msg.value.sub(feePerDeposit.mul(times)); uint256 currentPool = currentPoolPointer; while (remainingAmount > 0) { Pool storage pool = pools[currentPool]; uint256 spaceInPool = poolSize.sub(pool.totalDeposits); if (spaceInPool > 0) { uint256 amountToDeposit = remainingAmount > spaceInPool ? spaceInPool : remainingAmount; _addToPool(msg.sender, currentPool, amountToDeposit, isSmartRamp); remainingAmount = remainingAmount.sub(amountToDeposit); if (pool.totalDeposits >= poolSize) { pool.locked = true; emit PoolFilled(currentPool, pool.smartRampVotes, pool.aggressiveVotes, pool.totalDeposits); currentPool = currentPool == MAX_POOLS ? 1 : currentPool + 1; } } else { currentPool = currentPool == MAX_POOLS ? 1 : currentPool + 1; } totalContributions += times; } // Add fees to both total and session uint256 totalFees = feePerDeposit.mul(times); pools[currentPoolPointer].sessionFees = pools[currentPoolPointer].sessionFees.add(totalFees); platformFees = platformFees.add(totalFees); currentPoolPointer = currentPool; } function _addToPool(address user, uint256 poolId, uint256 amount, bool isSmartRamp) internal { Pool storage pool = pools[poolId]; if (poolDeposits[poolId][user].amount == 0) { poolDepositors[poolId].push(user); } poolDeposits[poolId][user].amount = poolDeposits[poolId][user].amount.add(amount); poolDeposits[poolId][user].isSmartRamp = isSmartRamp; pool.totalDeposits = pool.totalDeposits.add(amount); if (isSmartRamp) { pool.smartRampVotes = pool.smartRampVotes.add(amount); } else { pool.aggressiveVotes = pool.aggressiveVotes.add(amount); } } function startMining() external { require(masterContract.authorizedBotWallets(msg.sender), "Not authorized"); require(!miningSessionInProgress, "Mining in progress"); Pool storage poolToMine = pools[miningPoolPointer]; require(poolToMine.totalDeposits > 0, "No deposits to mine"); require(poolToMine.locked, "Pool not locked"); miningSessionInProgress = true; currentMiningBot = msg.sender; lastMinedPool = miningPoolPointer; (bool success, ) = currentMiningBot.call{value: poolToMine.totalDeposits}(""); require(success, "Failed to send funds to bot"); emit MiningSessionStarted(currentSessionId, poolToMine.totalDeposits, msg.sender); } function mine(uint256 batchSize) external { require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized"); require(batchSize >= 1 && batchSize <= 1000, "Invalid batch size"); hypersound.mineBatch(batchSize, ""); } function completeMining() external { require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized"); Pool storage currentPool = pools[miningPoolPointer]; uint256 hypersToDistribute = hypersToken.balanceOf(address(this)); if (hypersToDistribute > 0) { totalHypersMined = totalHypersMined.add(hypersToDistribute); distributeRewards(miningPoolPointer, hypersToDistribute); currentPool.hypersMined = hypersToDistribute; previousSessionHypersMined = hypersToDistribute; } uint256 sessionHypersMined = currentPool.hypersMined; emit HypersMined(currentSessionId, lastMinedPool, sessionHypersMined); // Revenue Sharing with KONK Stakers uint256 sessionFeeShare = currentPool.sessionFees.mul(platformFeePercentage).div(100); uint256 remainingSessionFees = currentPool.sessionFees.sub(sessionFeeShare); if (sessionFeeShare > 0) { (bool feeSuccess, ) = address(masterContract).call{value: sessionFeeShare}( abi.encodeWithSignature("receivePlatformFees()") ); require(feeSuccess, "Fee transfer failed"); } // Send remaining fee to team wallet if (remainingSessionFees > 0) { (bool success, ) = feeRecipient.call{value: remainingSessionFees}(""); require(success, "Failed to send remaining fees"); } claimYieldAndGasForCurrentPool(); // Reset current pool currentPool.totalDeposits = 0; currentPool.locked = false; currentPool.smartRampVotes = 0; currentPool.aggressiveVotes = 0; currentPool.hypersMined = 0; currentPool.sessionFees = 0; // Clear depositor data address[] storage depositors = poolDepositors[miningPoolPointer]; for (uint256 i = 0; i < depositors.length; i++) { delete poolDeposits[miningPoolPointer][depositors[i]]; } delete poolDepositors[miningPoolPointer]; // Iincrement the mining pointer miningPoolPointer = miningPoolPointer == MAX_POOLS ? 1 : miningPoolPointer + 1; miningSessionInProgress = false; currentMiningBot = address(0); emit MiningComplete(currentSessionId, hypersToDistribute); currentSessionId++; } function distributeRewards(uint256 poolId, uint256 rewardsAmount) internal { if (rewardsAmount == 0 || pools[poolId].totalDeposits == 0) return; uint256 totalDistributed = 0; address[] storage depositors = poolDepositors[poolId]; for (uint256 i = 0; i < depositors.length; i++) { address depositor = depositors[i]; uint256 userDeposit = poolDeposits[poolId][depositor].amount; if (userDeposit > 0) { uint256 userRewardShare = userDeposit.mul(rewardsAmount).div(pools[poolId].totalDeposits); if (userRewardShare > 0) { require(hypersToken.transfer(depositor, userRewardShare), "Transfer failed"); totalDistributed = totalDistributed.add(userRewardShare); emit RewardDistributed(depositor, userRewardShare, currentSessionId); } } } uint256 leftover = rewardsAmount.sub(totalDistributed); if (leftover > 0) { leftoverHypers = leftoverHypers.add(leftover); } } function claimYieldAndGasForCurrentPool() internal { uint256 initialBalance = address(this).balance; BLAST.claimAllYield(address(this), address(this)); uint256 afterYieldBalance = address(this).balance; uint256 yieldAmount = afterYieldBalance.sub(initialBalance); BLAST.claimMaxGas(address(this), address(this)); uint256 finalBalance = address(this).balance; uint256 gasAmount = finalBalance.sub(afterYieldBalance); uint256 totalAmount = yieldAmount.add(gasAmount); if (totalAmount > 0) { (bool success, ) = address(masterContract).call{value: totalAmount}( abi.encodeWithSignature("receiveYieldAndGas()") ); require(success, "Failed to send yield and gas"); masterContract.claimYieldAndGas(); emit PoolYieldAndGasClaimed(yieldAmount, gasAmount); } } // Emergency Functions function proposeEmergencyWithdrawal() external onlyOwner { require(emergencyWithdrawalSignatures == 0, "Proposal pending"); emergencyWithdrawalProposalId++; emergencyWithdrawalSignatures = 0; } function signEmergencyWithdrawal() external { require(isSigner[msg.sender], "Not a signer"); require(!hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender], "Already signed"); hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender] = true; emergencyWithdrawalSignatures++; } function executeEmergencyWithdrawal() external onlyOwner { require(emergencyWithdrawalSignatures >= REQUIRED_SIGNATURES, "Insufficient signatures"); _executeWithdrawal(); emergencyWithdrawalSignatures = 0; for (uint i = 0; i < 5; i++) { hasSignedWithdrawal[emergencyWithdrawalProposalId][signers[i]] = false; } } function _executeWithdrawal() private { uint256 ethBalance = address(this).balance; uint256 hypersBalance = hypersToken.balanceOf(address(this)); (bool success, ) = owner().call{value: ethBalance}(""); require(success, "ETH transfer failed"); require(hypersToken.transfer(owner(), hypersBalance), "HYPERS transfer failed"); emit EmergencyWithdrawalExecuted(emergencyWithdrawalProposalId, ethBalance, hypersBalance); // Reset all state for (uint256 i = 1; i <= MAX_POOLS; i++) { delete pools[i]; address[] storage depositors = poolDepositors[i]; for (uint256 j = 0; j < depositors.length; j++) { delete poolDeposits[i][depositors[j]]; } delete poolDepositors[i]; } miningSessionCount = 0; platformFees = 0; totalHypersMined = 0; lastMinedPool = 0; leftoverHypers = 0; miningSessionInProgress = false; currentMiningBot = address(0); totalHypersMined = 0; totalContributions = 0; } // View Functions function getPoolInfo(uint256 poolId) external view returns ( bool isLocked, uint256 totalDeposits, uint256 smartRampVotes, uint256 aggressiveVotes, uint256 contributorCount, bool isCurrentlyMining, uint256 hypersMined ) { require(poolId > 0 && poolId <= MAX_POOLS, "Invalid pool ID"); Pool storage pool = pools[poolId]; return ( pool.locked, pool.totalDeposits, pool.smartRampVotes, pool.aggressiveVotes, poolDepositors[poolId].length, (miningSessionInProgress && miningPoolPointer == poolId), pool.hypersMined ); } function getUserPositions(address user) external view returns ( uint256[] memory poolIds, uint256[] memory amounts, bool[] memory isSmartRamps, bool[] memory isPoolLocked, bool[] memory isPoolMining ) { poolIds = new uint256[](MAX_POOLS); amounts = new uint256[](MAX_POOLS); isSmartRamps = new bool[](MAX_POOLS); isPoolLocked = new bool[](MAX_POOLS); isPoolMining = new bool[](MAX_POOLS); uint256 count = 0; for (uint256 i = 1; i <= MAX_POOLS; i++) { UserDeposit storage deposit = poolDeposits[i][user]; if (deposit.amount > 0) { poolIds[count] = i; amounts[count] = deposit.amount; isSmartRamps[count] = deposit.isSmartRamp; isPoolLocked[count] = pools[i].locked; isPoolMining[count] = (miningSessionInProgress && miningPoolPointer == i); count++; } } // Trim arrays to actual size assembly { mstore(poolIds, count) mstore(amounts, count) mstore(isSmartRamps, count) mstore(isPoolLocked, count) mstore(isPoolMining, count) } } function getAllPoolStatuses() external view returns ( uint256[] memory totalDeposits, bool[] memory locked, bool[] memory mining, uint256[] memory depositorCounts ) { totalDeposits = new uint256[](MAX_POOLS); locked = new bool[](MAX_POOLS); mining = new bool[](MAX_POOLS); depositorCounts = new uint256[](MAX_POOLS); for (uint256 i = 0; i < MAX_POOLS; i++) { Pool storage pool = pools[i + 1]; totalDeposits[i] = pool.totalDeposits; locked[i] = pool.locked; mining[i] = (miningSessionInProgress && miningPoolPointer == i + 1); depositorCounts[i] = poolDepositors[i + 1].length; } } function getPoolSizeInfo() external view returns ( uint256 currentSize, bool canChange, uint256[] memory depositAmounts ) { currentSize = poolSize; canChange = true; depositAmounts = new uint256[](MAX_POOLS); for (uint256 i = 1; i <= MAX_POOLS; i++) { Pool storage pool = pools[i]; if (pool.locked) { canChange = false; } depositAmounts[i-1] = pool.totalDeposits; } return (currentSize, canChange, depositAmounts); } function getSessionMiningInfo(uint256 poolId) external view returns ( uint256 hypersMined, bool isCurrentlyMining, uint256 currentSession ) { require(poolId > 0 && poolId <= MAX_POOLS, "Invalid pool ID"); Pool storage pool = pools[poolId]; return ( pool.hypersMined, (miningSessionInProgress && miningPoolPointer == poolId), currentSessionId ); } function getPoolStats() external view returns ( uint256 successfulSessions, uint256 totalMined, uint256 contributions ) { // successful sessions is just currentSessionId - 1 return ( currentSessionId > 0 ? currentSessionId - 1 : 0, totalHypersMined, totalContributions ); } // Admin functions function setFee(uint256 _fixedFeeAmount, uint256 _stakerDiscount) external onlyOwner { fixedFeeAmount = _fixedFeeAmount; stakerDiscount = _stakerDiscount; } function withdrawLeftoverHypers(uint256 amount) external onlyOwner { require(amount <= leftoverHypers, "Insufficient leftover HYPERS"); leftoverHypers = leftoverHypers.sub(amount); require(hypersToken.transfer(msg.sender, amount), "HYPERS transfer failed"); emit LeftoverHypersWithdrawn(msg.sender, amount); } function setPlatformFeePercentage(uint256 _newPercentage) external onlyOwner { require(_newPercentage <= 100, "Percentage must be between 0 and 100"); platformFeePercentage = _newPercentage; } function setFeeRecipient(address _newRecipient) external onlyOwner { require(_newRecipient != address(0), "Invalid address"); feeRecipient = _newRecipient; emit FeeRecipientUpdated(_newRecipient); } function setMaxDepositLimit(uint256 _newLimit) external onlyOwner { require(_newLimit > 0, "Invalid limit"); maxDepositLimit = _newLimit; emit MaxDepositLimitUpdated(_newLimit); } function toggleMaxDepositLimit(bool _enabled) external onlyOwner { maxDepositLimitEnabled = _enabled; emit MaxDepositLimitToggled(_enabled); } function updateMasterContract(address _newMasterContract) external onlyOwner { require(_newMasterContract != address(0), "Invalid address"); masterContract = IKONKMaster(_newMasterContract); } function updatePointsOperator(address _newOperator) external onlyOwner { require(_newOperator != address(0), "Invalid address"); pointsOperator = _newOperator; BLAST_POINTS.configurePointsOperator(_newOperator); } function setStakerThreshold(uint256 _amount) external onlyOwner { stakerThreshold = _amount * 1e18; emit StakerThresholdUpdated(stakerThreshold); } function replaceSigner(address oldSigner, address newSigner) external onlyOwner { require(isSigner[oldSigner] && !isSigner[newSigner], "Invalid signers"); require(newSigner != address(0), "Invalid address"); for (uint i = 0; i < 5; i++) { if (signers[i] == oldSigner) { signers[i] = newSigner; break; } } isSigner[oldSigner] = false; isSigner[newSigner] = true; emit SignerUpdated(oldSigner, newSigner); } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IBlast { function configureClaimableYield() external; function configureClaimableGas() external; function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256); function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IBlastPoints { function configurePointsOperator(address operator) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IERC4626 { function balanceOf(address owner) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IERC721 { function balanceOf(address owner) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IHypersoundV3 { function mineBatch(uint256 nbTx, bytes calldata extraData) external; function balanceOf(address account) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; interface IKONKMaster { function getStakedAmount(address user) external view returns (uint256); function authorizedBotWallets(address) external view returns (bool); function claimYieldAndGas() external; function receivePlatformFees() external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "./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. */ abstract contract Ownable is Context { address private _owner; error OwnableUnauthorizedAccount(address account); error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; } function _nonReentrantAfter() private { _status = _NOT_ENTERED; } function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; library SafeMath { 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); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pointsOperator","type":"address"},{"internalType":"address","name":"_masterContract","type":"address"},{"internalType":"address","name":"_hypersound","type":"address"},{"internalType":"address","name":"_hypersToken","type":"address"},{"internalType":"uint256","name":"_fixedDeposit","type":"uint256"},{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"uint256","name":"_initialMaxDepositLimit","type":"uint256"},{"internalType":"bool","name":"_maxDepositLimitEnabled","type":"bool"},{"internalType":"address[5]","name":"_initialSigners","type":"address[5]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"discountBps","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isERC721","type":"bool"}],"name":"CommunityDiscountAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"CommunityDiscountRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"ContractPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isSmartRamp","type":"bool"},{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hypersAmount","type":"uint256"}],"name":"EmergencyWithdrawalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hypersMined","type":"uint256"}],"name":"HypersMined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LeftoverHypersWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"MaxDepositLimitToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"MaxDepositLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRewards","type":"uint256"}],"name":"MiningComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requiredAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"bot","type":"address"}],"name":"MiningSessionStarted","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":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolAmount","type":"uint256"}],"name":"PoolFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newPoolId","type":"uint256"}],"name":"PoolReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSize","type":"uint256"}],"name":"PoolSizeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasAmount","type":"uint256"}],"name":"PoolYieldAndGasClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"RequiredKONKAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"RewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"newSigner","type":"address"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"StakerThresholdUpdated","type":"event"},{"inputs":[],"name":"BLAST","outputs":[{"internalType":"contract IBlast","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLAST_POINTS","outputs":[{"internalType":"contract IBlastPoints","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KONK","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_POOLS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REQUIRED_SIGNATURES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_discountBps","type":"uint256"},{"internalType":"bool","name":"_isERC721","type":"bool"}],"name":"addCommunityDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"communityDiscounts","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"discountBps","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"bool","name":"isERC721","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"communityTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"completeMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentMiningBot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPoolPointer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSessionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalProposalId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalSignatures","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fixedDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fixedFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllPoolStatuses","outputs":[{"internalType":"uint256[]","name":"totalDeposits","type":"uint256[]"},{"internalType":"bool[]","name":"locked","type":"bool[]"},{"internalType":"bool[]","name":"mining","type":"bool[]"},{"internalType":"uint256[]","name":"depositorCounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"getPoolInfo","outputs":[{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"contributorCount","type":"uint256"},{"internalType":"bool","name":"isCurrentlyMining","type":"bool"},{"internalType":"uint256","name":"hypersMined","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolSizeInfo","outputs":[{"internalType":"uint256","name":"currentSize","type":"uint256"},{"internalType":"bool","name":"canChange","type":"bool"},{"internalType":"uint256[]","name":"depositAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolStats","outputs":[{"internalType":"uint256","name":"successfulSessions","type":"uint256"},{"internalType":"uint256","name":"totalMined","type":"uint256"},{"internalType":"uint256","name":"contributions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"getSessionMiningInfo","outputs":[{"internalType":"uint256","name":"hypersMined","type":"uint256"},{"internalType":"bool","name":"isCurrentlyMining","type":"bool"},{"internalType":"uint256","name":"currentSession","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserPositions","outputs":[{"internalType":"uint256[]","name":"poolIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bool[]","name":"isSmartRamps","type":"bool[]"},{"internalType":"bool[]","name":"isPoolLocked","type":"bool[]"},{"internalType":"bool[]","name":"isPoolMining","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"hasSignedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersound","outputs":[{"internalType":"contract IHypersoundV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastMinedPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leftoverHypers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterContract","outputs":[{"internalType":"contract IKONKMaster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDepositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDepositLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchSize","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"miningPoolPointer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningSessionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningSessionInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"times","type":"uint256"},{"internalType":"bool","name":"isSmartRamp","type":"bool"}],"name":"multiDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"poolDeposits","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isSmartRamp","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"hypersMined","type":"uint256"},{"internalType":"uint256","name":"sessionFees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSessionHypersMined","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeCommunityDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldSigner","type":"address"},{"internalType":"address","name":"newSigner","type":"address"}],"name":"replaceSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredKONKAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxDepositLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setPlatformFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setRequiredKONKAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setStakerThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stKONK","outputs":[{"internalType":"contract IERC4626","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakerDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakerThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"toggleMaxDepositLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalContributions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHypersMined","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMasterContract","type":"address"}],"name":"updateMasterContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"updatePointsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPoolSize","type":"uint256"}],"name":"updatePoolSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawLeftoverHypers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600755600160085569021e19e0c9bab240000060105569021e19e0c9bab2400000602955348015610035575f5ffd5b50604051614291380380614291833981016040819052610054916103de565b60015f55338061007e57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100878161035e565b50601180546001600160a01b0319166001600160a01b038d169081179091556040516336b91f2b60e01b81526004810191909152732536fe9ab3f511540f2f9e2ec2a805005c3dd800906336b91f2b906024015f604051808303815f87803b1580156100f1575f5ffd5b505af1158015610103573d5f5f3e3d5ffd5b5050600280546001600160a01b03199081166001600160a01b038f8116919091179092556003805482168e8416179055600480549091168c8316178155665543df729c000060055560098b9055600b8a9055600a898155601a5560016024556025805460268990559289166001600160a81b031990931692909217600160a01b87151502179091556040805163784c3b3d60e11b81529051734300000000000000000000000000000000000002945063f098767a9350818301925f9282900301818387803b1580156101d3575f5ffd5b505af11580156101e5573d5f5f3e3d5ffd5b505050507343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610235575f5ffd5b505af1158015610247573d5f5f3e3d5ffd5b505f925050505b600581101561034d575f82826005811061026a5761026a6104f3565b60200201516001600160a01b0316036102b65760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610075565b8181600581106102c8576102c86104f3565b6020020151601b82600581106102e0576102e06104f3565b0180546001600160a01b0319166001600160a01b0392909216919091179055600160205f848460058110610316576103166104f3565b602090810291909101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161024e565b505050505050505050505050610507565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b03811681146103c5575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f5f5f5f5f6101e08c8e0312156103f9575f5ffd5b6104028c6103af565b9a5061041060208d016103af565b995061041e60408d016103af565b985061042c60608d016103af565b60808d015160a08e015160c08f0151929a509098509650945061045160e08d016103af565b6101008d01516101208e01519195509350801515811461046f575f5ffd5b915061015f8c018d13610480575f5ffd5b60405160a081016001600160401b03811182821017156104a2576104a26103ca565b604052806101e08e018f8111156104b7575f5ffd5b6101408f015b818110156104dc576104ce816103af565b8352602092830192016104bd565b505050809150509295989b509295989b9093969950565b634e487b7160e01b5f52603260045260245ffd5b613d7d806105145f395ff3fe60806040526004361061042f575f3560e01c80638da5cb5b1161022b578063d3e4047a11610129578063e74b981b116100b3578063f2c1b7e411610078578063f2c1b7e414610d89578063f2fde38b14610d9e578063f4993bbd14610dbd578063f76e947b14610dd1578063fe74801514610de6575f5ffd5b8063e74b981b14610d0f578063e994561814610d2e578063ea6c2e8414610d42578063ec5bc0b214610d55578063f1511da814610d6a575f5ffd5b8063dda26edf116100f9578063dda26edf14610c48578063dfe6083514610c5d578063e3d9109f14610c7c578063e72328ce14610c9b578063e726d30b14610cba575f5ffd5b8063d3e4047a14610bbc578063d54720fb14610bdb578063d87f44fb14610bf0578063dca7bbe614610c0f575f5ffd5b8063ac4afa38116101b5578063b63c44e71161017a578063b63c44e714610b25578063b6e19e0614610b3a578063bbb8518814610b59578063cd446e2214610b88578063cdd78cfc14610ba7575f5ffd5b8063ac4afa3814610a4b578063acddb1c014610aca578063b0a8d5ca14610adf578063b187bd2614610af3578063b3381df614610b0c575f5ffd5b80639ac18b19116101fb5780639ac18b19146109d15780639ec9ac41146109e5578063a28a01cf146109fa578063a64f9ff614610a21578063ac332e2714610a36575f5ffd5b80638da5cb5b14610971578063941aef641461098e57806397d75776146109a2578063992f9075146109bc575f5ffd5b806347fb45531161033857806359e1a699116102c25780637df73e27116102875780637df73e27146108dd578063813584981461090a5780638333903e1461091e57806386a8f1ca1461093d57806389ef75a21461095c575f5ffd5b806359e1a6991461085a5780635c0252491461088a5780636597a1301461089f578063715018a6146108b45780637a86b282146108c8575f5ffd5b80634ec18db9116103085780634ec18db9146107bc57806350891ecf146107d157806352f7c988146107f857806358a34fee1461081757806358d70cf614610836575f5ffd5b806347fb4553146107385780634b8f9025146107575780634d1f287d1461077e5780634d4748981461079d575f5ffd5b80632ab38b5f116103b95780633da79c15116103895780633da79c151461063a5780633efeb0ea14610659578063457fb905146106db578063465f5eb8146106fa5780634690484014610719575f5ffd5b80632ab38b5f1461058b5780632f380b35146105aa578063336535281461060257806337c0892314610625575f5ffd5b80631d86e01b116103ff5780631d86e01b146104d25780632079fb9a1461050957806321b79d98146105285780632a1501271461053c5780632a6bc2dd1461055b575f5ffd5b8063068ed2f51461043a57806316c38b3c14610462578063194a4e7e146104835780631b844f2314610498575f5ffd5b3661043657005b5f5ffd5b348015610445575f5ffd5b5061044f600e5481565b6040519081526020015b60405180910390f35b34801561046d575f5ffd5b5061048161047c366004613970565b610e05565b005b34801561048e575f5ffd5b5061044f600c5481565b3480156104a3575f5ffd5b506104b76104b2366004613992565b610e55565b60408051938452911515602084015290820152606001610459565b3480156104dd575f5ffd5b506104f16104ec3660046139a9565b610ee1565b6040516001600160a01b039091168152602001610459565b348015610514575f5ffd5b506104f1610523366004613992565b610f15565b348015610533575f5ffd5b50610481610f34565b348015610547575f5ffd5b506104816105563660046139e4565b6111a8565b348015610566575f5ffd5b5061057a6105753660046139e4565b6111f8565b604051610459959493929190613a69565b348015610596575f5ffd5b506104816105a5366004613992565b6113fe565b3480156105b5575f5ffd5b506105c96105c4366004613992565b6115da565b60408051971515885260208801969096529486019390935260608501919091526080840152151560a083015260c082015260e001610459565b34801561060d575f5ffd5b50610616611694565b60405161045993929190613ad5565b348015610630575f5ffd5b5061044f60275481565b348015610645575f5ffd5b506012546104f1906001600160a01b031681565b348015610664575f5ffd5b506106a96106733660046139e4565b60186020525f90815260409020805460018201546002909201546001600160a01b03909116919060ff8082169161010090041684565b604080516001600160a01b03909516855260208501939093529015159183019190915215156060820152608001610459565b3480156106e6575f5ffd5b506003546104f1906001600160a01b031681565b348015610705575f5ffd5b5061044f6107143660046139e4565b61172b565b348015610724575f5ffd5b506025546104f1906001600160a01b031681565b348015610743575f5ffd5b506011546104f1906001600160a01b031681565b348015610762575f5ffd5b506104f1732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b348015610789575f5ffd5b50610481610798366004613970565b611aa0565b3480156107a8575f5ffd5b506104816107b7366004613992565b611af5565b3480156107c7575f5ffd5b5061044f60055481565b3480156107dc575f5ffd5b506104f17390fc7abb6734df30b9dc726f6f92eefd9c3c7bb281565b348015610803575f5ffd5b506104816108123660046139a9565b611bed565b348015610822575f5ffd5b50610481610831366004613992565b611c00565b348015610841575f5ffd5b5061084a611c3d565b6040516104599493929190613afe565b348015610865575f5ffd5b5060255461087a90600160a01b900460ff1681565b6040519015158152602001610459565b348015610895575f5ffd5b5061044f60105481565b3480156108aa575f5ffd5b5061044f60245481565b3480156108bf575f5ffd5b50610481611dd6565b3480156108d3575f5ffd5b5061044f60215481565b3480156108e8575f5ffd5b5061087a6108f73660046139e4565b602080525f908152604090205460ff1681565b348015610915575f5ffd5b5061044f606481565b348015610929575f5ffd5b50610481610938366004613992565b611de9565b348015610948575f5ffd5b50610481610957366004613992565b611e53565b348015610967575f5ffd5b5061044f600f5481565b34801561097c575f5ffd5b506001546001600160a01b03166104f1565b348015610999575f5ffd5b50610481611fab565b3480156109ad575f5ffd5b506104f16002604360981b0181565b3480156109c7575f5ffd5b5061044f60235481565b3480156109dc575f5ffd5b5061044f600381565b3480156109f0575f5ffd5b5061044f600b5481565b348015610a05575f5ffd5b506104f1732b9712190ce9570c1ca860d55b1623bd88bf96ff81565b348015610a2c575f5ffd5b5061044f600d5481565b348015610a41575f5ffd5b5061044f60135481565b348015610a56575f5ffd5b50610a9d610a65366004613992565b60156020525f9081526040902080546001820154600283015460038401546004850154600590950154939460ff909316939192909186565b604080519687529415156020870152938501929092526060840152608083015260a082015260c001610459565b348015610ad5575f5ffd5b5061044f600a5481565b348015610aea575f5ffd5b50610481612010565b348015610afe575f5ffd5b5060065461087a9060ff1681565b348015610b17575f5ffd5b5060145461087a9060ff1681565b348015610b30575f5ffd5b5061044f60265481565b348015610b45575f5ffd5b506004546104f1906001600160a01b031681565b348015610b64575f5ffd5b50610b6d612455565b60408051938452602084019290925290820152606001610459565b348015610b93575f5ffd5b506002546104f1906001600160a01b031681565b348015610bb2575f5ffd5b5061044f601a5481565b348015610bc7575f5ffd5b506104f1610bd6366004613992565b612487565b348015610be6575f5ffd5b5061044f60295481565b348015610bfb575f5ffd5b50610481610c0a366004613b55565b6124af565b348015610c1a575f5ffd5b5061087a610c29366004613b92565b602260209081525f928352604080842090915290825290205460ff1681565b348015610c53575f5ffd5b5061044f60075481565b348015610c68575f5ffd5b50610481610c77366004613992565b612654565b348015610c87575f5ffd5b50610481610c96366004613bbc565b6126d0565b348015610ca6575f5ffd5b50610481610cb53660046139e4565b61285b565b348015610cc5575f5ffd5b50610cfa610cd4366004613b92565b601660209081525f92835260408084209091529082529020805460019091015460ff1682565b60408051928352901515602083015201610459565b348015610d1a575f5ffd5b50610481610d293660046139e4565b6128e0565b348015610d39575f5ffd5b5061048161295c565b610481610d50366004613be4565b612a40565b348015610d60575f5ffd5b5061044f60085481565b348015610d75575f5ffd5b50610481610d84366004613992565b612d52565b348015610d94575f5ffd5b5061044f60285481565b348015610da9575f5ffd5b50610481610db83660046139e4565b612da1565b348015610dc8575f5ffd5b50610481612dde565b348015610ddc575f5ffd5b5061044f60095481565b348015610df1575f5ffd5b50610481610e003660046139e4565b612ea6565b610e0d612f58565b6006805460ff19168215159081179091556040519081527f752d7e161ff5146f80e3820893176eb40532811e5e20400dfdde57455213706a906020015b60405180910390a150565b5f5f5f5f84118015610e68575060648411155b610eab5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064015b60405180910390fd5b5f848152601560205260409020600481015460145460ff168015610ed0575085600854145b602454935093509350509193909250565b6017602052815f5260405f208181548110610efa575f80fd5b5f918252602090912001546001600160a01b03169150829050565b601b8160058110610f24575f80fd5b01546001600160a01b0316905081565b60025460405163102c61db60e11b81523360048201526001600160a01b0390911690632058c3b690602401602060405180830381865afa158015610f7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9e9190613c12565b610fba5760405162461bcd60e51b8152600401610ea290613c2d565b60145460ff16156110025760405162461bcd60e51b81526020600482015260126024820152714d696e696e6720696e2070726f677265737360701b6044820152606401610ea2565b6008545f90815260156020526040902080546110565760405162461bcd60e51b81526020600482015260136024820152724e6f206465706f7369747320746f206d696e6560681b6044820152606401610ea2565b600181015460ff1661109c5760405162461bcd60e51b815260206004820152600f60248201526e141bdbdb081b9bdd081b1bd8dad959608a1b6044820152606401610ea2565b6014805460ff19166001179055601280546001600160a01b0319163390811790915560085460135581546040515f9291905f6040518083038185875af1925050503d805f8114611107576040519150601f19603f3d011682016040523d82523d5f602084013e61110c565b606091505b505090508061115d5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f2073656e642066756e647320746f20626f7400000000006044820152606401610ea2565b602454825460408051928352602083019190915233908201527f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56906060015b60405180910390a15050565b6111b0612f58565b6001600160a01b0381166111d65760405162461bcd60e51b8152600401610ea290613c55565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516064808252610ca08201909252606091829182918291829160208201610c80803683375050604080516064808252610ca08201909252929750905060208201610c80803683375050604080516064808252610ca08201909252929650905060208201610c80803683375050604080516064808252610ca08201909252929550905060208201610c80803683375050604080516064808252610ca08201909252929450905060208201610c80803683370190505090505f60015b606481116113e4575f8181526016602090815260408083206001600160a01b038c16845290915290208054156113d157818884815181106112f8576112f8613c7e565b602002602001018181525050805f015487848151811061131a5761131a613c7e565b60209081029190910101526001810154865160ff9091169087908590811061134457611344613c7e565b9115156020928302919091018201525f83815260159091526040902060010154855160ff9091169086908590811061137e5761137e613c7e565b9115156020928302919091019091015260145460ff1680156113a1575081600854145b8484815181106113b3576113b3613c7e565b91151560209283029190910190910152826113cd81613ca6565b9350505b50806113dc81613ca6565b9150506112b5565b508086528085528084528083528082525091939590929450565b611406612f58565b60065460ff166114585760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d757374206265207061757365640000000000000000006044820152606401610ea2565b5f811161149b5760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420706f6f6c2073697a6560781b6044820152606401610ea2565b47156114e25760405162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206d75737420626520656d70747960501b6044820152606401610ea2565b60015b606481116115a4575f8181526015602052604090206001015460ff16156115415760405162461bcd60e51b815260206004820152601060248201526f141bdbdb1cc8185c99481b1bd8dad95960821b6044820152606401610ea2565b5f81815260156020526040902054156115925760405162461bcd60e51b8152602060048201526013602482015272506f6f6c732068617665206465706f7369747360681b6044820152606401610ea2565b8061159c81613ca6565b9150506114e5565b5060058190556040518181527f26511ca45be0d4875d9b7e537ac00b167db8490791a33ce6220f729c3b4b1d6d90602001610e4a565b5f5f5f5f5f5f5f5f881180156115f1575060648811155b61162f5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b6044820152606401610ea2565b5f888152601560209081526040808320600181015481546002830154600384015460179096529390952054601454929560ff92831695909493909216801561167857508d600854145b600490960154949e939d50919b50995097509195509350915050565b600554604080516064808252610ca082019092526001916060919060208201610c808036833701905050905060015b60648111611725575f818152601560205260409020600181015460ff16156116e9575f93505b8054836116f7600185613cbe565b8151811061170757611707613c7e565b6020908102919091010152508061171d81613ca6565b9150506116c3565b50909192565b6040516370a0823160e01b81526001600160a01b03821660048201525f908190732b9712190ce9570c1ca860d55b1623bd88bf96ff906370a0823190602401602060405180830381865afa158015611785573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a99190613cd1565b6040516370a0823160e01b81526001600160a01b03851660048201529091505f907390fc7abb6734df30b9dc726f6f92eefd9c3c7bb2906370a0823190602401602060405180830381865afa158015611804573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118289190613cd1565b90506010548210158061183d57506010548110155b6118895760405162461bcd60e51b815260206004820152601c60248201527f4d75737420686176652031306b204b4f4e4b206f722073744b4f4e4b000000006044820152606401610ea2565b600b5460295482106118be576118bb6127106118b5600a546127106118ae9190613cbe565b8490612f85565b90612f99565b90505b5f805b601954811015611a73575f601982815481106118df576118df613c7e565b5f9182526020808320909101546001600160a01b039081168084526018835260409384902084516080810186528154909316835260018101549383019390935260029092015460ff80821615801595840195909552610100909104161515606082015290925090611a69578060600151156119e1576040516370a0823160e01b81526001600160a01b038a811660048301525f91908416906370a0823190602401602060405180830381865afa15801561199b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119bf9190613cd1565b1180156119cf5750838160200151115b156119dc57806020015193505b611a69565b6040516370a0823160e01b81526001600160a01b038a811660048301525f91908416906370a0823190602401602060405180830381865afa158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613cd1565b118015611a5c5750838160200151115b15611a6957806020015193505b50506001016118c1565b508015611a9757611a946127106118b5611a8d8483613cbe565b8590612f85565b91505b50949350505050565b611aa8612f58565b60258054821515600160a01b0260ff60a01b199091161790556040517fbdfddb6ae83f3dafb9f94ca774388421bf5573b5c8763dbab2f96511c87c639990610e4a90831515815260200190565b6012546001600160a01b031633148015611b11575060145460ff165b611b2d5760405162461bcd60e51b8152600401610ea290613c2d565b60018110158015611b4057506103e88111155b611b815760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642062617463682073697a6560701b6044820152606401610ea2565b60035460408051630e49303160e01b81526004810184905260248101919091525f60448201526001600160a01b0390911690630e493031906064015b5f604051808303815f87803b158015611bd4575f5ffd5b505af1158015611be6573d5f5f3e3d5ffd5b5050505050565b611bf5612f58565b600b91909155600a55565b611c08612f58565b60108190556040518181527f012688e2f4a63cb758d04a7a991d09df928807a7c418a629d72071b2c6b2accc90602001610e4a565b604080516064808252610ca082019092526060918291829182919060208201610c80803683375050604080516064808252610ca08201909252929650905060208201610c80803683375050604080516064808252610ca08201909252929550905060208201610c80803683375050604080516064808252610ca08201909252929450905060208201610c80803683370190505090505f5b6064811015611dcf575f601581611cec846001613ce8565b81526020019081526020015f209050805f0154868381518110611d1157611d11613c7e565b60209081029190910101526001810154855160ff90911690869084908110611d3b57611d3b613c7e565b9115156020928302919091019091015260145460ff168015611d685750611d63826001613ce8565b600854145b848381518110611d7a57611d7a613c7e565b9115156020928302919091019091015260175f611d98846001613ce8565b81526020019081526020015f2080549050838381518110611dbb57611dbb613c7e565b602090810291909101015250600101611cd4565b5090919293565b611dde612f58565b611de75f612fa4565b565b611df1612f58565b6064811115611e4e5760405162461bcd60e51b8152602060048201526024808201527f50657263656e74616765206d757374206265206265747765656e203020616e646044820152630203130360e41b6064820152608401610ea2565b601a55565b611e5b612f58565b600f54811115611ead5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e74206c6566746f76657220485950455253000000006044820152606401610ea2565b600f54611eba9082612ff5565b600f556004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611f0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f309190613c12565b611f755760405162461bcd60e51b8152602060048201526016602482015275121654115494c81d1c985b9cd9995c8819985a5b195960521b6044820152606401610ea2565b60408051338152602081018390527f0ecf5be15240a847a9f3963fef8cbc9eda7cf7caed536d6971f4e7f3c6a5e0069101610e4a565b611fb3612f58565b60235415611ff65760405162461bcd60e51b815260206004820152601060248201526f50726f706f73616c2070656e64696e6760801b6044820152606401610ea2565b60218054905f61200583613ca6565b90915550505f602355565b6012546001600160a01b03163314801561202c575060145460ff165b6120485760405162461bcd60e51b8152600401610ea290613c2d565b6008545f908152601560205260408082206004805492516370a0823160e01b815230918101919091529092916001600160a01b0316906370a0823190602401602060405180830381865afa1580156120a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c69190613cd1565b905080156120f857600d546120db9082613000565b600d556008546120eb908261300b565b6004820181905560288190555b600482015460245460135460408051928352602083019190915281018290527f0de03e91c741ab97e64c944eee97ccacb3639b1309c68360a0c2de1f563aea059060600160405180910390a15f61216360646118b5601a548760050154612f8590919063ffffffff16565b90505f61217d828660050154612ff590919063ffffffff16565b905081156122525760025460408051600481526024810182526020810180516001600160e01b0316631365388360e31b17905290515f926001600160a01b03169185916121ca9190613cfb565b5f6040518083038185875af1925050503d805f8114612204576040519150601f19603f3d011682016040523d82523d5f602084013e612209565b606091505b50509050806122505760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610ea2565b505b80156122fa576025546040515f916001600160a01b03169083908381818185875af1925050503d805f81146122a2576040519150601f19603f3d011682016040523d82523d5f602084013e6122a7565b606091505b50509050806122f85760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f2073656e642072656d61696e696e6720666565730000006044820152606401610ea2565b505b6123026131f8565b5f80865560018601805460ff19169055600286018190556003860181905560048601819055600586018190556008548152601760205260408120905b81548110156123a65760165f60085481526020019081526020015f205f83838154811061236d5761236d613c7e565b5f9182526020808320909101546001600160a01b0316835282019290925260400181209081556001908101805460ff191690550161233e565b506008545f9081526017602052604081206123c091613935565b6064600854146123dd576008546123d8906001613ce8565b6123e0565b60015b6008556014805460ff19169055601280546001600160a01b031916905560245460408051918252602082018790527f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44910160405180910390a160248054905f61244883613ca6565b9190505550505050505050565b5f5f5f5f60245411612467575f612476565b60016024546124769190613cbe565b600d54602754925092509250909192565b60198181548110612496575f80fd5b5f918252602090912001546001600160a01b0316905081565b6124b7612f58565b6113888211156124fc5760405162461bcd60e51b815260206004820152601060248201526f13585e080d4c0948191a5cd8dbdd5b9d60821b6044820152606401610ea2565b6001600160a01b0383165f9081526018602052604090206002015460ff16156125575760405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481859191959609a1b6044820152606401610ea2565b604080516080810182526001600160a01b038581168083526020808401878152600185870181815288151560608089018281525f888152601888528b81209a518b549a166001600160a01b03199a8b16178b5595518a860155925160029099018054935115156101000261ff00199a15159a909a1661ffff1990941693909317989098179091556019805492830181559092527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695018054909416831790935584519182528101869052928301527f6e9eac1d80a491d4b9ce5dfd25ec88d449f7f61ce9dcb87d0e5104a7d0af2173910160405180910390a1505050565b61265c612f58565b5f811161269b5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b1a5b5a5d609a1b6044820152606401610ea2565b60268190556040518181527f514bf0f65cb844af227a51e123dbb8b5be8fac221f8feeb9d20591e81c46e50b90602001610e4a565b6126d8612f58565b6001600160a01b0382165f90815260208052604090205460ff16801561271557506001600160a01b0381165f90815260208052604090205460ff16155b6127535760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964207369676e65727360881b6044820152606401610ea2565b6001600160a01b0381166127795760405162461bcd60e51b8152600401610ea290613c55565b5f5b60058110156127f157826001600160a01b0316601b82600581106127a1576127a1613c7e565b01546001600160a01b0316036127e95781601b82600581106127c5576127c5613c7e565b0180546001600160a01b0319166001600160a01b03929092169190911790556127f1565b60010161277b565b506001600160a01b038281165f81815260208080526040808320805460ff1990811690915594861680845292819020805490951660011790945583519283528201527f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb910161119c565b612863612f58565b6001600160a01b0381166128895760405162461bcd60e51b8152600401610ea290613c55565b601180546001600160a01b0319166001600160a01b0383169081179091556040516336b91f2b60e01b81526004810191909152732536fe9ab3f511540f2f9e2ec2a805005c3dd800906336b91f2b90602401611bbd565b6128e8612f58565b6001600160a01b03811661290e5760405162461bcd60e51b8152600401610ea290613c55565b602580546001600160a01b0319166001600160a01b0383169081179091556040519081527f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc290602001610e4a565b335f90815260208052604090205460ff166129a85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309039b4b3b732b960a11b6044820152606401610ea2565b6021545f90815260226020908152604080832033845290915290205460ff1615612a055760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cda59db995960921b6044820152606401610ea2565b6021545f9081526022602090815260408083203384529091528120805460ff191660011790556023805491612a3983613ca6565b9190505550565b612a4861347f565b60065460ff1615612a905760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610ea2565b5f8211612ad75760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a590819195c1bdcda5d0818dbdd5b9d605a1b6044820152606401610ea2565b5f612ae13361172b565b90505f81600954612af29190613ce8565b90505f612aff8286612f85565b9050803414612b475760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b6044820152606401610ea2565b602554600160a01b900460ff1615612bab57602654341115612bab5760405162461bcd60e51b815260206004820152601960248201527f45786365656473206d6178206465706f736974206c696d6974000000000000006044820152606401610ea2565b5f612bc0612bb98588612f85565b3490612ff5565b6007549091505b8115612cec575f8181526015602052604081208054600554919291612beb91612ff5565b90508015612cb0575f818511612c015784612c03565b815b9050612c113385838c6134d6565b612c1b8582612ff5565b9450600554835f015410612caa576001838101805460ff1916909117905560028301546003840154845460408051888152602081019490945283019190915260608201527f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea9060800160405180910390a160648414612ca457612c9f846001613ce8565b612ca7565b60015b93505b50612cce565b60648314612cc857612cc3836001613ce8565b612ccb565b60015b92505b8860275f828254612cdf9190613ce8565b90915550612bc792505050565b5f612cf78689612f85565b6007545f90815260156020526040902060050154909150612d189082613000565b6007545f90815260156020526040902060050155600c54612d399082613000565b600c555060075550612d4e92506135e4915050565b5050565b612d5a612f58565b612d6c81670de0b6b3a7640000613d11565b60298190556040519081527f42c772aeb5eb05ed61c4bab5686efd5ed83a2cdb1781737583d9a8c564630c9c90602001610e4a565b612da9612f58565b6001600160a01b038116612dd257604051631e4fbdf760e01b81525f6004820152602401610ea2565b612ddb81612fa4565b50565b612de6612f58565b60036023541015612e395760405162461bcd60e51b815260206004820152601760248201527f496e73756666696369656e74207369676e6174757265730000000000000000006044820152606401610ea2565b612e416135ea565b5f60238190555b6005811015612ddb576021545f90815260226020526040812081601b8460058110612e7557612e75613c7e565b01546001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101612e48565b612eae612f58565b6001600160a01b0381165f9081526018602052604090206002015460ff16612f055760405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606401610ea2565b6001600160a01b0381165f81815260186020908152604091829020600201805460ff1916905590519182527fe3d73073356b89f23adf77ab42c7f4227575b6f8866f2cf44df1e1df998e02499101610e4a565b6001546001600160a01b03163314611de75760405163118cdaa760e01b8152336004820152602401610ea2565b5f612f908284613d11565b90505b92915050565b5f612f908284613d28565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f612f908284613cbe565b5f612f908284613ce8565b80158061302357505f82815260156020526040902054155b1561302c575050565b5f828152601760205260408120815b81548110156131cd575f82828154811061305757613057613c7e565b5f9182526020808320909101548883526016825260408084206001600160a01b039092168085529190925291205490915080156131c3575f878152601560205260408120546130aa906118b5848a612f85565b905080156131c1576004805460405163a9059cbb60e01b81526001600160a01b03868116938201939093526024810184905291169063a9059cbb906044016020604051808303815f875af1158015613104573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131289190613c12565b6131665760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610ea2565b6131708682613000565b9550826001600160a01b03167f53118bff2fb56701752f5bf54053d24fb83cec92f9f6ce664b90c38a2991caa4826024546040516131b8929190918252602082015260400190565b60405180910390a25b505b505060010161303b565b505f6131d98484612ff5565b90508015611be657600f546131ee9082613000565b600f555050505050565b60405163430021db60e11b81523060048201819052602482015247906002604360981b019063860043b6906044016020604051808303815f875af1158015613242573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132669190613cd1565b50475f6132738284612ff5565b60405163662aa11d60e01b8152306004820181905260248201529091506002604360981b019063662aa11d906044016020604051808303815f875af11580156132be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132e29190613cd1565b50475f6132ef8285612ff5565b90505f6132fc8483613000565b905080156134775760025460408051600481526024810182526020810180516001600160e01b031663f128c71760e01b17905290515f926001600160a01b03169184916133499190613cfb565b5f6040518083038185875af1925050503d805f8114613383576040519150601f19603f3d011682016040523d82523d5f602084013e613388565b606091505b50509050806133d95760405162461bcd60e51b815260206004820152601c60248201527f4661696c656420746f2073656e64207969656c6420616e6420676173000000006044820152606401610ea2565b60025f9054906101000a90046001600160a01b03166001600160a01b03166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613425575f5ffd5b505af1158015613437573d5f5f3e3d5ffd5b505060408051888152602081018790527f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a7935001905060405180910390a1505b505050505050565b60025f54036134d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ea2565b60025f55565b5f838152601560209081526040808320601683528184206001600160a01b038916855290925282205490910361353d575f8481526017602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0387161790555b5f8481526016602090815260408083206001600160a01b03891684529091529020546135699084613000565b5f8581526016602090815260408083206001600160a01b038a1684529091529020908155600101805460ff191683151517905580546135a89084613000565b815581156135c95760028101546135bf9084613000565b6002820155611be6565b60038101546135d89084613000565b60038201555050505050565b60015f55565b600480546040516370a0823160e01b8152309281019290925247915f916001600160a01b0316906370a0823190602401602060405180830381865afa158015613635573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190613cd1565b90505f61366e6001546001600160a01b031690565b6001600160a01b0316836040515f6040518083038185875af1925050503d805f81146136b5576040519150601f19603f3d011682016040523d82523d5f602084013e6136ba565b606091505b50509050806137015760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610ea2565b6004546001600160a01b031663a9059cbb6137246001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561376e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137929190613c12565b6137d75760405162461bcd60e51b8152602060048201526016602482015275121654115494c81d1c985b9cd9995c8819985a5b195960521b6044820152606401610ea2565b602154604080519182526020820185905281018390527fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c9060600160405180910390a160015b606481116138f8575f81815260156020908152604080832083815560018101805460ff1916905560028101849055600381018490556004810184905560050183905560179091528120905b81548110156138ce5760165f8481526020019081526020015f205f83838154811061389557613895613c7e565b5f9182526020808320909101546001600160a01b0316835282019290925260400181209081556001908101805460ff1916905501613868565b505f8281526017602052604081206138e591613935565b50806138f081613ca6565b91505061381d565b50505f600e819055600c819055600d8190556013819055600f8190556014805460ff19169055601280546001600160a01b03191690556027555050565b5080545f8255905f5260205f2090810190612ddb91905b8082111561395f575f815560010161394c565b5090565b8015158114612ddb575f5ffd5b5f60208284031215613980575f5ffd5b813561398b81613963565b9392505050565b5f602082840312156139a2575f5ffd5b5035919050565b5f5f604083850312156139ba575f5ffd5b50508035926020909101359150565b80356001600160a01b03811681146139df575f5ffd5b919050565b5f602082840312156139f4575f5ffd5b612f90826139c9565b5f8151808452602084019350602083015f5b82811015613a2d578151865260209586019590910190600101613a0f565b5093949350505050565b5f8151808452602084019350602083015f5b82811015613a2d5781511515865260209586019590910190600101613a49565b60a081525f613a7b60a08301886139fd565b8281036020840152613a8d81886139fd565b90508281036040840152613aa18187613a37565b90508281036060840152613ab58186613a37565b90508281036080840152613ac98185613a37565b98975050505050505050565b8381528215156020820152606060408201525f613af560608301846139fd565b95945050505050565b608081525f613b1060808301876139fd565b8281036020840152613b228187613a37565b90508281036040840152613b368186613a37565b90508281036060840152613b4a81856139fd565b979650505050505050565b5f5f5f60608486031215613b67575f5ffd5b613b70846139c9565b9250602084013591506040840135613b8781613963565b809150509250925092565b5f5f60408385031215613ba3575f5ffd5b82359150613bb3602084016139c9565b90509250929050565b5f5f60408385031215613bcd575f5ffd5b613bd6836139c9565b9150613bb3602084016139c9565b5f5f60408385031215613bf5575f5ffd5b823591506020830135613c0781613963565b809150509250929050565b5f60208284031215613c22575f5ffd5b815161398b81613963565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201613cb757613cb7613c92565b5060010190565b81810381811115612f9357612f93613c92565b5f60208284031215613ce1575f5ffd5b5051919050565b80820180821115612f9357612f93613c92565b5f82518060208501845e5f920191825250919050565b8082028115828204841417612f9357612f93613c92565b5f82613d4257634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220acfbf7f13f49faf28c4151b8b0d3a391438cbeeab0d722c18f93f427ed7f90a164736f6c634300081c00330000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d20000000000000000000000004221166ca2ce6e9a6ac505436f68437f6b578614000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc300000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
Deployed Bytecode
0x60806040526004361061042f575f3560e01c80638da5cb5b1161022b578063d3e4047a11610129578063e74b981b116100b3578063f2c1b7e411610078578063f2c1b7e414610d89578063f2fde38b14610d9e578063f4993bbd14610dbd578063f76e947b14610dd1578063fe74801514610de6575f5ffd5b8063e74b981b14610d0f578063e994561814610d2e578063ea6c2e8414610d42578063ec5bc0b214610d55578063f1511da814610d6a575f5ffd5b8063dda26edf116100f9578063dda26edf14610c48578063dfe6083514610c5d578063e3d9109f14610c7c578063e72328ce14610c9b578063e726d30b14610cba575f5ffd5b8063d3e4047a14610bbc578063d54720fb14610bdb578063d87f44fb14610bf0578063dca7bbe614610c0f575f5ffd5b8063ac4afa38116101b5578063b63c44e71161017a578063b63c44e714610b25578063b6e19e0614610b3a578063bbb8518814610b59578063cd446e2214610b88578063cdd78cfc14610ba7575f5ffd5b8063ac4afa3814610a4b578063acddb1c014610aca578063b0a8d5ca14610adf578063b187bd2614610af3578063b3381df614610b0c575f5ffd5b80639ac18b19116101fb5780639ac18b19146109d15780639ec9ac41146109e5578063a28a01cf146109fa578063a64f9ff614610a21578063ac332e2714610a36575f5ffd5b80638da5cb5b14610971578063941aef641461098e57806397d75776146109a2578063992f9075146109bc575f5ffd5b806347fb45531161033857806359e1a699116102c25780637df73e27116102875780637df73e27146108dd578063813584981461090a5780638333903e1461091e57806386a8f1ca1461093d57806389ef75a21461095c575f5ffd5b806359e1a6991461085a5780635c0252491461088a5780636597a1301461089f578063715018a6146108b45780637a86b282146108c8575f5ffd5b80634ec18db9116103085780634ec18db9146107bc57806350891ecf146107d157806352f7c988146107f857806358a34fee1461081757806358d70cf614610836575f5ffd5b806347fb4553146107385780634b8f9025146107575780634d1f287d1461077e5780634d4748981461079d575f5ffd5b80632ab38b5f116103b95780633da79c15116103895780633da79c151461063a5780633efeb0ea14610659578063457fb905146106db578063465f5eb8146106fa5780634690484014610719575f5ffd5b80632ab38b5f1461058b5780632f380b35146105aa578063336535281461060257806337c0892314610625575f5ffd5b80631d86e01b116103ff5780631d86e01b146104d25780632079fb9a1461050957806321b79d98146105285780632a1501271461053c5780632a6bc2dd1461055b575f5ffd5b8063068ed2f51461043a57806316c38b3c14610462578063194a4e7e146104835780631b844f2314610498575f5ffd5b3661043657005b5f5ffd5b348015610445575f5ffd5b5061044f600e5481565b6040519081526020015b60405180910390f35b34801561046d575f5ffd5b5061048161047c366004613970565b610e05565b005b34801561048e575f5ffd5b5061044f600c5481565b3480156104a3575f5ffd5b506104b76104b2366004613992565b610e55565b60408051938452911515602084015290820152606001610459565b3480156104dd575f5ffd5b506104f16104ec3660046139a9565b610ee1565b6040516001600160a01b039091168152602001610459565b348015610514575f5ffd5b506104f1610523366004613992565b610f15565b348015610533575f5ffd5b50610481610f34565b348015610547575f5ffd5b506104816105563660046139e4565b6111a8565b348015610566575f5ffd5b5061057a6105753660046139e4565b6111f8565b604051610459959493929190613a69565b348015610596575f5ffd5b506104816105a5366004613992565b6113fe565b3480156105b5575f5ffd5b506105c96105c4366004613992565b6115da565b60408051971515885260208801969096529486019390935260608501919091526080840152151560a083015260c082015260e001610459565b34801561060d575f5ffd5b50610616611694565b60405161045993929190613ad5565b348015610630575f5ffd5b5061044f60275481565b348015610645575f5ffd5b506012546104f1906001600160a01b031681565b348015610664575f5ffd5b506106a96106733660046139e4565b60186020525f90815260409020805460018201546002909201546001600160a01b03909116919060ff8082169161010090041684565b604080516001600160a01b03909516855260208501939093529015159183019190915215156060820152608001610459565b3480156106e6575f5ffd5b506003546104f1906001600160a01b031681565b348015610705575f5ffd5b5061044f6107143660046139e4565b61172b565b348015610724575f5ffd5b506025546104f1906001600160a01b031681565b348015610743575f5ffd5b506011546104f1906001600160a01b031681565b348015610762575f5ffd5b506104f1732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b348015610789575f5ffd5b50610481610798366004613970565b611aa0565b3480156107a8575f5ffd5b506104816107b7366004613992565b611af5565b3480156107c7575f5ffd5b5061044f60055481565b3480156107dc575f5ffd5b506104f17390fc7abb6734df30b9dc726f6f92eefd9c3c7bb281565b348015610803575f5ffd5b506104816108123660046139a9565b611bed565b348015610822575f5ffd5b50610481610831366004613992565b611c00565b348015610841575f5ffd5b5061084a611c3d565b6040516104599493929190613afe565b348015610865575f5ffd5b5060255461087a90600160a01b900460ff1681565b6040519015158152602001610459565b348015610895575f5ffd5b5061044f60105481565b3480156108aa575f5ffd5b5061044f60245481565b3480156108bf575f5ffd5b50610481611dd6565b3480156108d3575f5ffd5b5061044f60215481565b3480156108e8575f5ffd5b5061087a6108f73660046139e4565b602080525f908152604090205460ff1681565b348015610915575f5ffd5b5061044f606481565b348015610929575f5ffd5b50610481610938366004613992565b611de9565b348015610948575f5ffd5b50610481610957366004613992565b611e53565b348015610967575f5ffd5b5061044f600f5481565b34801561097c575f5ffd5b506001546001600160a01b03166104f1565b348015610999575f5ffd5b50610481611fab565b3480156109ad575f5ffd5b506104f16002604360981b0181565b3480156109c7575f5ffd5b5061044f60235481565b3480156109dc575f5ffd5b5061044f600381565b3480156109f0575f5ffd5b5061044f600b5481565b348015610a05575f5ffd5b506104f1732b9712190ce9570c1ca860d55b1623bd88bf96ff81565b348015610a2c575f5ffd5b5061044f600d5481565b348015610a41575f5ffd5b5061044f60135481565b348015610a56575f5ffd5b50610a9d610a65366004613992565b60156020525f9081526040902080546001820154600283015460038401546004850154600590950154939460ff909316939192909186565b604080519687529415156020870152938501929092526060840152608083015260a082015260c001610459565b348015610ad5575f5ffd5b5061044f600a5481565b348015610aea575f5ffd5b50610481612010565b348015610afe575f5ffd5b5060065461087a9060ff1681565b348015610b17575f5ffd5b5060145461087a9060ff1681565b348015610b30575f5ffd5b5061044f60265481565b348015610b45575f5ffd5b506004546104f1906001600160a01b031681565b348015610b64575f5ffd5b50610b6d612455565b60408051938452602084019290925290820152606001610459565b348015610b93575f5ffd5b506002546104f1906001600160a01b031681565b348015610bb2575f5ffd5b5061044f601a5481565b348015610bc7575f5ffd5b506104f1610bd6366004613992565b612487565b348015610be6575f5ffd5b5061044f60295481565b348015610bfb575f5ffd5b50610481610c0a366004613b55565b6124af565b348015610c1a575f5ffd5b5061087a610c29366004613b92565b602260209081525f928352604080842090915290825290205460ff1681565b348015610c53575f5ffd5b5061044f60075481565b348015610c68575f5ffd5b50610481610c77366004613992565b612654565b348015610c87575f5ffd5b50610481610c96366004613bbc565b6126d0565b348015610ca6575f5ffd5b50610481610cb53660046139e4565b61285b565b348015610cc5575f5ffd5b50610cfa610cd4366004613b92565b601660209081525f92835260408084209091529082529020805460019091015460ff1682565b60408051928352901515602083015201610459565b348015610d1a575f5ffd5b50610481610d293660046139e4565b6128e0565b348015610d39575f5ffd5b5061048161295c565b610481610d50366004613be4565b612a40565b348015610d60575f5ffd5b5061044f60085481565b348015610d75575f5ffd5b50610481610d84366004613992565b612d52565b348015610d94575f5ffd5b5061044f60285481565b348015610da9575f5ffd5b50610481610db83660046139e4565b612da1565b348015610dc8575f5ffd5b50610481612dde565b348015610ddc575f5ffd5b5061044f60095481565b348015610df1575f5ffd5b50610481610e003660046139e4565b612ea6565b610e0d612f58565b6006805460ff19168215159081179091556040519081527f752d7e161ff5146f80e3820893176eb40532811e5e20400dfdde57455213706a906020015b60405180910390a150565b5f5f5f5f84118015610e68575060648411155b610eab5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064015b60405180910390fd5b5f848152601560205260409020600481015460145460ff168015610ed0575085600854145b602454935093509350509193909250565b6017602052815f5260405f208181548110610efa575f80fd5b5f918252602090912001546001600160a01b03169150829050565b601b8160058110610f24575f80fd5b01546001600160a01b0316905081565b60025460405163102c61db60e11b81523360048201526001600160a01b0390911690632058c3b690602401602060405180830381865afa158015610f7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9e9190613c12565b610fba5760405162461bcd60e51b8152600401610ea290613c2d565b60145460ff16156110025760405162461bcd60e51b81526020600482015260126024820152714d696e696e6720696e2070726f677265737360701b6044820152606401610ea2565b6008545f90815260156020526040902080546110565760405162461bcd60e51b81526020600482015260136024820152724e6f206465706f7369747320746f206d696e6560681b6044820152606401610ea2565b600181015460ff1661109c5760405162461bcd60e51b815260206004820152600f60248201526e141bdbdb081b9bdd081b1bd8dad959608a1b6044820152606401610ea2565b6014805460ff19166001179055601280546001600160a01b0319163390811790915560085460135581546040515f9291905f6040518083038185875af1925050503d805f8114611107576040519150601f19603f3d011682016040523d82523d5f602084013e61110c565b606091505b505090508061115d5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f2073656e642066756e647320746f20626f7400000000006044820152606401610ea2565b602454825460408051928352602083019190915233908201527f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56906060015b60405180910390a15050565b6111b0612f58565b6001600160a01b0381166111d65760405162461bcd60e51b8152600401610ea290613c55565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516064808252610ca08201909252606091829182918291829160208201610c80803683375050604080516064808252610ca08201909252929750905060208201610c80803683375050604080516064808252610ca08201909252929650905060208201610c80803683375050604080516064808252610ca08201909252929550905060208201610c80803683375050604080516064808252610ca08201909252929450905060208201610c80803683370190505090505f60015b606481116113e4575f8181526016602090815260408083206001600160a01b038c16845290915290208054156113d157818884815181106112f8576112f8613c7e565b602002602001018181525050805f015487848151811061131a5761131a613c7e565b60209081029190910101526001810154865160ff9091169087908590811061134457611344613c7e565b9115156020928302919091018201525f83815260159091526040902060010154855160ff9091169086908590811061137e5761137e613c7e565b9115156020928302919091019091015260145460ff1680156113a1575081600854145b8484815181106113b3576113b3613c7e565b91151560209283029190910190910152826113cd81613ca6565b9350505b50806113dc81613ca6565b9150506112b5565b508086528085528084528083528082525091939590929450565b611406612f58565b60065460ff166114585760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d757374206265207061757365640000000000000000006044820152606401610ea2565b5f811161149b5760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420706f6f6c2073697a6560781b6044820152606401610ea2565b47156114e25760405162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206d75737420626520656d70747960501b6044820152606401610ea2565b60015b606481116115a4575f8181526015602052604090206001015460ff16156115415760405162461bcd60e51b815260206004820152601060248201526f141bdbdb1cc8185c99481b1bd8dad95960821b6044820152606401610ea2565b5f81815260156020526040902054156115925760405162461bcd60e51b8152602060048201526013602482015272506f6f6c732068617665206465706f7369747360681b6044820152606401610ea2565b8061159c81613ca6565b9150506114e5565b5060058190556040518181527f26511ca45be0d4875d9b7e537ac00b167db8490791a33ce6220f729c3b4b1d6d90602001610e4a565b5f5f5f5f5f5f5f5f881180156115f1575060648811155b61162f5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b6044820152606401610ea2565b5f888152601560209081526040808320600181015481546002830154600384015460179096529390952054601454929560ff92831695909493909216801561167857508d600854145b600490960154949e939d50919b50995097509195509350915050565b600554604080516064808252610ca082019092526001916060919060208201610c808036833701905050905060015b60648111611725575f818152601560205260409020600181015460ff16156116e9575f93505b8054836116f7600185613cbe565b8151811061170757611707613c7e565b6020908102919091010152508061171d81613ca6565b9150506116c3565b50909192565b6040516370a0823160e01b81526001600160a01b03821660048201525f908190732b9712190ce9570c1ca860d55b1623bd88bf96ff906370a0823190602401602060405180830381865afa158015611785573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a99190613cd1565b6040516370a0823160e01b81526001600160a01b03851660048201529091505f907390fc7abb6734df30b9dc726f6f92eefd9c3c7bb2906370a0823190602401602060405180830381865afa158015611804573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118289190613cd1565b90506010548210158061183d57506010548110155b6118895760405162461bcd60e51b815260206004820152601c60248201527f4d75737420686176652031306b204b4f4e4b206f722073744b4f4e4b000000006044820152606401610ea2565b600b5460295482106118be576118bb6127106118b5600a546127106118ae9190613cbe565b8490612f85565b90612f99565b90505b5f805b601954811015611a73575f601982815481106118df576118df613c7e565b5f9182526020808320909101546001600160a01b039081168084526018835260409384902084516080810186528154909316835260018101549383019390935260029092015460ff80821615801595840195909552610100909104161515606082015290925090611a69578060600151156119e1576040516370a0823160e01b81526001600160a01b038a811660048301525f91908416906370a0823190602401602060405180830381865afa15801561199b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119bf9190613cd1565b1180156119cf5750838160200151115b156119dc57806020015193505b611a69565b6040516370a0823160e01b81526001600160a01b038a811660048301525f91908416906370a0823190602401602060405180830381865afa158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613cd1565b118015611a5c5750838160200151115b15611a6957806020015193505b50506001016118c1565b508015611a9757611a946127106118b5611a8d8483613cbe565b8590612f85565b91505b50949350505050565b611aa8612f58565b60258054821515600160a01b0260ff60a01b199091161790556040517fbdfddb6ae83f3dafb9f94ca774388421bf5573b5c8763dbab2f96511c87c639990610e4a90831515815260200190565b6012546001600160a01b031633148015611b11575060145460ff165b611b2d5760405162461bcd60e51b8152600401610ea290613c2d565b60018110158015611b4057506103e88111155b611b815760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642062617463682073697a6560701b6044820152606401610ea2565b60035460408051630e49303160e01b81526004810184905260248101919091525f60448201526001600160a01b0390911690630e493031906064015b5f604051808303815f87803b158015611bd4575f5ffd5b505af1158015611be6573d5f5f3e3d5ffd5b5050505050565b611bf5612f58565b600b91909155600a55565b611c08612f58565b60108190556040518181527f012688e2f4a63cb758d04a7a991d09df928807a7c418a629d72071b2c6b2accc90602001610e4a565b604080516064808252610ca082019092526060918291829182919060208201610c80803683375050604080516064808252610ca08201909252929650905060208201610c80803683375050604080516064808252610ca08201909252929550905060208201610c80803683375050604080516064808252610ca08201909252929450905060208201610c80803683370190505090505f5b6064811015611dcf575f601581611cec846001613ce8565b81526020019081526020015f209050805f0154868381518110611d1157611d11613c7e565b60209081029190910101526001810154855160ff90911690869084908110611d3b57611d3b613c7e565b9115156020928302919091019091015260145460ff168015611d685750611d63826001613ce8565b600854145b848381518110611d7a57611d7a613c7e565b9115156020928302919091019091015260175f611d98846001613ce8565b81526020019081526020015f2080549050838381518110611dbb57611dbb613c7e565b602090810291909101015250600101611cd4565b5090919293565b611dde612f58565b611de75f612fa4565b565b611df1612f58565b6064811115611e4e5760405162461bcd60e51b8152602060048201526024808201527f50657263656e74616765206d757374206265206265747765656e203020616e646044820152630203130360e41b6064820152608401610ea2565b601a55565b611e5b612f58565b600f54811115611ead5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e74206c6566746f76657220485950455253000000006044820152606401610ea2565b600f54611eba9082612ff5565b600f556004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611f0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f309190613c12565b611f755760405162461bcd60e51b8152602060048201526016602482015275121654115494c81d1c985b9cd9995c8819985a5b195960521b6044820152606401610ea2565b60408051338152602081018390527f0ecf5be15240a847a9f3963fef8cbc9eda7cf7caed536d6971f4e7f3c6a5e0069101610e4a565b611fb3612f58565b60235415611ff65760405162461bcd60e51b815260206004820152601060248201526f50726f706f73616c2070656e64696e6760801b6044820152606401610ea2565b60218054905f61200583613ca6565b90915550505f602355565b6012546001600160a01b03163314801561202c575060145460ff165b6120485760405162461bcd60e51b8152600401610ea290613c2d565b6008545f908152601560205260408082206004805492516370a0823160e01b815230918101919091529092916001600160a01b0316906370a0823190602401602060405180830381865afa1580156120a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c69190613cd1565b905080156120f857600d546120db9082613000565b600d556008546120eb908261300b565b6004820181905560288190555b600482015460245460135460408051928352602083019190915281018290527f0de03e91c741ab97e64c944eee97ccacb3639b1309c68360a0c2de1f563aea059060600160405180910390a15f61216360646118b5601a548760050154612f8590919063ffffffff16565b90505f61217d828660050154612ff590919063ffffffff16565b905081156122525760025460408051600481526024810182526020810180516001600160e01b0316631365388360e31b17905290515f926001600160a01b03169185916121ca9190613cfb565b5f6040518083038185875af1925050503d805f8114612204576040519150601f19603f3d011682016040523d82523d5f602084013e612209565b606091505b50509050806122505760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610ea2565b505b80156122fa576025546040515f916001600160a01b03169083908381818185875af1925050503d805f81146122a2576040519150601f19603f3d011682016040523d82523d5f602084013e6122a7565b606091505b50509050806122f85760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f2073656e642072656d61696e696e6720666565730000006044820152606401610ea2565b505b6123026131f8565b5f80865560018601805460ff19169055600286018190556003860181905560048601819055600586018190556008548152601760205260408120905b81548110156123a65760165f60085481526020019081526020015f205f83838154811061236d5761236d613c7e565b5f9182526020808320909101546001600160a01b0316835282019290925260400181209081556001908101805460ff191690550161233e565b506008545f9081526017602052604081206123c091613935565b6064600854146123dd576008546123d8906001613ce8565b6123e0565b60015b6008556014805460ff19169055601280546001600160a01b031916905560245460408051918252602082018790527f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44910160405180910390a160248054905f61244883613ca6565b9190505550505050505050565b5f5f5f5f60245411612467575f612476565b60016024546124769190613cbe565b600d54602754925092509250909192565b60198181548110612496575f80fd5b5f918252602090912001546001600160a01b0316905081565b6124b7612f58565b6113888211156124fc5760405162461bcd60e51b815260206004820152601060248201526f13585e080d4c0948191a5cd8dbdd5b9d60821b6044820152606401610ea2565b6001600160a01b0383165f9081526018602052604090206002015460ff16156125575760405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481859191959609a1b6044820152606401610ea2565b604080516080810182526001600160a01b038581168083526020808401878152600185870181815288151560608089018281525f888152601888528b81209a518b549a166001600160a01b03199a8b16178b5595518a860155925160029099018054935115156101000261ff00199a15159a909a1661ffff1990941693909317989098179091556019805492830181559092527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695018054909416831790935584519182528101869052928301527f6e9eac1d80a491d4b9ce5dfd25ec88d449f7f61ce9dcb87d0e5104a7d0af2173910160405180910390a1505050565b61265c612f58565b5f811161269b5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b1a5b5a5d609a1b6044820152606401610ea2565b60268190556040518181527f514bf0f65cb844af227a51e123dbb8b5be8fac221f8feeb9d20591e81c46e50b90602001610e4a565b6126d8612f58565b6001600160a01b0382165f90815260208052604090205460ff16801561271557506001600160a01b0381165f90815260208052604090205460ff16155b6127535760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964207369676e65727360881b6044820152606401610ea2565b6001600160a01b0381166127795760405162461bcd60e51b8152600401610ea290613c55565b5f5b60058110156127f157826001600160a01b0316601b82600581106127a1576127a1613c7e565b01546001600160a01b0316036127e95781601b82600581106127c5576127c5613c7e565b0180546001600160a01b0319166001600160a01b03929092169190911790556127f1565b60010161277b565b506001600160a01b038281165f81815260208080526040808320805460ff1990811690915594861680845292819020805490951660011790945583519283528201527f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb910161119c565b612863612f58565b6001600160a01b0381166128895760405162461bcd60e51b8152600401610ea290613c55565b601180546001600160a01b0319166001600160a01b0383169081179091556040516336b91f2b60e01b81526004810191909152732536fe9ab3f511540f2f9e2ec2a805005c3dd800906336b91f2b90602401611bbd565b6128e8612f58565b6001600160a01b03811661290e5760405162461bcd60e51b8152600401610ea290613c55565b602580546001600160a01b0319166001600160a01b0383169081179091556040519081527f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc290602001610e4a565b335f90815260208052604090205460ff166129a85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309039b4b3b732b960a11b6044820152606401610ea2565b6021545f90815260226020908152604080832033845290915290205460ff1615612a055760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cda59db995960921b6044820152606401610ea2565b6021545f9081526022602090815260408083203384529091528120805460ff191660011790556023805491612a3983613ca6565b9190505550565b612a4861347f565b60065460ff1615612a905760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610ea2565b5f8211612ad75760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a590819195c1bdcda5d0818dbdd5b9d605a1b6044820152606401610ea2565b5f612ae13361172b565b90505f81600954612af29190613ce8565b90505f612aff8286612f85565b9050803414612b475760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b6044820152606401610ea2565b602554600160a01b900460ff1615612bab57602654341115612bab5760405162461bcd60e51b815260206004820152601960248201527f45786365656473206d6178206465706f736974206c696d6974000000000000006044820152606401610ea2565b5f612bc0612bb98588612f85565b3490612ff5565b6007549091505b8115612cec575f8181526015602052604081208054600554919291612beb91612ff5565b90508015612cb0575f818511612c015784612c03565b815b9050612c113385838c6134d6565b612c1b8582612ff5565b9450600554835f015410612caa576001838101805460ff1916909117905560028301546003840154845460408051888152602081019490945283019190915260608201527f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea9060800160405180910390a160648414612ca457612c9f846001613ce8565b612ca7565b60015b93505b50612cce565b60648314612cc857612cc3836001613ce8565b612ccb565b60015b92505b8860275f828254612cdf9190613ce8565b90915550612bc792505050565b5f612cf78689612f85565b6007545f90815260156020526040902060050154909150612d189082613000565b6007545f90815260156020526040902060050155600c54612d399082613000565b600c555060075550612d4e92506135e4915050565b5050565b612d5a612f58565b612d6c81670de0b6b3a7640000613d11565b60298190556040519081527f42c772aeb5eb05ed61c4bab5686efd5ed83a2cdb1781737583d9a8c564630c9c90602001610e4a565b612da9612f58565b6001600160a01b038116612dd257604051631e4fbdf760e01b81525f6004820152602401610ea2565b612ddb81612fa4565b50565b612de6612f58565b60036023541015612e395760405162461bcd60e51b815260206004820152601760248201527f496e73756666696369656e74207369676e6174757265730000000000000000006044820152606401610ea2565b612e416135ea565b5f60238190555b6005811015612ddb576021545f90815260226020526040812081601b8460058110612e7557612e75613c7e565b01546001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101612e48565b612eae612f58565b6001600160a01b0381165f9081526018602052604090206002015460ff16612f055760405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606401610ea2565b6001600160a01b0381165f81815260186020908152604091829020600201805460ff1916905590519182527fe3d73073356b89f23adf77ab42c7f4227575b6f8866f2cf44df1e1df998e02499101610e4a565b6001546001600160a01b03163314611de75760405163118cdaa760e01b8152336004820152602401610ea2565b5f612f908284613d11565b90505b92915050565b5f612f908284613d28565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f612f908284613cbe565b5f612f908284613ce8565b80158061302357505f82815260156020526040902054155b1561302c575050565b5f828152601760205260408120815b81548110156131cd575f82828154811061305757613057613c7e565b5f9182526020808320909101548883526016825260408084206001600160a01b039092168085529190925291205490915080156131c3575f878152601560205260408120546130aa906118b5848a612f85565b905080156131c1576004805460405163a9059cbb60e01b81526001600160a01b03868116938201939093526024810184905291169063a9059cbb906044016020604051808303815f875af1158015613104573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131289190613c12565b6131665760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610ea2565b6131708682613000565b9550826001600160a01b03167f53118bff2fb56701752f5bf54053d24fb83cec92f9f6ce664b90c38a2991caa4826024546040516131b8929190918252602082015260400190565b60405180910390a25b505b505060010161303b565b505f6131d98484612ff5565b90508015611be657600f546131ee9082613000565b600f555050505050565b60405163430021db60e11b81523060048201819052602482015247906002604360981b019063860043b6906044016020604051808303815f875af1158015613242573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132669190613cd1565b50475f6132738284612ff5565b60405163662aa11d60e01b8152306004820181905260248201529091506002604360981b019063662aa11d906044016020604051808303815f875af11580156132be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132e29190613cd1565b50475f6132ef8285612ff5565b90505f6132fc8483613000565b905080156134775760025460408051600481526024810182526020810180516001600160e01b031663f128c71760e01b17905290515f926001600160a01b03169184916133499190613cfb565b5f6040518083038185875af1925050503d805f8114613383576040519150601f19603f3d011682016040523d82523d5f602084013e613388565b606091505b50509050806133d95760405162461bcd60e51b815260206004820152601c60248201527f4661696c656420746f2073656e64207969656c6420616e6420676173000000006044820152606401610ea2565b60025f9054906101000a90046001600160a01b03166001600160a01b03166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613425575f5ffd5b505af1158015613437573d5f5f3e3d5ffd5b505060408051888152602081018790527f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a7935001905060405180910390a1505b505050505050565b60025f54036134d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ea2565b60025f55565b5f838152601560209081526040808320601683528184206001600160a01b038916855290925282205490910361353d575f8481526017602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0387161790555b5f8481526016602090815260408083206001600160a01b03891684529091529020546135699084613000565b5f8581526016602090815260408083206001600160a01b038a1684529091529020908155600101805460ff191683151517905580546135a89084613000565b815581156135c95760028101546135bf9084613000565b6002820155611be6565b60038101546135d89084613000565b60038201555050505050565b60015f55565b600480546040516370a0823160e01b8152309281019290925247915f916001600160a01b0316906370a0823190602401602060405180830381865afa158015613635573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190613cd1565b90505f61366e6001546001600160a01b031690565b6001600160a01b0316836040515f6040518083038185875af1925050503d805f81146136b5576040519150601f19603f3d011682016040523d82523d5f602084013e6136ba565b606091505b50509050806137015760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610ea2565b6004546001600160a01b031663a9059cbb6137246001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561376e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137929190613c12565b6137d75760405162461bcd60e51b8152602060048201526016602482015275121654115494c81d1c985b9cd9995c8819985a5b195960521b6044820152606401610ea2565b602154604080519182526020820185905281018390527fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c9060600160405180910390a160015b606481116138f8575f81815260156020908152604080832083815560018101805460ff1916905560028101849055600381018490556004810184905560050183905560179091528120905b81548110156138ce5760165f8481526020019081526020015f205f83838154811061389557613895613c7e565b5f9182526020808320909101546001600160a01b0316835282019290925260400181209081556001908101805460ff1916905501613868565b505f8281526017602052604081206138e591613935565b50806138f081613ca6565b91505061381d565b50505f600e819055600c819055600d8190556013819055600f8190556014805460ff19169055601280546001600160a01b03191690556027555050565b5080545f8255905f5260205f2090810190612ddb91905b8082111561395f575f815560010161394c565b5090565b8015158114612ddb575f5ffd5b5f60208284031215613980575f5ffd5b813561398b81613963565b9392505050565b5f602082840312156139a2575f5ffd5b5035919050565b5f5f604083850312156139ba575f5ffd5b50508035926020909101359150565b80356001600160a01b03811681146139df575f5ffd5b919050565b5f602082840312156139f4575f5ffd5b612f90826139c9565b5f8151808452602084019350602083015f5b82811015613a2d578151865260209586019590910190600101613a0f565b5093949350505050565b5f8151808452602084019350602083015f5b82811015613a2d5781511515865260209586019590910190600101613a49565b60a081525f613a7b60a08301886139fd565b8281036020840152613a8d81886139fd565b90508281036040840152613aa18187613a37565b90508281036060840152613ab58186613a37565b90508281036080840152613ac98185613a37565b98975050505050505050565b8381528215156020820152606060408201525f613af560608301846139fd565b95945050505050565b608081525f613b1060808301876139fd565b8281036020840152613b228187613a37565b90508281036040840152613b368186613a37565b90508281036060840152613b4a81856139fd565b979650505050505050565b5f5f5f60608486031215613b67575f5ffd5b613b70846139c9565b9250602084013591506040840135613b8781613963565b809150509250925092565b5f5f60408385031215613ba3575f5ffd5b82359150613bb3602084016139c9565b90509250929050565b5f5f60408385031215613bcd575f5ffd5b613bd6836139c9565b9150613bb3602084016139c9565b5f5f60408385031215613bf5575f5ffd5b823591506020830135613c0781613963565b809150509250929050565b5f60208284031215613c22575f5ffd5b815161398b81613963565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201613cb757613cb7613c92565b5060010190565b81810381811115612f9357612f93613c92565b5f60208284031215613ce1575f5ffd5b5051919050565b80820180821115612f9357612f93613c92565b5f82518060208501845e5f920191825250919050565b8082028115828204841417612f9357612f93613c92565b5f82613d4257634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220acfbf7f13f49faf28c4151b8b0d3a391438cbeeab0d722c18f93f427ed7f90a164736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d20000000000000000000000004221166ca2ce6e9a6ac505436f68437f6b578614000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc300000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
-----Decoded View---------------
Arg [0] : _pointsOperator (address): 0x3e6109D1A62E16C709444B49004f513B0D5978d2
Arg [1] : _masterContract (address): 0x4221166cA2ce6e9a6Ac505436F68437f6B578614
Arg [2] : _hypersound (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [3] : _hypersToken (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [4] : _fixedDeposit (uint256): 2000000000000000
Arg [5] : _fixedFeeAmount (uint256): 50000000000000
Arg [6] : _stakerDiscount (uint256): 500
Arg [7] : _feeRecipient (address): 0x44127ec6b8dd04C63C58c70276628034D697731b
Arg [8] : _initialMaxDepositLimit (uint256): 1000000
Arg [9] : _maxDepositLimitEnabled (bool): False
Arg [10] : _initialSigners (address[5]): 0x44127ec6b8dd04C63C58c70276628034D697731b,0x705E45c73A854A06fE64c9bD3bbf8Be1edD93274,0x798ed654F4D9599B99f94F4A61609b7A7cFBD200,0xB2D2ECC7d94CFb8e70F60AeB97Bf7F4C4cB8eF28,0x7F448F0435803744Bcda76afED4F17B0A6E0FB23
-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2
Arg [1] : 0000000000000000000000004221166ca2ce6e9a6ac505436f68437f6b578614
Arg [2] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [3] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [4] : 00000000000000000000000000000000000000000000000000071afd498d0000
Arg [5] : 00000000000000000000000000000000000000000000000000002d79883d2000
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [7] : 00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b
Arg [8] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b
Arg [11] : 000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274
Arg [12] : 000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200
Arg [13] : 000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef28
Arg [14] : 0000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
Deployed Bytecode Sourcemap
443:26547:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:33;;;;;;;;;;;;;;;;;;;160:25:12;;;148:2;133:18;1967:33:8;;;;;;;;6763:134;;;;;;;;;;-1:-1:-1;6763:134:8;;;;;:::i;:::-;;:::i;:::-;;1895:27;;;;;;;;;;;;;;;;23475:458;;;;;;;;;;-1:-1:-1;23475:458:8;;;;;:::i;:::-;;:::i;:::-;;;;992:25:12;;;1060:14;;1053:22;1048:2;1033:18;;1026:50;1092:18;;;1085:34;980:2;965:18;23475:458:8;796:329:12;2427:51:8;;;;;;;;;;-1:-1:-1;2427:51:8;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1645:32:12;;;1627:51;;1615:2;1600:18;2427:51:8;1481:203:12;2672:25:8;;;;;;;;;;-1:-1:-1;2672:25:8;;;;;:::i;:::-;;:::i;12259:762::-;;;;;;;;;;;;;:::i;25747:215::-;;;;;;;;;;-1:-1:-1;25747:215:8;;;;;:::i;:::-;;:::i;20805:1299::-;;;;;;;;;;-1:-1:-1;20805:1299:8;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;6151:604::-;;;;;;;;;;-1:-1:-1;6151:604:8;;;;;:::i;:::-;;:::i;20074:723::-;;;;;;;;;;-1:-1:-1;20074:723:8;;;;;:::i;:::-;;:::i;:::-;;;;4307:14:12;;4300:22;4282:41;;4354:2;4339:18;;4332:34;;;;4382:18;;;4375:34;;;;4440:2;4425:18;;4418:34;;;;4483:3;4468:19;;4461:35;4540:14;4533:22;4527:3;4512:19;;4505:51;4587:3;4572:19;;4565:35;4269:3;4254:19;20074:723:8;3979:627:12;22867:600:8;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;3185:33::-;;;;;;;;;;;;;;;;2164:31;;;;;;;;;;-1:-1:-1;2164:31:8;;;;-1:-1:-1;;;;;2164:31:8;;;2485:63;;;;;;;;;;-1:-1:-1;2485:63:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2485:63:8;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5266:32:12;;;5248:51;;5330:2;5315:18;;5308:34;;;;5385:14;;5378:22;5358:18;;;5351:50;;;;5444:14;5437:22;5432:2;5417:18;;5410:50;5235:3;5220:19;2485:63:8;5029:437:12;1407:31:8;;;;;;;;;;-1:-1:-1;1407:31:8;;;;-1:-1:-1;;;;;1407:31:8;;;7950:1538;;;;;;;;;;-1:-1:-1;7950:1538:8;;;;;:::i;:::-;;:::i;3023:27::-;;;;;;;;;;-1:-1:-1;3023:27:8;;;;-1:-1:-1;;;;;3023:27:8;;;2128:29;;;;;;;;;;-1:-1:-1;2128:29:8;;;;-1:-1:-1;;;;;2128:29:8;;;1073:100;;;;;;;;;;;;1130:42;1073:100;;25574:165;;;;;;;;;;-1:-1:-1;25574:165:8;;;;;:::i;:::-;;:::i;13029:282::-;;;;;;;;;;-1:-1:-1;13029:282:8;;;;;:::i;:::-;;:::i;1479:23::-;;;;;;;;;;;;;;;;1180:86;;;;;;;;;;;;1223:42;1180:86;;24349:179;;;;;;;;;;-1:-1:-1;24349:179:8;;;;;:::i;:::-;;:::i;6905:173::-;;;;;;;;;;-1:-1:-1;6905:173:8;;;;;:::i;:::-;;:::i;22112:747::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3105:34::-;;;;;;;;;;-1:-1:-1;3105:34:8;;;;-1:-1:-1;;;3105:34:8;;;;;;;;;7178:14:12;;7171:22;7153:41;;7141:2;7126:18;3105:34:8;7013:187:12;2043:49:8;;;;;;;;;;;;;;;;2985:31;;;;;;;;;;;;;;;;1091:103:9;;;;;;;;;;;;;:::i;2805:44:8:-;;;;;;;;;;;;;;;;2758:40;;;;;;;;;;-1:-1:-1;2758:40:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;1588:39;;;;;;;;;;;;1624:3;1588:39;;24894:215;;;;;;;;;;-1:-1:-1;24894:215:8;;;;;:::i;:::-;;:::i;24536:350::-;;;;;;;;;;-1:-1:-1;24536:350:8;;;;;:::i;:::-;;:::i;2007:29::-;;;;;;;;;;;;;;;;822:87:9;;;;;;;;;;-1:-1:-1;895:6:9;;-1:-1:-1;;;;;895:6:9;822:87;;17915:225:8;;;;;;;;;;;;;:::i;985:81::-;;;;;;;;;;;;-1:-1:-1;;;;;985:81:8;;2934:44;;;;;;;;;;;;;;;;2704:47;;;;;;;;;;;;2750:1;2704:47;;1859:29;;;;;;;;;;;;;;;;1273:80;;;;;;;;;;;;1310:42;1273:80;;1929:31;;;;;;;;;;;;;;;;2202:28;;;;;;;;;;;;;;;;2305:37;;;;;;;;;;-1:-1:-1;2305:37:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:25:12;;;7997:14;;7990:22;7985:2;7970:18;;7963:50;8029:18;;;8022:34;;;;8087:2;8072:18;;8065:34;8130:3;8115:19;;8108:35;8174:3;8159:19;;8152:35;7916:3;7901:19;2305:37:8;7648:545:12;1823:29:8;;;;;;;;;;;;;;;;13319:2436;;;;;;;;;;;;;:::i;1511:20::-;;;;;;;;;;-1:-1:-1;1511:20:8;;;;;;;;2237:35;;;;;;;;;;-1:-1:-1;2237:35:8;;;;;;;;3146:30;;;;;;;;;;;;;;;;1445:25;;;;;;;;;;-1:-1:-1;1445:25:8;;;;-1:-1:-1;;;;;1445:25:8;;;23941:376;;;;;;;;;;;;;:::i;:::-;;;;8400:25:12;;;8456:2;8441:18;;8434:34;;;;8484:18;;;8477:34;8388:2;8373:18;23941:376:8;8198:319:12;1367:33:8;;;;;;;;;;-1:-1:-1;1367:33:8;;;;-1:-1:-1;;;;;1367:33:8;;;2600:36;;;;;;;;;;;;;;;;2555:32;;;;;;;;;;-1:-1:-1;2555:32:8;;;;;:::i;:::-;;:::i;3279:45::-;;;;;;;;;;;;;;;;7086:601;;;;;;;;;;-1:-1:-1;7086:601:8;;;;;:::i;:::-;;:::i;2856:71::-;;;;;;;;;;-1:-1:-1;2856:71:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:37;;;;;;;;;;;;;;;;25355:211;;;;;;;;;;-1:-1:-1;25355:211:8;;;;;:::i;:::-;;:::i;26405:539::-;;;;;;;;;;-1:-1:-1;26405:539:8;;;;;:::i;:::-;;:::i;25970:245::-;;;;;;;;;;-1:-1:-1;25970:245:8;;;;;:::i;:::-;;:::i;2349:71::-;;;;;;;;;;-1:-1:-1;2349:71:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9927:25:12;;;9995:14;;9988:22;9983:2;9968:18;;9961:50;9900:18;2349:71:8;9759:258:12;25117:230:8;;;;;;;;;;-1:-1:-1;25117:230:8;;;;;:::i;:::-;;:::i;18148:333::-;;;;;;;;;;;;;:::i;9496:2054::-;;;;;;:::i;:::-;;:::i;1715:36::-;;;;;;;;;;;;;;;;26227:170;;;;;;;;;;-1:-1:-1;26227:170:8;;;;;:::i;:::-;;:::i;3225:41::-;;;;;;;;;;;;;;;;1202:220:9;;;;;;;;;;-1:-1:-1;1202:220:9;;;;;:::i;:::-;;:::i;18489:385:8:-;;;;;;;;;;;;;:::i;1789:27::-;;;;;;;;;;;;;;;;7695:247;;;;;;;;;;-1:-1:-1;7695:247:8;;;;;:::i;:::-;;:::i;6763:134::-;781:13:9;:11;:13::i;:::-;6828:8:8::1;:20:::0;;-1:-1:-1;;6828:20:8::1;::::0;::::1;;::::0;;::::1;::::0;;;6864:25:::1;::::0;7153:41:12;;;6864:25:8::1;::::0;7141:2:12;7126:18;6864:25:8::1;;;;;;;;6763:134:::0;:::o;23475:458::-;23554:19;23584:22;23617;23675:1;23666:6;:10;:33;;;;;1624:3;23680:6;:19;;23666:33;23658:61;;;;-1:-1:-1;;;23658:61:8;;10590:2:12;23658:61:8;;;10572:21:12;10629:2;10609:18;;;10602:30;-1:-1:-1;;;10648:18:12;;;10641:45;10703:18;;23658:61:8;;;;;;;;;23730:17;23750:13;;;:5;:13;;;;;23796:16;;;;23828:23;;;;:54;;;;;23876:6;23855:17;;:27;23828:54;23898:16;;23774:151;;;;;;;23475:458;;;;;:::o;2427:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2427:51:8;;-1:-1:-1;2427:51:8;;-1:-1:-1;2427:51:8:o;2672:25::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2672:25:8;;-1:-1:-1;2672:25:8;:::o;12259:762::-;12310:14;;:47;;-1:-1:-1;;;12310:47:8;;12346:10;12310:47;;;1627:51:12;-1:-1:-1;;;;;12310:14:8;;;;:35;;1600:18:12;;12310:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12302:74;;;;-1:-1:-1;;;12302:74:8;;;;;;;:::i;:::-;12396:23;;;;12395:24;12387:55;;;;-1:-1:-1;;;12387:55:8;;11527:2:12;12387:55:8;;;11509:21:12;11566:2;11546:18;;;11539:30;-1:-1:-1;;;11585:18:12;;;11578:48;11643:18;;12387:55:8;11325:342:12;12387:55:8;12499:17;;12467:23;12493:24;;;:5;:24;;;;;12536;;12528:60;;;;-1:-1:-1;;;12528:60:8;;11874:2:12;12528:60:8;;;11856:21:12;11913:2;11893:18;;;11886:30;-1:-1:-1;;;11932:18:12;;;11925:49;11991:18;;12528:60:8;11672:343:12;12528:60:8;12607:17;;;;;;12599:45;;;;-1:-1:-1;;;12599:45:8;;12222:2:12;12599:45:8;;;12204:21:12;12261:2;12241:18;;;12234:30;-1:-1:-1;;;12280:18:12;;;12273:45;12335:18;;12599:45:8;12020:339:12;12599:45:8;12657:23;:30;;-1:-1:-1;;12657:30:8;12683:4;12657:30;;;12698:16;:29;;-1:-1:-1;;;;;;12698:29:8;12717:10;12698:29;;;;;;12754:17;;12738:13;:33;12832:24;;12803:58;;12657:23;;12717:10;12832:24;12803:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:77;;;12880:7;12872:47;;;;-1:-1:-1;;;12872:47:8;;12776:2:12;12872:47:8;;;12758:21:12;12815:2;12795:18;;;12788:30;12854:29;12834:18;;;12827:57;12901:18;;12872:47:8;12574:351:12;12872:47:8;12958:16;;12976:24;;12937:76;;;13132:25:12;;;13188:2;13173:18;;13166:34;;;;13002:10:8;13216:18:12;;;13209:60;12937:76:8;;13120:2:12;13105:18;12937:76:8;;;;;;;;12291:730;;12259:762::o;25747:215::-;781:13:9;:11;:13::i;:::-;-1:-1:-1;;;;;25843:32:8;::::1;25835:60;;;;-1:-1:-1::0;;;25835:60:8::1;;;;;;;:::i;:::-;25906:14;:48:::0;;-1:-1:-1;;;;;;25906:48:8::1;-1:-1:-1::0;;;;;25906:48:8;;;::::1;::::0;;;::::1;::::0;;25747:215::o;20805:1299::-;21077:24;;;1624:3;21077:24;;;;;;;;;20878;;;;;;;;;;21077;;;;;;;;-1:-1:-1;;21122:24:8;;;1624:3;21122:24;;;;;;;;;21067:34;;-1:-1:-1;1624:3:8;-1:-1:-1;21122:24:8;;;;;;;;-1:-1:-1;;21172:21:8;;;1624:3;21172:21;;;;;;;;;21112:34;;-1:-1:-1;1624:3:8;-1:-1:-1;21172:21:8;;;;;;;;-1:-1:-1;;21219:21:8;;;1624:3;21219:21;;;;;;;;;21157:36;;-1:-1:-1;1624:3:8;-1:-1:-1;21219:21:8;;;;;;;;-1:-1:-1;;21266:21:8;;;1624:3;21266:21;;;;;;;;;21204:36;;-1:-1:-1;1624:3:8;-1:-1:-1;21266:21:8;;;;;;;;;;-1:-1:-1;;21251:36:8;-1:-1:-1;21308:13:8;21353:1;21336:494;1624:3;21356:1;:14;21336:494;;21392:27;21422:15;;;:12;:15;;;;;;;;-1:-1:-1;;;;;21422:21:8;;;;;;;;;21462:14;;:18;21458:361;;21518:1;21501:7;21509:5;21501:14;;;;;;;;:::i;:::-;;;;;;:18;;;;;21555:7;:14;;;21538:7;21546:5;21538:14;;;;;;;;:::i;:::-;;;;;;;;;;:31;21610:19;;;;21588;;21610;;;;;21588:12;;21601:5;;21588:19;;;;;;:::i;:::-;:41;;;:19;;;;;;;;;;:41;21670:8;;;;:5;:8;;;;;;:15;;;21648:19;;21670:15;;;;;21648:12;;21661:5;;21648:19;;;;;;:::i;:::-;:37;;;:19;;;;;;;;;;;:37;21727:23;;;;:49;;;;;21775:1;21754:17;;:22;21727:49;21704:12;21717:5;21704:19;;;;;;;;:::i;:::-;:73;;;:19;;;;;;;;;;;:73;21796:7;;;;:::i;:::-;;;;21458:361;-1:-1:-1;21372:3:8;;;;:::i;:::-;;;;21336:494;;;;21921:5;21912:7;21905:22;21957:5;21948:7;21941:22;21998:5;21984:12;21977:27;22039:5;22025:12;22018:27;22080:5;22066:12;22059:27;21890:207;20805:1299;;;;;;;:::o;6151:604::-;781:13:9;:11;:13::i;:::-;6235:8:8::1;::::0;::::1;;6227:44;;;::::0;-1:-1:-1;;;6227:44:8;;14362:2:12;6227:44:8::1;::::0;::::1;14344:21:12::0;14401:2;14381:18;;;14374:30;14440:25;14420:18;;;14413:53;14483:18;;6227:44:8::1;14160:347:12::0;6227:44:8::1;6305:1;6290:12;:16;6282:46;;;::::0;-1:-1:-1;;;6282:46:8;;14714:2:12;6282:46:8::1;::::0;::::1;14696:21:12::0;14753:2;14733:18;;;14726:30;-1:-1:-1;;;14772:18:12;;;14765:47;14829:18;;6282:46:8::1;14512:341:12::0;6282:46:8::1;6347:21;:26:::0;6339:61:::1;;;::::0;-1:-1:-1;;;6339:61:8;;15060:2:12;6339:61:8::1;::::0;::::1;15042:21:12::0;15099:2;15079:18;;;15072:30;-1:-1:-1;;;15118:18:12;;;15111:52;15180:18;;6339:61:8::1;14858:346:12::0;6339:61:8::1;6497:1;6480:187;1624:3;6500:1;:14;6480:187;;6545:8;::::0;;;:5:::1;:8;::::0;;;;:15:::1;;::::0;::::1;;6544:16;6536:45;;;::::0;-1:-1:-1;;;6536:45:8;;15411:2:12;6536:45:8::1;::::0;::::1;15393:21:12::0;15450:2;15430:18;;;15423:30;-1:-1:-1;;;15469:18:12;;;15462:46;15525:18;;6536:45:8::1;15209:340:12::0;6536:45:8::1;6604:8;::::0;;;:5:::1;:8;::::0;;;;:22;:27;6596:59:::1;;;::::0;-1:-1:-1;;;6596:59:8;;15756:2:12;6596:59:8::1;::::0;::::1;15738:21:12::0;15795:2;15775:18;;;15768:30;-1:-1:-1;;;15814:18:12;;;15807:49;15873:18;;6596:59:8::1;15554:343:12::0;6596:59:8::1;6516:3:::0;::::1;::::0;::::1;:::i;:::-;;;;6480:187;;;-1:-1:-1::0;6679:8:8::1;:23:::0;;;6718:29:::1;::::0;160:25:12;;;6718:29:8::1;::::0;148:2:12;133:18;6718:29:8::1;14:177:12::0;20074:723:8;20144:13;20168:21;20200:22;20233:23;20267:24;20302:22;20335:19;20394:1;20385:6;:10;:33;;;;;1624:3;20399:6;:19;;20385:33;20377:61;;;;-1:-1:-1;;;20377:61:8;;10590:2:12;20377:61:8;;;10572:21:12;10629:2;10609:18;;;10602:30;-1:-1:-1;;;10648:18:12;;;10641:45;10703:18;;20377:61:8;10388:339:12;20377:61:8;20449:17;20469:13;;;:5;:13;;;;;;;;20515:11;;;;20541:18;;20574:19;;;;20608:20;;;;20643:14;:22;;;;;;;:29;20688:23;;20469:13;;20515:11;;;;;20541:18;;20574:19;20608:20;;20688:23;:54;;;;;20736:6;20715:17;;:27;20688:54;20758:16;;;;;20493:292;;;;-1:-1:-1;20493:292:8;;-1:-1:-1;20493:292:8;-1:-1:-1;20493:292:8;-1:-1:-1;20493:292:8;;-1:-1:-1;20758:16:8;-1:-1:-1;20074:723:8;-1:-1:-1;;20074:723:8:o;22867:600::-;23047:8;;23110:24;;;1624:3;23110:24;;;;;;;;;23078:4;;22982:31;;23110:24;;;;;;;;;;;-1:-1:-1;;23093:41:8;-1:-1:-1;23174:1:8;23157:235;1624:3;23177:1;:14;23157:235;;23213:17;23233:8;;;:5;:8;;;;;23260:11;;;;;;23256:69;;;23304:5;23292:17;;23256:69;23361:18;;23339:14;23354:3;23356:1;23354;:3;:::i;:::-;23339:19;;;;;;;;:::i;:::-;;;;;;;;;;:40;-1:-1:-1;23193:3:8;;;;:::i;:::-;;;;23157:235;;;;22867:600;;;:::o;7950:1538::-;8049:20;;-1:-1:-1;;;8049:20:8;;-1:-1:-1;;;;;1645:32:12;;8049:20:8;;;1627:51:12;8007:7:8;;;;1310:42;;8049:14;;1600:18:12;;8049:20:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8104:22;;-1:-1:-1;;;8104:22:8;;-1:-1:-1;;;;;1645:32:12;;8104:22:8;;;1627:51:12;8027:42:8;;-1:-1:-1;8080:21:8;;1223:42;;8104:16;;1600:18:12;;8104:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8080:46;;8174:18;;8159:11;:33;;:72;;;;8213:18;;8196:13;:35;;8159:72;8137:150;;;;-1:-1:-1;;;8137:150:8;;16426:2:12;8137:150:8;;;16408:21:12;16465:2;16445:18;;;16438:30;16504;16484:18;;;16477:58;16552:18;;8137:150:8;16224:352:12;8137:150:8;8314:14;;8370:15;;8353:32;;8349:113;;8408:42;8444:5;8408:31;8424:14;;8416:5;:22;;;;:::i;:::-;8408:3;;:7;:31::i;:::-;:35;;:42::i;:::-;8402:48;;8349:113;8527:23;;8565:729;8589:15;:22;8585:26;;8565:729;;;8633:13;8649:15;8665:1;8649:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;8649:18:8;;;8718:25;;;:18;:25;;;;;;;8682:61;;;;;;;;;;;;;;8649:18;8682:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8649:18;8682:61;;;;;;;;;;8649:18;;-1:-1:-1;8682:61:8;8772:511;;8818:8;:17;;;8814:454;;;8864:30;;-1:-1:-1;;;8864:30:8;;-1:-1:-1;;;;;1645:32:12;;;8864:30:8;;;1627:51:12;8897:1:8;;8864:24;;;;;;1600:18:12;;8864:30:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;:76;;;;;8925:15;8902:8;:20;;;:38;8864:76;8860:171;;;8987:8;:20;;;8969:38;;8860:171;8814:454;;;9083:29;;-1:-1:-1;;;9083:29:8;;-1:-1:-1;;;;;1645:32:12;;;9083:29:8;;;1627:51:12;9115:1:8;;9083:23;;;;;;1600:18:12;;9083:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;:75;;;;;9143:15;9120:8;:20;;;:38;9083:75;9079:170;;;9205:8;:20;;;9187:38;;9079:170;-1:-1:-1;;8613:3:8;;8565:729;;;-1:-1:-1;9361:19:8;;9357:101;;9403:43;9440:5;9403:32;9411:23;9419:15;9440:5;9411:23;:::i;:::-;9403:3;;:7;:32::i;:43::-;9397:49;;9357:101;-1:-1:-1;9477:3:8;7950:1538;-1:-1:-1;;;;7950:1538:8:o;25574:165::-;781:13:9;:11;:13::i;:::-;25650:22:8::1;:33:::0;;;::::1;;-1:-1:-1::0;;;25650:33:8::1;-1:-1:-1::0;;;;25650:33:8;;::::1;;::::0;;25699:32:::1;::::0;::::1;::::0;::::1;::::0;25675:8;7178:14:12;7171:22;7153:41;;7141:2;7126:18;;7013:187;13029:282:8;13108:16;;-1:-1:-1;;;;;13108:16:8;13094:10;:30;:57;;;;-1:-1:-1;13128:23:8;;;;13094:57;13086:84;;;;-1:-1:-1;;;13086:84:8;;;;;;;:::i;:::-;13206:1;13193:9;:14;;:35;;;;;13224:4;13211:9;:17;;13193:35;13185:66;;;;-1:-1:-1;;;13185:66:8;;16783:2:12;13185:66:8;;;16765:21:12;16822:2;16802:18;;;16795:30;-1:-1:-1;;;16841:18:12;;;16834:48;16899:18;;13185:66:8;16581:342:12;13185:66:8;13268:10;;:35;;;-1:-1:-1;;;13268:35:8;;;;;17139:25:12;;;17180:18;;;17173:30;;;;-1:-1:-1;17219:18:12;;;17212:29;-1:-1:-1;;;;;13268:10:8;;;;:20;;17258:18:12;;13268:35:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13029:282;:::o;24349:179::-;781:13:9;:11;:13::i;:::-;24445:14:8::1;:32:::0;;;;24488:14:::1;:32:::0;24349:179::o;6905:173::-;781:13:9;:11;:13::i;:::-;6986:18:8::1;:31:::0;;;7033:37:::1;::::0;160:25:12;;;7033:37:8::1;::::0;148:2:12;133:18;7033:37:8::1;14:177:12::0;22112:747:8;22345:24;;;1624:3;22345:24;;;;;;;;;22175:30;;;;;;;;22345:24;;;;;;;;;-1:-1:-1;;22389:21:8;;;1624:3;22389:21;;;;;;;;;22329:40;;-1:-1:-1;1624:3:8;-1:-1:-1;22389:21:8;;;;;;;;-1:-1:-1;;22430:21:8;;;1624:3;22430:21;;;;;;;;;22380:30;;-1:-1:-1;1624:3:8;-1:-1:-1;22430:21:8;;;;;;;;-1:-1:-1;;22480:24:8;;;1624:3;22480:24;;;;;;;;;22421:30;;-1:-1:-1;1624:3:8;-1:-1:-1;22480:24:8;;;;;;;;;;-1:-1:-1;;22462:42:8;-1:-1:-1;22522:9:8;22517:335;1624:3;22537:1;:13;22517:335;;;22572:17;22592:5;22572:17;22598:5;:1;22602;22598:5;:::i;:::-;22592:12;;;;;;;;;;;22572:32;;22638:4;:18;;;22619:13;22633:1;22619:16;;;;;;;;:::i;:::-;;;;;;;;;;:37;22683:11;;;;22671:9;;22683:11;;;;;22671:6;;22678:1;;22671:9;;;;;;:::i;:::-;:23;;;:9;;;;;;;;;;;:23;22722;;;;:53;;;;-1:-1:-1;22770:5:8;:1;22774;22770:5;:::i;:::-;22749:17;;:26;22722:53;22709:6;22716:1;22709:9;;;;;;;;:::i;:::-;:67;;;:9;;;;;;;;;;;:67;22812:14;:21;22827:5;:1;22831;22827:5;:::i;:::-;22812:21;;;;;;;;;;;:28;;;;22791:15;22807:1;22791:18;;;;;;;;:::i;:::-;;;;;;;;;;:49;-1:-1:-1;22552:3:8;;22517:335;;;;22112:747;;;;:::o;1091:103:9:-;781:13;:11;:13::i;:::-;1156:30:::1;1183:1;1156:18;:30::i;:::-;1091:103::o:0;24894:215:8:-;781:13:9;:11;:13::i;:::-;25008:3:8::1;24990:14;:21;;24982:70;;;::::0;-1:-1:-1;;;24982:70:8;;17619:2:12;24982:70:8::1;::::0;::::1;17601:21:12::0;17658:2;17638:18;;;17631:30;17697:34;17677:18;;;17670:62;-1:-1:-1;;;17748:18:12;;;17741:34;17792:19;;24982:70:8::1;17417:400:12::0;24982:70:8::1;25063:21;:38:::0;24894:215::o;24536:350::-;781:13:9;:11;:13::i;:::-;24632:14:8::1;;24622:6;:24;;24614:65;;;::::0;-1:-1:-1;;;24614:65:8;;18024:2:12;24614:65:8::1;::::0;::::1;18006:21:12::0;18063:2;18043:18;;;18036:30;18102;18082:18;;;18075:58;18150:18;;24614:65:8::1;17822:352:12::0;24614:65:8::1;24707:14;::::0;:26:::1;::::0;24726:6;24707:18:::1;:26::i;:::-;24690:14;:43:::0;24752:11:::1;::::0;;:40:::1;::::0;-1:-1:-1;;;24752:40:8;;24773:10:::1;24752:40:::0;;::::1;18353:51:12::0;;;;18420:18;;;18413:34;;;-1:-1:-1;;;;;24752:11:8::1;::::0;:20:::1;::::0;18326:18:12;;24752:40:8::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24744:75;;;::::0;-1:-1:-1;;;24744:75:8;;18660:2:12;24744:75:8::1;::::0;::::1;18642:21:12::0;18699:2;18679:18;;;18672:30;-1:-1:-1;;;18718:18:12;;;18711:52;18780:18;;24744:75:8::1;18458:346:12::0;24744:75:8::1;24835:43;::::0;;24859:10:::1;18353:51:12::0;;18435:2;18420:18;;18413:34;;;24835:43:8::1;::::0;18326:18:12;24835:43:8::1;18179:274:12::0;17915:225:8;781:13:9;:11;:13::i;:::-;17991:29:8::1;::::0;:34;17983:63:::1;;;::::0;-1:-1:-1;;;17983:63:8;;19011:2:12;17983:63:8::1;::::0;::::1;18993:21:12::0;19050:2;19030:18;;;19023:30;-1:-1:-1;;;19069:18:12;;;19062:46;19125:18;;17983:63:8::1;18809:340:12::0;17983:63:8::1;18057:29;:31:::0;;;:29:::1;:31;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;18131:1:8::1;18099:29;:33:::0;17915:225::o;13319:2436::-;13387:16;;-1:-1:-1;;;;;13387:16:8;13373:10;:30;:57;;;;-1:-1:-1;13407:23:8;;;;13373:57;13365:84;;;;-1:-1:-1;;;13365:84:8;;;;;;;:::i;:::-;13495:17;;13462:24;13489;;;:5;:24;;;;;;13560:11;;;:36;;-1:-1:-1;;;13560:36:8;;13590:4;13560:36;;;1627:51:12;;;;13489:24:8;;13462;-1:-1:-1;;;;;13560:11:8;;:21;;1600:18:12;;13560:36:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13531:65;-1:-1:-1;13611:22:8;;13607:306;;13669:16;;:40;;13690:18;13669:20;:40::i;:::-;13650:16;:59;13742:17;;13724:56;;13761:18;13724:17;:56::i;:::-;13795:23;;;:44;;;13854:26;:47;;;13607:306;13954:23;;;;14005:16;;14023:13;;13993:64;;;8400:25:12;;;8456:2;8441:18;;8434:34;;;;8484:18;;8477:34;;;13993:64:8;;8388:2:12;8373:18;13993:64:8;;;;;;;14124:23;14150:59;14205:3;14150:50;14178:21;;14150:11;:23;;;:27;;:50;;;;:::i;:59::-;14124:85;;14220:28;14251:44;14279:15;14251:11;:23;;;:27;;:44;;;;:::i;:::-;14220:75;-1:-1:-1;14310:19:8;;14306:265;;14376:14;;14439:48;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14439:48:8;-1:-1:-1;;;14439:48:8;;;14368:134;;14347:15;;-1:-1:-1;;;;;14376:14:8;;14404:15;;14368:134;;14439:48;14368:134;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14346:156;;;14525:10;14517:42;;;;-1:-1:-1;;;14517:42:8;;19662:2:12;14517:42:8;;;19644:21:12;19701:2;19681:18;;;19674:30;-1:-1:-1;;;19720:18:12;;;19713:49;19779:18;;14517:42:8;19460:343:12;14517:42:8;14331:240;14306:265;14633:24;;14629:190;;14693:12;;:50;;14675:12;;-1:-1:-1;;;;;14693:12:8;;14718:20;;14675:12;14693:50;14675:12;14693:50;14718:20;14693:12;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14674:69;;;14766:7;14758:49;;;;-1:-1:-1;;;14758:49:8;;20010:2:12;14758:49:8;;;19992:21:12;20049:2;20029:18;;;20022:30;20088:31;20068:18;;;20061:59;20137:18;;14758:49:8;19808:353:12;14758:49:8;14659:160;14629:190;14831:32;:30;:32::i;:::-;14935:1;14907:29;;;14947:18;;;:26;;-1:-1:-1;;14947:26:8;;;14984;;;:30;;;15025:27;;;:31;;;15067:23;;;:27;;;15105:23;;;:27;;;15224:17;;15209:33;;:14;:33;;;;;;15253:128;15277:17;;15273:21;;15253:128;;;15323:12;:31;15336:17;;15323:31;;;;;;;;;;;:46;15355:10;15366:1;15355:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15355:13:8;15323:46;;;;;;;;;;;;15316:53;;;15355:13;15316:53;;;;;-1:-1:-1;;15316:53:8;;;15296:3;15253:128;;;-1:-1:-1;15413:17:8;;15398:33;;;;:14;:33;;;;;15391:40;;;:::i;:::-;1624:3;15506:17;;:30;:58;;15543:17;;:21;;15563:1;15543:21;:::i;:::-;15506:58;;;15539:1;15506:58;15486:17;:78;15577:23;:31;;-1:-1:-1;;15577:31:8;;;15619:16;:29;;-1:-1:-1;;;;;;15619:29:8;;;15681:16;;15666:52;;;20340:25:12;;;20396:2;20381:18;;20374:34;;;15666:52:8;;20313:18:12;15666:52:8;;;;;;;15729:16;:18;;;:16;:18;;;:::i;:::-;;;;;;13354:2401;;;;;;13319:2436::o;23941:376::-;23998:26;24035:18;24064:21;24206:1;24187:16;;:20;:47;;24233:1;24187:47;;;24229:1;24210:16;;:20;;;;:::i;:::-;24249:16;;24280:18;;24165:144;;;;;;23941:376;;;:::o;2555:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2555:32:8;;-1:-1:-1;2555:32:8;:::o;7086:601::-;781:13:9;:11;:13::i;:::-;7258:4:8::1;7242:12;:20;;7234:49;;;::::0;-1:-1:-1;;;7234:49:8;;20621:2:12;7234:49:8::1;::::0;::::1;20603:21:12::0;20660:2;20640:18;;;20633:30;-1:-1:-1;;;20679:18:12;;;20672:46;20735:18;;7234:49:8::1;20419:340:12::0;7234:49:8::1;-1:-1:-1::0;;;;;7304:26:8;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35:::1;;::::0;::::1;;7303:36;7295:62;;;::::0;-1:-1:-1;;;7295:62:8;;20966:2:12;7295:62:8::1;::::0;::::1;20948:21:12::0;21005:2;20985:18;;;20978:30;-1:-1:-1;;;21024:18:12;;;21017:43;21077:18;;7295:62:8::1;20764:337:12::0;7295:62:8::1;7399:168;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;7399:168:8;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;7517:4:::1;7399:168:::0;;;;;;;::::1;;::::0;;;;;;;-1:-1:-1;7370:26:8;;;:18:::1;:26:::0;;;;;:197;;;;;::::1;-1:-1:-1::0;;;;;;7370:197:8;;::::1;;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;7370:197:8;::::1;;::::0;;;;-1:-1:-1;;7370:197:8;;;;;;;;;;::::1;::::0;;;7580:15:::1;:28:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;7624:55;;21302:51:12;;;21369:18;;21362:34;;;21412:18;;;21405:50;7624:55:8::1;::::0;21275:18:12;7624:55:8::1;;;;;;;7086:601:::0;;;:::o;25355:211::-;781:13:9;:11;:13::i;:::-;25452:1:8::1;25440:9;:13;25432:39;;;::::0;-1:-1:-1;;;25432:39:8;;21668:2:12;25432:39:8::1;::::0;::::1;21650:21:12::0;21707:2;21687:18;;;21680:30;-1:-1:-1;;;21726:18:12;;;21719:43;21779:18;;25432:39:8::1;21466:337:12::0;25432:39:8::1;25482:15;:27:::0;;;25525:33:::1;::::0;160:25:12;;;25525:33:8::1;::::0;148:2:12;133:18;25525:33:8::1;14:177:12::0;26405:539:8;781:13:9;:11;:13::i;:::-;-1:-1:-1;;;;;26504:19:8;::::1;;::::0;;;:8:::1;:19:::0;;;;;;::::1;;:43:::0;::::1;;;-1:-1:-1::0;;;;;;26528:19:8;::::1;;::::0;;;:8:::1;:19:::0;;;;;;::::1;;26527:20;26504:43;26496:71;;;::::0;-1:-1:-1;;;26496:71:8;;22010:2:12;26496:71:8::1;::::0;::::1;21992:21:12::0;22049:2;22029:18;;;22022:30;-1:-1:-1;;;22068:18:12;;;22061:45;22123:18;;26496:71:8::1;21808:339:12::0;26496:71:8::1;-1:-1:-1::0;;;;;26586:23:8;::::1;26578:51;;;;-1:-1:-1::0;;;26578:51:8::1;;;;;;;:::i;:::-;26647:6;26642:165;26663:1;26659;:5;26642:165;;;26704:9;-1:-1:-1::0;;;;;26690:23:8::1;:7;26698:1;26690:10;;;;;;;:::i;:::-;;::::0;-1:-1:-1;;;;;26690:10:8::1;:23:::0;26686:110:::1;;26747:9;26734:7;26742:1;26734:10;;;;;;;:::i;:::-;;:22:::0;;-1:-1:-1;;;;;;26734:22:8::1;-1:-1:-1::0;;;;;26734:22:8;;;::::1;::::0;;;::::1;::::0;;26775:5:::1;;26686:110;26666:3;;26642:165;;;-1:-1:-1::0;;;;;;26819:19:8;;::::1;26841:5;26819:19:::0;;;:8:::1;:19:::0;;;;;;;:27;;-1:-1:-1;;26819:27:8;;::::1;::::0;;;26857:19;;::::1;::::0;;;;;;;:26;;;;::::1;-1:-1:-1::0;26857:26:8::1;::::0;;;26901:35;;22326:51:12;;;22393:18;;22386:60;26901:35:8::1;::::0;22299:18:12;26901:35:8::1;22152:300:12::0;25970:245:8;781:13:9;:11;:13::i;:::-;-1:-1:-1;;;;;26060:26:8;::::1;26052:54;;;;-1:-1:-1::0;;;26052:54:8::1;;;;;;;:::i;:::-;26117:14;:29:::0;;-1:-1:-1;;;;;;26117:29:8::1;-1:-1:-1::0;;;;;26117:29:8;::::1;::::0;;::::1;::::0;;;26157:50:::1;::::0;-1:-1:-1;;;26157:50:8;;::::1;::::0;::::1;1627:51:12::0;;;;1130:42:8::1;::::0;26157:36:::1;::::0;1600:18:12;;26157:50:8::1;1481:203:12::0;25117:230:8;781:13:9;:11;:13::i;:::-;-1:-1:-1;;;;;25203:27:8;::::1;25195:55;;;;-1:-1:-1::0;;;25195:55:8::1;;;;;;;:::i;:::-;25261:12;:28:::0;;-1:-1:-1;;;;;;25261:28:8::1;-1:-1:-1::0;;;;;25261:28:8;::::1;::::0;;::::1;::::0;;;25305:34:::1;::::0;1627:51:12;;;25305:34:8::1;::::0;1615:2:12;1600:18;25305:34:8::1;1481:203:12::0;18148:333:8;18220:10;18211:20;;;;:8;:20;;;;;;;;18203:45;;;;-1:-1:-1;;;18203:45:8;;22659:2:12;18203:45:8;;;22641:21:12;22698:2;22678:18;;;22671:30;-1:-1:-1;;;22717:18:12;;;22710:42;22769:18;;18203:45:8;22457:336:12;18203:45:8;18288:29;;18268:50;;;;:19;:50;;;;;;;;18319:10;18268:62;;;;;;;;;;18267:63;18259:90;;;;-1:-1:-1;;;18259:90:8;;23000:2:12;18259:90:8;;;22982:21:12;23039:2;23019:18;;;23012:30;-1:-1:-1;;;23058:18:12;;;23051:44;23112:18;;18259:90:8;22798:338:12;18259:90:8;18382:29;;18362:50;;;;:19;:50;;;;;;;;18413:10;18362:62;;;;;;;:69;;-1:-1:-1;;18362:69:8;18427:4;18362:69;;;18442:29;:31;;;;;;:::i;:::-;;;;;;18148:333::o;9496:2054::-;325:21:10;:19;:21::i;:::-;9601:8:8::1;::::0;::::1;;9600:9;9592:40;;;::::0;-1:-1:-1;;;9592:40:8;;23343:2:12;9592:40:8::1;::::0;::::1;23325:21:12::0;23382:2;23362:18;;;23355:30;-1:-1:-1;;;23401:18:12;;;23394:48;23459:18;;9592:40:8::1;23141:342:12::0;9592:40:8::1;9659:1;9651:5;:9;9643:43;;;::::0;-1:-1:-1;;;9643:43:8;;23690:2:12;9643:43:8::1;::::0;::::1;23672:21:12::0;23729:2;23709:18;;;23702:30;-1:-1:-1;;;23748:18:12;;;23741:51;23809:18;;9643:43:8::1;23488:345:12::0;9643:43:8::1;9707:21;9731:24;9744:10;9731:12;:24::i;:::-;9707:48;;9766:21;9805:13;9790:12;;:28;;;;:::i;:::-;9766:52:::0;-1:-1:-1;9829:27:8::1;9859:24;9766:52:::0;9877:5;9859:17:::1;:24::i;:::-;9829:54;;9915:19;9902:9;:32;9894:65;;;::::0;-1:-1:-1;;;9894:65:8;;24040:2:12;9894:65:8::1;::::0;::::1;24022:21:12::0;24079:2;24059:18;;;24052:30;-1:-1:-1;;;24098:18:12;;;24091:50;24158:18;;9894:65:8::1;23838:344:12::0;9894:65:8::1;10023:22;::::0;-1:-1:-1;;;10023:22:8;::::1;;;10019:121;;;10083:15;;10070:9;:28;;10062:66;;;::::0;-1:-1:-1;;;10062:66:8;;24389:2:12;10062:66:8::1;::::0;::::1;24371:21:12::0;24428:2;24408:18;;;24401:30;24467:27;24447:18;;;24440:55;24512:18;;10062:66:8::1;24187:349:12::0;10062:66:8::1;10152:23;10178:39;10192:24;:13:::0;10210:5;10192:17:::1;:24::i;:::-;10178:9;::::0;:13:::1;:39::i;:::-;10250:18;::::0;10152:65;;-1:-1:-1;10281:949:8::1;10288:19:::0;;10281:949:::1;;10324:17;10344:18:::0;;;:5:::1;:18;::::0;;;;10412;;10399:8:::1;::::0;10344:18;;10324:17;10399:32:::1;::::0;:12:::1;:32::i;:::-;10377:54:::0;-1:-1:-1;10464:15:8;;10460:715:::1;;10500:23;10544:11;10526:15;:29;:61;;10572:15;10526:61;;;10558:11;10526:61;10500:87;;10606:65;10617:10;10629:11;10642:15;10659:11;10606:10;:65::i;:::-;10708:36;:15:::0;10728;10708:19:::1;:36::i;:::-;10690:54;;10791:8;;10769:4;:18;;;:30;10765:294;;10838:4;10824:11:::0;;::::1;:18:::0;;-1:-1:-1;;10824:18:8::1;::::0;;::::1;::::0;;10894:19:::1;::::0;::::1;::::0;10915:20:::1;::::0;::::1;::::0;10937:18;;10870:86:::1;::::0;;24772:25:12;;;24828:2;24813:18;;24806:34;;;;24856:18;;24849:34;;;;24914:2;24899:18;;24892:34;10870:86:8::1;::::0;24759:3:12;24744:19;10870:86:8::1;;;;;;;1624:3;10993:11;:24;:46;;11024:15;:11:::0;11038:1:::1;11024:15;:::i;:::-;10993:46;;;11020:1;10993:46;10979:60;;10765:294;10481:593;10460:715;;;1624:3;11113:11;:24;:46;;11144:15;:11:::0;11158:1:::1;11144:15;:::i;:::-;11113:46;;;11140:1;11113:46;11099:60;;10460:715;11213:5;11191:18;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;10281:949:8::1;::::0;-1:-1:-1;;;10281:949:8::1;;11289:17;11309:24;:13:::0;11327:5;11309:17:::1;:24::i;:::-;11390:18;::::0;11384:25:::1;::::0;;;:5:::1;:25;::::0;;;;:37:::1;;::::0;11289:44;;-1:-1:-1;11384:52:8::1;::::0;11289:44;11384:41:::1;:52::i;:::-;11350:18;::::0;11344:25:::1;::::0;;;:5:::1;:25;::::0;;;;:37:::1;;:92:::0;11462:12:::1;::::0;:27:::1;::::0;11479:9;11462:16:::1;:27::i;:::-;11447:12;:42:::0;-1:-1:-1;11510:18:8::1;:32:::0;-1:-1:-1;369:20:10;;-1:-1:-1;369:18:10;;-1:-1:-1;;369:20:10:i;:::-;9496:2054:8;;:::o;26227:170::-;781:13:9;:11;:13::i;:::-;26320:14:8::1;:7:::0;26330:4:::1;26320:14;:::i;:::-;26302:15;:32:::0;;;26350:39:::1;::::0;160:25:12;;;26350:39:8::1;::::0;148:2:12;133:18;26350:39:8::1;14:177:12::0;1202:220:9;781:13;:11;:13::i;:::-;-1:-1:-1;;;;;1287:22:9;::::1;1283:93;;1333:31;::::0;-1:-1:-1;;;1333:31:9;;1361:1:::1;1333:31;::::0;::::1;1627:51:12::0;1600:18;;1333:31:9::1;1481:203:12::0;1283:93:9::1;1386:28;1405:8;1386:18;:28::i;:::-;1202:220:::0;:::o;18489:385:8:-;781:13:9;:11;:13::i;:::-;2750:1:8::1;18565:29;;:52;;18557:88;;;::::0;-1:-1:-1;;;18557:88:8;;25312:2:12;18557:88:8::1;::::0;::::1;25294:21:12::0;25351:2;25331:18;;;25324:30;25390:25;25370:18;;;25363:53;25433:18;;18557:88:8::1;25110:347:12::0;18557:88:8::1;18656:20;:18;:20::i;:::-;18729:1;18697:29;:33:::0;;;18741:126:::1;18762:1;18758;:5;18741:126;;;18805:29;::::0;18850:5:::1;18785:50:::0;;;:19:::1;:50;::::0;;;;18850:5;18836:7:::1;18844:1:::0;18836:10:::1;::::0;::::1;;;;;:::i;:::-;;::::0;-1:-1:-1;;;;;18836:10:8::1;18785:62:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18785:62:8;:70;;-1:-1:-1;;18785:70:8::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18765:3:8::1;18741:126;;7695:247:::0;781:13:9;:11;:13::i;:::-;-1:-1:-1;;;;;7782:26:8;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35:::1;;::::0;::::1;;7774:58;;;::::0;-1:-1:-1;;;7774:58:8;;25664:2:12;7774:58:8::1;::::0;::::1;25646:21:12::0;25703:2;25683:18;;;25676:30;-1:-1:-1;;;25722:18:12;;;25715:40;25772:18;;7774:58:8::1;25462:334:12::0;7774:58:8::1;-1:-1:-1::0;;;;;7843:26:8;::::1;7881:5;7843:26:::0;;;:18:::1;:26;::::0;;;;;;;;:35:::1;;:43:::0;;-1:-1:-1;;7843:43:8::1;::::0;;7902:32;;1627:51:12;;;7902:32:8::1;::::0;1600:18:12;7902:32:8::1;1481:203:12::0;917:166:9;895:6;;-1:-1:-1;;;;;895:6:9;681:10:0;977:23:9;973:103;;1024:40;;-1:-1:-1;;;1024:40:9;;681:10:0;1024:40:9;;;1627:51:12;1600:18;;1024:40:9;1481:203:12;1413:98:11;1471:7;1498:5;1502:1;1498;:5;:::i;:::-;1491:12;;1413:98;;;;;:::o;1519:::-;1577:7;1604:5;1608:1;1604;:5;:::i;1430:191:9:-;1523:6;;;-1:-1:-1;;;;;1540:17:9;;;-1:-1:-1;;;;;;1540:17:9;;;;;;;1573:40;;1523:6;;;1540:17;1523:6;;1573:40;;1504:16;;1573:40;1493:128;1430:191;:::o;1307:98:11:-;1365:7;1392:5;1396:1;1392;:5;:::i;1201:98::-;1259:7;1286:5;1290:1;1286;:5;:::i;15776:1132:8:-;15866:18;;;:54;;-1:-1:-1;15888:13:8;;;;:5;:13;;;;;:27;:32;15866:54;15862:67;;;15776:1132;;:::o;15862:67::-;15941:24;16011:22;;;:14;:22;;;;;15941:24;16046:688;16070:17;;16066:21;;16046:688;;;16109:17;16129:10;16140:1;16129:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;16179:20;;;:12;:20;;;;;;-1:-1:-1;;;;;16129:13:8;;;16179:31;;;;;;;;;:38;16129:13;;-1:-1:-1;16250:15:8;;16246:477;;16286:23;16347:13;;;:5;:13;;;;;:27;16312:63;;:30;:11;16328:13;16312:15;:30::i;:63::-;16286:89;-1:-1:-1;16398:19:8;;16394:314;;16450:11;;;:48;;-1:-1:-1;;;16450:48:8;;-1:-1:-1;;;;;18371:32:12;;;16450:48:8;;;18353:51:12;;;;18420:18;;;18413:34;;;16450:11:8;;;:20;;18326:18:12;;16450:48:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16442:76;;;;-1:-1:-1;;;16442:76:8;;26225:2:12;16442:76:8;;;26207:21:12;26264:2;26244:18;;;26237:30;-1:-1:-1;;;26283:18:12;;;26276:45;26338:18;;16442:76:8;26023:339:12;16442:76:8;16560:37;:16;16581:15;16560:20;:37::i;:::-;16541:56;;16643:9;-1:-1:-1;;;;;16625:63:8;;16654:15;16671:16;;16625:63;;;;;;20340:25:12;;;20396:2;20381:18;;20374:34;20328:2;20313:18;;20166:248;16625:63:8;;;;;;;;16394:314;16267:456;16246:477;-1:-1:-1;;16089:3:8;;16046:688;;;-1:-1:-1;16746:16:8;16765:35;:13;16783:16;16765:17;:35::i;:::-;16746:54;-1:-1:-1;16815:12:8;;16811:90;;16861:14;;:28;;16880:8;16861:18;:28::i;:::-;16844:14;:45;15851:1057;;;15776:1132;;:::o;16916:963::-;17037:49;;-1:-1:-1;;;17037:49:8;;17065:4;17037:49;;;22326:51:12;;;22393:18;;;22386:60;17003:21:8;;-1:-1:-1;;;;;1023:42:8;17037:19;;22299:18:12;;17037:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17125:21:8;17097:25;17179:37;17125:21;17201:14;17179:21;:37::i;:::-;17229:47;;-1:-1:-1;;;17229:47:8;;17255:4;17229:47;;;22326:51:12;;;22393:18;;;22386:60;17157:59:8;;-1:-1:-1;;;;;;1023:42:8;17229:17;;22299:18:12;;17229:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17310:21:8;17287:20;17362:35;17310:21;17379:17;17362:16;:35::i;:::-;17342:55;-1:-1:-1;17410:19:8;17432:26;:11;17342:55;17432:15;:26::i;:::-;17410:48;-1:-1:-1;17475:15:8;;17471:401;;17534:14;;17593:47;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17593:47:8;-1:-1:-1;;;17593:47:8;;;17526:129;;17508:12;;-1:-1:-1;;;;;17534:14:8;;17562:11;;17526:129;;17593:47;17526:129;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17507:148;;;17678:7;17670:48;;;;-1:-1:-1;;;17670:48:8;;26569:2:12;17670:48:8;;;26551:21:12;26608:2;26588:18;;;26581:30;26647;26627:18;;;26620:58;26695:18;;17670:48:8;26367:352:12;17670:48:8;17747:14;;;;;;;;;-1:-1:-1;;;;;17747:14:8;-1:-1:-1;;;;;17747:31:8;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17814:46:8;;;20340:25:12;;;20396:2;20381:18;;20374:34;;;17814:46:8;;-1:-1:-1;20313:18:12;;-1:-1:-1;17814:46:8;;;;;;;17492:380;17471:401;16967:912;;;;;;16916:963::o;405:150:10:-;185:1;463:7;;:19;455:63;;;;-1:-1:-1;;;455:63:10;;26926:2:12;455:63:10;;;26908:21:12;26965:2;26945:18;;;26938:30;27004:33;26984:18;;;26977:61;27055:18;;455:63:10;26724:355:12;455:63:10;185:1;529:7;:18;405:150::o;11558:693:8:-;11662:17;11682:13;;;:5;:13;;;;;;;;11720:12;:20;;;;;-1:-1:-1;;;;;11720:26:8;;;;;;;;;:33;11682:13;;11720:38;11716:104;;11775:22;;;;:14;:22;;;;;;;:33;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11775:33:8;-1:-1:-1;;;;;11775:33:8;;;;;11716:104;11868:20;;;;:12;:20;;;;;;;;-1:-1:-1;;;;;11868:26:8;;;;;;;;;:33;:45;;11906:6;11868:37;:45::i;:::-;11832:20;;;;:12;:20;;;;;;;;-1:-1:-1;;;;;11832:26:8;;;;;;;;;:81;;;11924:38;;:52;;-1:-1:-1;;11924:52:8;;;;;;;12018:18;;:30;;12041:6;12018:22;:30::i;:::-;11997:51;;12059:185;;;;12113:19;;;;:31;;12137:6;12113:23;:31::i;:::-;12091:19;;;:53;12059:185;;;12200:20;;;;:32;;12225:6;12200:24;:32::i;:::-;12177:20;;;:55;11651:600;11558:693;;;;:::o;563:79:10:-;141:1;612:7;:22;563:79::o;18882:1161:8:-;19008:11;;;:36;;-1:-1:-1;;;19008:36:8;;19038:4;19008:36;;;1627:51:12;;;;18952:21:8;;18931:18;;-1:-1:-1;;;;;19008:11:8;;:21;;1600:18:12;;19008:36:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18984:60;;19066:12;19084:7;895:6:9;;-1:-1:-1;;;;;895:6:9;;822:87;19084:7:8;-1:-1:-1;;;;;19084:12:8;19104:10;19084:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19065:54;;;19138:7;19130:39;;;;-1:-1:-1;;;19130:39:8;;27286:2:12;19130:39:8;;;27268:21:12;27325:2;27305:18;;;27298:30;-1:-1:-1;;;27344:18:12;;;27337:49;27403:18;;19130:39:8;27084:343:12;19130:39:8;19198:11;;-1:-1:-1;;;;;19198:11:8;:20;19219:7;895:6:9;;-1:-1:-1;;;;;895:6:9;;822:87;19219:7:8;19198:44;;-1:-1:-1;;;;;;19198:44:8;;;;;;;-1:-1:-1;;;;;18371:32:12;;;19198:44:8;;;18353:51:12;18420:18;;;18413:34;;;18326:18;;19198:44:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19190:79;;;;-1:-1:-1;;;19190:79:8;;18660:2:12;19190:79:8;;;18642:21:12;18699:2;18679:18;;;18672:30;-1:-1:-1;;;18718:18:12;;;18711:52;18780:18;;19190:79:8;18458:346:12;19190:79:8;19323:29;;19295:85;;;8400:25:12;;;8456:2;8441:18;;8434:34;;;8484:18;;8477:34;;;19295:85:8;;8388:2:12;8373:18;19295:85:8;;;;;;;19438:1;19421:319;1624:3;19441:1;:14;19421:319;;19484:8;;;;:5;:8;;;;;;;;19477:15;;;;;;;;-1:-1:-1;;19477:15:8;;;;;;;;;;;;;;;;;;;;;;;;;;19538:14;:17;;;;;;19570:120;19594:17;;19590:21;;19570:120;;;19644:12;:15;19657:1;19644:15;;;;;;;;;;;:30;19660:10;19671:1;19660:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19660:13:8;19644:30;;;;;;;;;;;;19637:37;;;19660:13;19637:37;;;;;-1:-1:-1;;19637:37:8;;;19613:3;19570:120;;;-1:-1:-1;19711:17:8;;;;:14;:17;;;;;19704:24;;;:::i;:::-;-1:-1:-1;19457:3:8;;;;:::i;:::-;;;;19421:319;;;-1:-1:-1;;19773:1:8;19752:18;:22;;;19785:12;:16;;;19812;:20;;;19843:13;:17;;;19871:14;:18;;;19900:23;:31;;-1:-1:-1;;19900:31:8;;;19942:16;:29;;-1:-1:-1;;;;;;19942:29:8;;;20013:18;:22;-1:-1:-1;;18882:1161:8:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:118:12:-;282:5;275:13;268:21;261:5;258:32;248:60;;304:1;301;294:12;319:241;375:6;428:2;416:9;407:7;403:23;399:32;396:52;;;444:1;441;434:12;396:52;483:9;470:23;502:28;524:5;502:28;:::i;:::-;549:5;319:241;-1:-1:-1;;;319:241:12:o;565:226::-;624:6;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;-1:-1:-1;738:23:12;;565:226;-1:-1:-1;565:226:12:o;1130:346::-;1198:6;1206;1259:2;1247:9;1238:7;1234:23;1230:32;1227:52;;;1275:1;1272;1265:12;1227:52;-1:-1:-1;;1320:23:12;;;1440:2;1425:18;;;1412:32;;-1:-1:-1;1130:346:12:o;1689:173::-;1757:20;;-1:-1:-1;;;;;1806:31:12;;1796:42;;1786:70;;1852:1;1849;1842:12;1786:70;1689:173;;;:::o;1867:186::-;1926:6;1979:2;1967:9;1958:7;1954:23;1950:32;1947:52;;;1995:1;1992;1985:12;1947:52;2018:29;2037:9;2018:29;:::i;2058:420::-;2111:3;2149:5;2143:12;2176:6;2171:3;2164:19;2208:4;2203:3;2199:14;2192:21;;2247:4;2240:5;2236:16;2270:1;2280:173;2294:6;2291:1;2288:13;2280:173;;;2355:13;;2343:26;;2398:4;2389:14;;;;2426:17;;;;2316:1;2309:9;2280:173;;;-1:-1:-1;2469:3:12;;2058:420;-1:-1:-1;;;;2058:420:12:o;2483:433::-;2533:3;2571:5;2565:12;2598:6;2593:3;2586:19;2630:4;2625:3;2621:14;2614:21;;2669:4;2662:5;2658:16;2692:1;2702:189;2716:6;2713:1;2710:13;2702:189;;;2791:13;;2784:21;2777:29;2765:42;;2836:4;2827:14;;;;2864:17;;;;2738:1;2731:9;2702:189;;2921:1053;3394:3;3383:9;3376:22;3357:4;3421:57;3473:3;3462:9;3458:19;3450:6;3421:57;:::i;:::-;3526:9;3518:6;3514:22;3509:2;3498:9;3494:18;3487:50;3560:44;3597:6;3589;3560:44;:::i;:::-;3546:58;;3652:9;3644:6;3640:22;3635:2;3624:9;3620:18;3613:50;3686:41;3720:6;3712;3686:41;:::i;:::-;3672:55;;3775:9;3767:6;3763:22;3758:2;3747:9;3743:18;3736:50;3809:41;3843:6;3835;3809:41;:::i;:::-;3795:55;;3899:9;3891:6;3887:22;3881:3;3870:9;3866:19;3859:51;3927:41;3961:6;3953;3927:41;:::i;:::-;3919:49;2921:1053;-1:-1:-1;;;;;;;;2921:1053:12:o;4611:413::-;4840:6;4829:9;4822:25;4897:6;4890:14;4883:22;4878:2;4867:9;4863:18;4856:50;4942:2;4937;4926:9;4922:18;4915:30;4803:4;4962:56;5014:2;5003:9;4999:18;4991:6;4962:56;:::i;:::-;4954:64;4611:413;-1:-1:-1;;;;;4611:413:12:o;6151:857::-;6552:3;6541:9;6534:22;6515:4;6579:57;6631:3;6620:9;6616:19;6608:6;6579:57;:::i;:::-;6684:9;6676:6;6672:22;6667:2;6656:9;6652:18;6645:50;6718:41;6752:6;6744;6718:41;:::i;:::-;6704:55;;6807:9;6799:6;6795:22;6790:2;6779:9;6775:18;6768:50;6841:41;6875:6;6867;6841:41;:::i;:::-;6827:55;;6930:9;6922:6;6918:22;6913:2;6902:9;6898:18;6891:50;6958:44;6995:6;6987;6958:44;:::i;:::-;6950:52;6151:857;-1:-1:-1;;;;;;;6151:857:12:o;8749:435::-;8823:6;8831;8839;8892:2;8880:9;8871:7;8867:23;8863:32;8860:52;;;8908:1;8905;8898:12;8860:52;8931:29;8950:9;8931:29;:::i;:::-;8921:39;-1:-1:-1;9029:2:12;9014:18;;9001:32;;-1:-1:-1;9109:2:12;9094:18;;9081:32;9122:30;9081:32;9122:30;:::i;:::-;9171:7;9161:17;;;8749:435;;;;;:::o;9189:300::-;9257:6;9265;9318:2;9306:9;9297:7;9293:23;9289:32;9286:52;;;9334:1;9331;9324:12;9286:52;9379:23;;;-1:-1:-1;9445:38:12;9479:2;9464:18;;9445:38;:::i;:::-;9435:48;;9189:300;;;;;:::o;9494:260::-;9562:6;9570;9623:2;9611:9;9602:7;9598:23;9594:32;9591:52;;;9639:1;9636;9629:12;9591:52;9662:29;9681:9;9662:29;:::i;:::-;9652:39;;9710:38;9744:2;9733:9;9729:18;9710:38;:::i;10022:361::-;10087:6;10095;10148:2;10136:9;10127:7;10123:23;10119:32;10116:52;;;10164:1;10161;10154:12;10116:52;10209:23;;;-1:-1:-1;10308:2:12;10293:18;;10280:32;10321:30;10280:32;10321:30;:::i;:::-;10370:7;10360:17;;;10022:361;;;;;:::o;10732:245::-;10799:6;10852:2;10840:9;10831:7;10827:23;10823:32;10820:52;;;10868:1;10865;10858:12;10820:52;10900:9;10894:16;10919:28;10941:5;10919:28;:::i;10982:338::-;11184:2;11166:21;;;11223:2;11203:18;;;11196:30;-1:-1:-1;;;11257:2:12;11242:18;;11235:44;11311:2;11296:18;;10982:338::o;13280:339::-;13482:2;13464:21;;;13521:2;13501:18;;;13494:30;-1:-1:-1;;;13555:2:12;13540:18;;13533:45;13610:2;13595:18;;13280:339::o;13756:127::-;13817:10;13812:3;13808:20;13805:1;13798:31;13848:4;13845:1;13838:15;13872:4;13869:1;13862:15;13888:127;13949:10;13944:3;13940:20;13937:1;13930:31;13980:4;13977:1;13970:15;14004:4;14001:1;13994:15;14020:135;14059:3;14080:17;;;14077:43;;14100:18;;:::i;:::-;-1:-1:-1;14147:1:12;14136:13;;14020:135::o;15902:128::-;15969:9;;;15990:11;;;15987:37;;;16004:18;;:::i;16035:184::-;16105:6;16158:2;16146:9;16137:7;16133:23;16129:32;16126:52;;;16174:1;16171;16164:12;16126:52;-1:-1:-1;16197:16:12;;16035:184;-1:-1:-1;16035:184:12:o;17287:125::-;17352:9;;;17373:10;;;17370:36;;;17386:18;;:::i;19154:301::-;19283:3;19321:6;19315:13;19367:6;19360:4;19352:6;19348:17;19343:3;19337:37;19429:1;19393:16;;19418:13;;;-1:-1:-1;19393:16:12;19154:301;-1:-1:-1;19154:301:12:o;24937:168::-;25010:9;;;25041;;25058:15;;;25052:22;;25038:37;25028:71;;25079:18;;:::i;25801:217::-;25841:1;25867;25857:132;;25911:10;25906:3;25902:20;25899:1;25892:31;25946:4;25943:1;25936:15;25974:4;25971:1;25964:15;25857:132;-1:-1:-1;26003:9:12;;25801:217::o
Swarm Source
ipfs://acfbf7f13f49faf28c4151b8b0d3a391438cbeeab0d722c18f93f427ed7f90a1
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.