From 57918b6e2b560b86a453c5c23963ec8be50d04f3 Mon Sep 17 00:00:00 2001 From: pmmax Date: Tue, 11 Dec 2018 20:34:42 -0300 Subject: [PATCH] Created AlgoFees contract, tests and playground commands. Added some fixes for AlgoPool and AlgoMiner. --- .../AlgoFees.cs | 69 + .../Algorithms/FeesDistributionAlgorithm.cs | 45 + .../SmartContracts/src/AlgoFees.sol | 138 + .../SmartContracts/src/AlgoMiner.sol | 10 + .../SmartContracts/src/AlgoPool.sol | 4 + .../SmartContracts/src/IAlgoMiner.sol | 2 + .../src/bin/AlgoFees-sol-output.json | 15505 ++++++++++++++++ .../SmartContracts/src/bin/AlgoFees.abi | 1 + .../SmartContracts/src/bin/AlgoFees.bin | 1 + .../SmartContracts/src/bin/AlgoFees.json | 203 + .../src/bin/AlgoMiner-sol-output.json | 5023 ++--- .../SmartContracts/src/bin/AlgoMiner.abi | 2 +- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 44 +- .../src/bin/AlgoPool-sol-output.json | 2451 +-- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 4 +- .../AlgoFeesTests.cs | 180 + .../FeesDistributionAlgorithmTests.cs | 56 + labs/algo-token-playground/algofees-script.md | 61 + .../{script.md => algotoken-script.md} | 0 .../AlgoFeesContract/AlgoFeesDeployCommand.cs | 25 + .../AlgoFeesContract/AlgoFeesMineCommand.cs | 23 + .../AlgoFeesRegisterMinerCommand.cs | 25 + .../AlgoFeesUnregisterMinerCommand.cs | 25 + .../Parsers/AlgoFeesParsers.cs | 45 + .../REPL.cs | 1 + 27 files changed, 20647 insertions(+), 3300 deletions(-) create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs create mode 100644 labs/algo-token-playground/algofees-script.md rename labs/algo-token-playground/{script.md => algotoken-script.md} (100%) create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs new file mode 100644 index 000000000..a16f4cc6a --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution +{ + public class AlgoFees : SmartContract + { + private Function _registerMiner; + private Function _unregisterMiner; + private Function _mine; + + private Function _addSystem; + private Function _addCoreTeam; + + private Function _getMinerCount; + private Function _getMinerByIndex; + + public AlgoFees(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public AlgoFees(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.abi"; + protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.bin"; + protected override BigInteger DeploymentGasUnits => 1200000; + + public Task DeployAsync(string tokenAddress) + => base.DeployAsync(tokenAddress); + + protected override void Initialize(Contract contractDescriptor) + { + _registerMiner = contractDescriptor.GetFunction("registerMiner"); + _unregisterMiner = contractDescriptor.GetFunction("unregisterMiner"); + _mine = contractDescriptor.GetFunction("mine"); + + _addSystem = contractDescriptor.GetFunction("addSystem"); + _addCoreTeam = contractDescriptor.GetFunction("addCoreTeam"); + + _getMinerCount = contractDescriptor.GetFunction("getMinerCount"); + _getMinerByIndex = contractDescriptor.GetFunction("getMinerByIndex"); + } + + public Task RegisterMinerAsync(string minerAddress) => + InvokeAsync(_registerMiner, 900000, minerAddress); + + public Task UnregisterMinerAsync(string minerAddress) => + InvokeAsync(_unregisterMiner, 900000, minerAddress); + + public Task MineAsync() => + InvokeAsync(_mine, 1500000); + + public Task AddSystemAsync(string account) => + InvokeAsync(_addSystem, 900000, account); + + public Task AddCoreTeamAsync(string account) => + InvokeAsync(_addCoreTeam, 900000, account); + + public Task GetMinerCountAsync() => + _getMinerCount.CallAsync(); + + public Task GetMinerByIndexAsync(BigInteger index) => + _getMinerByIndex.CallAsync(index); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs new file mode 100644 index 000000000..6fc608b5c --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms +{ + public static class FeesDistributionAlgorithm + { + private static decimal[] _categoryProportions = new decimal[] + { + 1, + 10, + 20, + 30, + 40, + 50 + }; + + public static decimal[] Distribute(decimal totalAmount, long[] miners) + { + decimal totalProportion = 0; + + for (int i = 0; i < 6; i++) + { + totalProportion += _categoryProportions[i] * miners[i]; + } + + var allocationPercentage = new decimal[6]; + + for (int i = 0; i < 6; i++) + { + if (miners[i] > 0) allocationPercentage[i] = _categoryProportions[i] / totalProportion; + } + + var feePerMiner = new decimal[6]; + + for (int i = 0; i < 6; i++) + { + if (miners[i] > 0) feePerMiner[i] = Math.Round(totalAmount * allocationPercentage[i]); + } + + return feePerMiner; + } + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol new file mode 100644 index 000000000..b9b350377 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -0,0 +1,138 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./IAlgoMiner.sol"; +import "./AlgoSystemRole.sol"; +import "./AlgoCoreTeamRole.sol"; + +contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { + using SafeERC20 for IERC20; + + uint256 constant CAT_0_VALUE_PROPORTION = 1; + uint256 constant CAT_1_VALUE_PROPORTION = 10; + uint256 constant CAT_2_VALUE_PROPORTION = 20; + uint256 constant CAT_3_VALUE_PROPORTION = 30; + uint256 constant CAT_4_VALUE_PROPORTION = 40; + uint256 constant CAT_5_VALUE_PROPORTION = 50; + + IERC20 private _token; + address[] private _miners; + mapping(address => uint256) private _minersByAddress; + + constructor(address tokenAddress) + AlgoSystemRole() + AlgoCoreTeamRole() + public { + _token = IERC20(tokenAddress); + _miners.push(address(0)); // Reserved as a marker for unregistered miner. + } + + function registerMiner(address minerAddress) public onlyCoreTeam { + require(_minersByAddress[minerAddress] == 0); + + IAlgoMiner algoMiner = IAlgoMiner(minerAddress); + + require(algoMiner.isAlgoMiner()); + + uint8 minerCategory = algoMiner.getCategory(); + + require(minerCategory >= 0 && minerCategory <= 5); + + _minersByAddress[minerAddress] = _miners.length; + _miners.push(minerAddress); + } + + function unregisterMiner(address minerAddress) public onlyCoreTeam { + require(_miners.length > 1); + + if(_miners.length == 2) { + + // Just remove the only registered miner... + delete _miners[1]; + _miners.length = 1; + delete _minersByAddress[minerAddress]; + + } else { + + if(_minersByAddress[minerAddress] != _miners.length) { + // Move the latest miner to the gap... + _miners[_minersByAddress[minerAddress]] = _miners[_miners.length - 1]; + } + + delete _miners[_miners.length - 1]; + _miners.length--; + delete _minersByAddress[minerAddress]; + } + } + + function mine() public onlySystem { + require(_miners.length > 1); + + uint256 currentFeesBalance = _token.balanceOf(address(this)); + + require(currentFeesBalance > 0); + + // Count how many ENABLED miners we have for each category... + uint256[6] memory miners; + + for(uint256 i = 1; i < _miners.length; i++) { + IAlgoMiner algoMiner = IAlgoMiner(_miners[i]); + + if(!algoMiner.isMining()) continue; + + uint8 minerCategory = algoMiner.getCategory(); + + if(minerCategory == 0) { + miners[0]++; + } else if(minerCategory == 1) { + miners[1]++; + } else if(minerCategory == 2) { + miners[2]++; + } else if(minerCategory == 3) { + miners[3]++; + } else if(minerCategory == 4) { + miners[4]++; + } else if(minerCategory == 5) { + miners[5]++; + } + } + + // Calculate the fee to pay per miner according to its category... + uint256 totalProportion = CAT_0_VALUE_PROPORTION * miners[0] + + CAT_1_VALUE_PROPORTION * miners[1] + + CAT_2_VALUE_PROPORTION * miners[2] + + CAT_3_VALUE_PROPORTION * miners[3] + + CAT_4_VALUE_PROPORTION * miners[4] + + CAT_5_VALUE_PROPORTION * miners[5]; + + uint256[6] memory feePerMiner; + + feePerMiner[0] = currentFeesBalance * CAT_0_VALUE_PROPORTION / totalProportion; + feePerMiner[1] = currentFeesBalance * CAT_1_VALUE_PROPORTION / totalProportion; + feePerMiner[2] = currentFeesBalance * CAT_2_VALUE_PROPORTION / totalProportion; + feePerMiner[3] = currentFeesBalance * CAT_3_VALUE_PROPORTION / totalProportion; + feePerMiner[4] = currentFeesBalance * CAT_4_VALUE_PROPORTION / totalProportion; + feePerMiner[5] = currentFeesBalance * CAT_5_VALUE_PROPORTION / totalProportion; + + // Transfer the fees to ENABLED miners... + for(i = 1; i < _miners.length; i++) { + algoMiner = IAlgoMiner(_miners[i]); + + if(!algoMiner.isMining()) continue; + + minerCategory = algoMiner.getCategory(); + + _token.safeTransfer(algoMiner.getMiner(), feePerMiner[minerCategory]); + } + } + + function getMinerCount() public view returns (uint256) { + return _miners.length - 1; + } + + function getMinerByIndex(uint256 index) public view returns (address) { + return _miners[index + 1]; + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 0ab2f1d47..76aa60bf1 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -136,6 +136,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint256 tokens = _currentYearSupply / DAYS_PER_YEAR; + require(tokens > 0); + _token.safeTransfer(_miner, tokens); } @@ -146,4 +148,12 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg function getCategory() public view returns (uint8) { return _category; } + + function isMining() public view returns (bool) { + return _state == MinerState.Activated && _mining; + } + + function getMiner() public view returns (address) { + return _miner; + } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 2ac21b48f..0ad4c2324 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -19,6 +19,7 @@ contract AlgoPool is AlgoCoreTeamRole { uint16 private _poolType; IERC20 private _token; + mapping(address => bool) _fundedMiners; constructor(uint16 poolType, address tokenAddress) AlgoCoreTeamRole() @@ -28,6 +29,8 @@ contract AlgoPool is AlgoCoreTeamRole { } function trasferToMiner(address minerAddress) public onlyCoreTeam { + require(!_fundedMiners[minerAddress]); + IAlgoMiner algoMiner = IAlgoMiner(minerAddress); require(algoMiner.isAlgoMiner()); @@ -54,6 +57,7 @@ contract AlgoPool is AlgoCoreTeamRole { require(value > 0); + _fundedMiners[minerAddress] = true; _token.safeTransfer(minerAddress, value); } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol index cc98a0c6a..109671f2b 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -3,4 +3,6 @@ pragma solidity 0.4.24; contract IAlgoMiner { function isAlgoMiner() public pure returns (bool); function getCategory() public view returns (uint8); + function isMining() public view returns (bool); + function getMiner() public view returns (address); } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json new file mode 100644 index 000000000..384826148 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -0,0 +1,15505 @@ +{ + "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { + "AlgoFees": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "registerMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "getMinerByIndex", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "unregisterMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMinerCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0xEDC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH2 0x34 CALLER PUSH5 0x100000000 PUSH2 0xA2 DUP2 MUL DIV JUMP JUMPDEST PUSH2 0x46 CALLER PUSH5 0x100000000 PUSH2 0xBD DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xBA PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x12C DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD6A DUP1 PUSH2 0x172 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2E6B6849 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x210 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B PUSH1 0x4 CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x428 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x5E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4 PUSH2 0xB0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x219 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB29 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23C CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x366 JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x40D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST PUSH2 0x444 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x461 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x4C8 PUSH1 0x3 DUP3 PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x22D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x581 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x51A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 PUSH2 0x5CC SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 PUSH2 0xD01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5FF PUSH2 0xD01 JUMP JUMPDEST PUSH2 0x608 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0x872 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x6E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x775 JUMPI PUSH2 0x867 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x7FF JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x867 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x813 JUMPI DUP6 PUSH1 0x1 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x827 JUMPI DUP6 PUSH1 0x2 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x83B JUMPI DUP6 PUSH1 0x3 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x84F JUMPI DUP6 PUSH1 0x4 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x867 JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x8B8 JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8C9 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8DD JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8F1 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x905 JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x919 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x93C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x9D1 JUMPI PUSH2 0xAF6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xAF6 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xAD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB82 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x924 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC32 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB0 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xC1C SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB12 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD26 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa5 0xe DUP5 0xe4 CALLCODE 0xd CALL JUMPDEST PUSH21 0xA513C238B268F416D4F45F8632AF54E0CB02D0AAFF PUSH19 0x79002900000000000000000000000000000000 ", + "sourceMap": "522:4571:1:-;;;1046:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1046:235:1;;;;;;;;;;;;;364:22:2;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1161:6:1;:29;;-1:-1:-1;;;;;1161:29:1;;;-1:-1:-1;;;;;;1161:29:1;;;;;;1201:7;27:10:-1;;1161:29:1;23:18:-1;;45:23;;1161:6:1;1201:24;;;;;;;;;;;;;522:4571;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:4:-;-1:-1:-1;;;;;316:21:4;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:4;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:4;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:4;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:4;:11;:20;;;;;;;;;;;;;;;725:166::o;522:4571:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "686800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addCoreTeam(address)": "infinite", + "addSystem(address)": "infinite", + "getMinerByIndex(uint256)": "980", + "getMinerCount()": "633", + "isCoreTeam(address)": "infinite", + "isSystem(address)": "infinite", + "mine()": "infinite", + "registerMiner(address)": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSystem()": "infinite", + "unregisterMiner(address)": "infinite" + } + }, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "addSystem(address)": "74be7592", + "getMinerByIndex(uint256)": "3d19ab13", + "getMinerCount()": "bb52c137", + "isCoreTeam(address)": "608d3d3d", + "isSystem(address)": "34cdcf26", + "mine()": "99f4b251", + "registerMiner(address)": "341ccfcb", + "renounceCoreTeam()": "d43acc79", + "renounceSystem()": "e9d61859", + "unregisterMiner(address)": "81f909f3" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x44afcd80827ee5d04f516395a4e0455c27c449ced894852a613fb605a96eb60c\",\"urls\":[\"bzzr://dd89f111ef301d812e7a5eb40ceb283652e0755cbde33b58742ceee33246bc4f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "AlgoSystemRole": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addSystem(address)": "74be7592", + "isSystem(address)": "34cdcf26", + "renounceSystem()": "e9d61859" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", + "sourceMap": "109:784:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", + "sourceMap": "117:1531:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", + "sourceMap": "353:1296:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 791, + "src": "28:189:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 790, + "src": "260:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$790", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "254:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "270:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "289:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "289:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "357:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "381:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "368:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "368:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "368:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:0" + }, + "scope": 86, + "src": "333:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "432:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "462:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "462:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "451:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "443:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "485:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:2:0" + }, + "src": "408:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "566:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "584:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 789, + "src": "584:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "577:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "522:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "560:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:6:0" + }, + "scope": 86, + "src": "502:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "687:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "711:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "698:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "698:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "674:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "674:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "650:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:0:0" + }, + "scope": 86, + "src": "629:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "770:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "781:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "781:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "781:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:0:0" + }, + "scope": 86, + "src": "735:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "872:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "883:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "883:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "846:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:0" + }, + "scope": 86, + "src": "824:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "979:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "990:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 766, + "src": "990:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "990:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "990:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "953:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "979:0:0" + }, + "scope": 86, + "src": "928:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "221:812:0" + } + ], + "src": "0:1035:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol", + "exportedSymbols": { + "AlgoFees": [ + 586 + ] + }, + "id": 587, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 988, + "src": "27:195:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 1132, + "src": "224:198:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 697, + "src": "426:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "file": "./AlgoSystemRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 674, + "src": "454:30:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 93, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 87, + "src": "486:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 94, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 673, + "src": "543:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$673", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 95, + "nodeType": "InheritanceSpecifier", + "src": "543:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 96, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "559:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 97, + "nodeType": "InheritanceSpecifier", + "src": "559:16:1" + } + ], + "contractDependencies": [ + 86, + 673 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 586, + "linearizedBaseContracts": [ + 586, + 86, + 673 + ], + "name": "AlgoFees", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 100, + "libraryName": { + "contractScope": null, + "id": 98, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "589:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "583:27:1", + "typeName": { + "contractScope": null, + "id": 99, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "603:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 103, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "618:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "618:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "660:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 106, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "668:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "668:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "710:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 109, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "719:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230", + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 112, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "770:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "770:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3330", + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "812:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_30_by_1", + "typeString": "int_const 30" + }, + "value": "30" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 115, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "821:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3430", + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "863:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 118, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "872:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "872:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3530", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "914:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "value": "50" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "925:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 119, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "925:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 123, + "name": "_miners", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "953:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 122, + "length": null, + "nodeType": "ArrayTypeName", + "src": "953:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 127, + "name": "_minersByAddress", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "985:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 126, + "keyType": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "993:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "985:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 150, + "nodeType": "Block", + "src": "1150:131:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 136, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1161:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 138, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "1177:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$987_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1170:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "src": "1161:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "1161:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1222:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1214:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1214:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 142, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1201:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "1201:24:1" + } + ] + }, + "documentation": null, + "id": 151, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 132, + "modifierName": { + "argumentTypes": null, + "id": 131, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 673, + "src": "1089:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$673_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1089:16:1" + }, + { + "arguments": [], + "id": 134, + "modifierName": { + "argumentTypes": null, + "id": 133, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1115:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1115:18:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 129, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1058:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1057:22:1" + }, + "payable": false, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [], + "src": "1150:0:1" + }, + "scope": 586, + "src": "1046:235:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 207, + "nodeType": "Block", + "src": "1354:401:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 159, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1373:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "id": 160, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1390:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1373:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1407:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1373:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1365:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1365:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "1365:44:1" + }, + { + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1422:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 166, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 696, + "src": "1422:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 171, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 169, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1456:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 168, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1445:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1445:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1422:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 173, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1498:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isAlgoMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 680, + "src": "1498:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", + "typeString": "function () pure external returns (bool)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1498:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1490:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 177, + "nodeType": "ExpressionStatement", + "src": "1490:32:1" + }, + { + "assignments": [ + 179 + ], + "declarations": [ + { + "constant": false, + "id": 179, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1543:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 178, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1543:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 183, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 180, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "1565:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1565:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1543:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 185, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "1609:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1626:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1609:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 188, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "1631:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1648:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1631:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1609:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 184, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1601:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1601:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 193, + "nodeType": "ExpressionStatement", + "src": "1601:49:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 194, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1663:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 196, + "indexExpression": { + "argumentTypes": null, + "id": 195, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1680:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1663:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 197, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1696:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1663:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 200, + "nodeType": "ExpressionStatement", + "src": "1663:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 204, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1734:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 201, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1721:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1721:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1721:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "1721:26:1" + } + ] + }, + "documentation": null, + "id": 208, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 156, + "modifierName": { + "argumentTypes": null, + "id": 155, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1341:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1341:12:1" + } + ], + "name": "registerMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1312:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1311:22:1" + }, + "payable": false, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [], + "src": "1354:0:1" + }, + "scope": 586, + "src": "1289:466:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 284, + "nodeType": "Block", + "src": "1830:682:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 216, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 217, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1849:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1866:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1849:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1841:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1841:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "1841:27:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 222, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1884:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1884:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1902:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1884:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 282, + "nodeType": "Block", + "src": "2117:388:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 243, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2149:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 245, + "indexExpression": { + "argumentTypes": null, + "id": 244, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2166:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2149:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 246, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2183:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2149:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 263, + "nodeType": "IfStatement", + "src": "2146:214:1", + "trueBody": { + "id": 262, + "nodeType": "Block", + "src": "2199:161:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 249, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2275:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 253, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 250, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2283:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 252, + "indexExpression": { + "argumentTypes": null, + "id": 251, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2300:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2283:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2275:39:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 254, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2317:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 255, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2325:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 256, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2325:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2342:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2325:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2317:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2275:69:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 261, + "nodeType": "ExpressionStatement", + "src": "2275:69:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2376:34:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 264, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 269, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2391:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 266, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2391:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2408:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2391:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2383:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "2376:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2425:16:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 272, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2425:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 274, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2425:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "2425:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2456:37:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 277, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2463:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 279, + "indexExpression": { + "argumentTypes": null, + "id": 278, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2463:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "2456:37:1" + } + ] + }, + "id": 283, + "nodeType": "IfStatement", + "src": "1881:624:1", + "trueBody": { + "id": 242, + "nodeType": "Block", + "src": "1905:206:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "1987:17:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 226, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1994:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 228, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1994:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "1987:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 231, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 233, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2019:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2036:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2019:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 236, + "nodeType": "ExpressionStatement", + "src": "2019:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2052:37:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 237, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2059:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "id": 238, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2076:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2059:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 241, + "nodeType": "ExpressionStatement", + "src": "2052:37:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 285, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 213, + "modifierName": { + "argumentTypes": null, + "id": 212, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1817:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1817:12:1" + } + ], + "name": "unregisterMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 210, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "1788:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1788:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1787:22:1" + }, + "payable": false, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [], + "src": "1830:0:1" + }, + "scope": 586, + "src": "1763:749:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 559, + "nodeType": "Block", + "src": "2554:2307:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 291, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2573:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2573:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2590:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2573:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 290, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "2565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2565:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 296, + "nodeType": "ExpressionStatement", + "src": "2565:27:1" + }, + { + "assignments": [ + 298 + ], + "declarations": [ + { + "constant": false, + "id": 298, + "name": "currentFeesBalance", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2605:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 305, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 302, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "2659:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeString": "contract AlgoFees" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeString": "contract AlgoFees" + } + ], + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2651:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2651:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 299, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2634:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 932, + "src": "2634:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2634:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2605:60:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 307, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "2680:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2701:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2680:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 306, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "2672:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2672:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 311, + "nodeType": "ExpressionStatement", + "src": "2672:31:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 316, + "name": "miners", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2787:24:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2787:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 315, + "length": { + "argumentTypes": null, + "hexValue": "36", + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2795:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "2787:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 317, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2787:24:1" + }, + { + "body": { + "id": 409, + "nodeType": "Block", + "src": "2868:657:1", + "statements": [ + { + "assignments": [ + 330 + ], + "declarations": [ + { + "constant": false, + "id": 330, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2883:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 329, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 696, + "src": "2883:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 336, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 332, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2917:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 334, + "indexExpression": { + "argumentTypes": null, + "id": 333, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2925:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2917:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "2906:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2906:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2883:45:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2948:21:1", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 337, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "2949:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMining", + "nodeType": "MemberAccess", + "referencedDeclaration": 690, + "src": "2949:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 342, + "nodeType": "IfStatement", + "src": "2945:34:1", + "trueBody": { + "id": 341, + "nodeType": "Continue", + "src": "2971:8:1" + } + }, + { + "assignments": [ + 344 + ], + "declarations": [ + { + "constant": false, + "id": 344, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2996:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 343, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2996:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 348, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 345, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "3018:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "3018:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2996:45:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 349, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3061:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3078:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3061:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 358, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3136:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3153:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3136:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 367, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3211:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3228:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3211:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 376, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3286:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3303:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "3286:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 385, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3361:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3378:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "3361:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 394, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3436:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3453:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "3436:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 403, + "nodeType": "IfStatement", + "src": "3433:69:1", + "trueBody": { + "id": 402, + "nodeType": "Block", + "src": "3456:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3475:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3475:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 399, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3482:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3475:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 401, + "nodeType": "ExpressionStatement", + "src": "3475:11:1" + } + ] + } + }, + "id": 404, + "nodeType": "IfStatement", + "src": "3358:144:1", + "trueBody": { + "id": 393, + "nodeType": "Block", + "src": "3381:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3400:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3400:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3407:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 392, + "nodeType": "ExpressionStatement", + "src": "3400:11:1" + } + ] + } + }, + "id": 405, + "nodeType": "IfStatement", + "src": "3283:219:1", + "trueBody": { + "id": 384, + "nodeType": "Block", + "src": "3306:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3325:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 379, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3325:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 381, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3332:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "3325:11:1" + } + ] + } + }, + "id": 406, + "nodeType": "IfStatement", + "src": "3208:294:1", + "trueBody": { + "id": 375, + "nodeType": "Block", + "src": "3231:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3250:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 370, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3250:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 372, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3257:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3250:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "3250:11:1" + } + ] + } + }, + "id": 407, + "nodeType": "IfStatement", + "src": "3133:369:1", + "trueBody": { + "id": 366, + "nodeType": "Block", + "src": "3156:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3175:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 361, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3175:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 363, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3182:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3175:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 365, + "nodeType": "ExpressionStatement", + "src": "3175:11:1" + } + ] + } + }, + "id": 408, + "nodeType": "IfStatement", + "src": "3058:444:1", + "trueBody": { + "id": 357, + "nodeType": "Block", + "src": "3081:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3100:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 352, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3100:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 354, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3107:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3100:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "3100:11:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 322, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2843:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 323, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2847:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2847:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 410, + "initializationExpression": { + "assignments": [ + 319 + ], + "declarations": [ + { + "constant": false, + "id": 319, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2828:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2828:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 321, + "initialValue": { + "argumentTypes": null, + "hexValue": "31", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2840:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2828:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2863:3:1", + "subExpression": { + "argumentTypes": null, + "id": 326, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2863:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 328, + "nodeType": "ExpressionStatement", + "src": "2863:3:1" + }, + "nodeType": "ForStatement", + "src": "2824:701:1" + }, + { + "assignments": [ + 412 + ], + "declarations": [ + { + "constant": false, + "id": 412, + "name": "totalProportion", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "3613:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3613:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 448, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 413, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3639:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 414, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3664:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 416, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3664:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 418, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "3689:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 419, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3714:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 421, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3721:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3714:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3689:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:84:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 424, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "3739:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 425, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3764:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 427, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3764:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3739:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:134:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 430, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3789:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3814:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3821:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3814:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3789:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:184:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 436, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "3839:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3864:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3871:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3864:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3839:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:234:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 442, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "3889:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3914:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3921:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3914:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3889:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:284:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3613:310:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 453, + "name": "feePerMiner", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "3944:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 452, + "length": { + "argumentTypes": null, + "hexValue": "36", + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3952:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "3944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 454, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3944:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 455, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "3986:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 457, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3998:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3986:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4003:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 459, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "4024:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 461, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4049:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3986:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 464, + "nodeType": "ExpressionStatement", + "src": "3986:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4075:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4087:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4075:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 468, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4092:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 469, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "4113:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4092:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 471, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4138:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4092:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4075:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 474, + "nodeType": "ExpressionStatement", + "src": "4075:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 475, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4164:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4176:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4164:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 478, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4181:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 479, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "4202:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4181:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 481, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4227:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4181:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4164:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "4164:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 485, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4253:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 487, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4265:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4253:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 488, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 489, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "4291:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4270:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 491, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4316:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4270:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4253:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "4253:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 495, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4342:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 497, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4354:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4342:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 498, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4359:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 499, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "4380:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4359:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 501, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4405:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4359:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4342:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 504, + "nodeType": "ExpressionStatement", + "src": "4342:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 505, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 507, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4443:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4431:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 508, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4448:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 509, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "4469:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4448:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4494:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4448:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4431:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "4431:78:1" + }, + { + "body": { + "id": 557, + "nodeType": "Block", + "src": "4609:245:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 526, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 528, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4647:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 530, + "indexExpression": { + "argumentTypes": null, + "id": 529, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4655:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4647:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 527, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4636:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4636:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "src": "4624:34:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 533, + "nodeType": "ExpressionStatement", + "src": "4624:34:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4678:21:1", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 534, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4679:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMining", + "nodeType": "MemberAccess", + "referencedDeclaration": 690, + "src": "4679:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4679:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 539, + "nodeType": "IfStatement", + "src": "4675:34:1", + "trueBody": { + "id": 538, + "nodeType": "Continue", + "src": "4701:8:1" + } + }, + { + "expression": { + "argumentTypes": null, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 540, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4726:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 541, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4742:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "4742:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4742:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4726:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 545, + "nodeType": "ExpressionStatement", + "src": "4726:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 549, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4793:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 695, + "src": "4793:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4793:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4815:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4827:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4815:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 546, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "4773:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1012, + "src": "4773:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$987_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$987_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4773:69:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 556, + "nodeType": "ExpressionStatement", + "src": "4773:69:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 519, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4584:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 520, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4588:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 521, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4588:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4584:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 558, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 515, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4581:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4577:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 518, + "nodeType": "ExpressionStatement", + "src": "4577:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4604:3:1", + "subExpression": { + "argumentTypes": null, + "id": 523, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4604:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 525, + "nodeType": "ExpressionStatement", + "src": "4604:3:1" + }, + "nodeType": "ForStatement", + "src": "4573:281:1" + } + ] + }, + "documentation": null, + "id": 560, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 288, + "modifierName": { + "argumentTypes": null, + "id": 287, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2543:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2543:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "2533:2:1" + }, + "payable": false, + "returnParameters": { + "id": 289, + "nodeType": "ParameterList", + "parameters": [], + "src": "2554:0:1" + }, + "scope": 586, + "src": "2520:2341:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 570, + "nodeType": "Block", + "src": "4924:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 565, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4942:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4942:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4959:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4942:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 564, + "id": 569, + "nodeType": "Return", + "src": "4935:25:1" + } + ] + }, + "documentation": null, + "id": 571, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 561, + "nodeType": "ParameterList", + "parameters": [], + "src": "4891:2:1" + }, + "payable": false, + "returnParameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 571, + "src": "4915:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4915:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4914:9:1" + }, + "scope": 586, + "src": "4869:99:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 584, + "nodeType": "Block", + "src": "5046:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 578, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "5064:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 582, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 579, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "5072:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5080:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5072:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5064:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 577, + "id": 583, + "nodeType": "Return", + "src": "5057:25:1" + } + ] + }, + "documentation": null, + "id": 585, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 573, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "5001:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5001:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5000:15:1" + }, + "payable": false, + "returnParameters": { + "id": 577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 576, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "5037:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5037:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5036:9:1" + }, + "scope": 586, + "src": "4976:114:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 587, + "src": "522:4571:1" + } + ], + "src": "0:5093:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "exportedSymbols": { + "AlgoSystemRole": [ + 673 + ] + }, + "id": 674, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 588, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 589, + "nodeType": "ImportDirective", + "scope": 674, + "sourceUnit": 791, + "src": "28:189:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 673, + "linearizedBaseContracts": [ + 673 + ], + "name": "AlgoSystemRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 592, + "libraryName": { + "contractScope": null, + "id": 590, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 790, + "src": "258:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$790", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "252:27:2", + "typeName": { + "contractScope": null, + "id": 591, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "268:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 594, + "name": "_systemMembers", + "nodeType": "VariableDeclaration", + "scope": 673, + "src": "287:33:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 593, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "287:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "353:41:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 598, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "375:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "375:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 597, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "364:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "364:22:2" + } + ] + }, + "documentation": null, + "id": 603, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [], + "src": "341:2:2" + }, + "payable": false, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [], + "src": "353:0:2" + }, + "scope": 673, + "src": "329:65:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 613, + "nodeType": "Block", + "src": "424:60:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 607, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "452:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 606, + "name": "isSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "443:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 605, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "435:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "435:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "435:29:2" + }, + { + "id": 612, + "nodeType": "PlaceholderStatement", + "src": "475:1:2" + } + ] + }, + "documentation": null, + "id": 614, + "name": "onlySystem", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 604, + "nodeType": "ParameterList", + "parameters": [], + "src": "421:2:2" + }, + "src": "402:82:2", + "visibility": "internal" + }, + { + "body": { + "id": 626, + "nodeType": "Block", + "src": "554:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 623, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "591:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 621, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "572:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 622, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 789, + "src": "572:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:27:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 620, + "id": 625, + "nodeType": "Return", + "src": "565:34:2" + } + ] + }, + "documentation": null, + "id": 627, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 616, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "510:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "510:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "509:17:2" + }, + "payable": false, + "returnParameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "548:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "547:6:2" + }, + "scope": 673, + "src": "492:115:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 638, + "nodeType": "Block", + "src": "669:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 629, + "src": "691:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 634, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "680:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:19:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "680:19:2" + } + ] + }, + "documentation": null, + "id": 639, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 632, + "modifierName": { + "argumentTypes": null, + "id": 631, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "658:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "658:10:2" + } + ], + "name": "addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 629, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "634:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "634:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "633:17:2" + }, + "payable": false, + "returnParameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:2" + }, + "scope": 673, + "src": "615:92:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 647, + "nodeType": "Block", + "src": "748:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "773:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "773:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 642, + "name": "_removeSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "759:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 646, + "nodeType": "ExpressionStatement", + "src": "759:25:2" + } + ] + }, + "documentation": null, + "id": 648, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [], + "src": "738:2:2" + }, + "payable": false, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [], + "src": "748:0:2" + }, + "scope": 673, + "src": "715:77:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 659, + "nodeType": "Block", + "src": "846:46:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "876:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 653, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "857:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "857:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "857:27:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "857:27:2" + } + ] + }, + "documentation": null, + "id": 660, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 660, + "src": "820:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "819:17:2" + }, + "payable": false, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:0:2" + }, + "scope": 673, + "src": "800:92:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 671, + "nodeType": "Block", + "src": "949:49:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 668, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "982:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 665, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "960:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 667, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 766, + "src": "960:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "960:30:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 670, + "nodeType": "ExpressionStatement", + "src": "960:30:2" + } + ] + }, + "documentation": null, + "id": 672, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 662, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "923:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "923:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "922:17:2" + }, + "payable": false, + "returnParameters": { + "id": 664, + "nodeType": "ParameterList", + "parameters": [], + "src": "949:0:2" + }, + "scope": 673, + "src": "900:98:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 674, + "src": "221:780:2" + } + ], + "src": "0:1003:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 696 + ] + }, + "id": 697, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 675, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 696, + "linearizedBaseContracts": [ + 696 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 680, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:3" + }, + "payable": false, + "returnParameters": { + "id": 679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "98:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 677, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:3" + }, + "scope": 696, + "src": "54:50:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 685, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 681, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:3" + }, + "payable": false, + "returnParameters": { + "id": 684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 683, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "154:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 682, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:3" + }, + "scope": 696, + "src": "110:51:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 690, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:3" + }, + "payable": false, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "208:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 687, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:3" + }, + "scope": 696, + "src": "167:47:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 695, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 691, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:3" + }, + "payable": false, + "returnParameters": { + "id": 694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 695, + "src": "261:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:3" + }, + "scope": 696, + "src": "220:50:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 697, + "src": "27:246:3" + } + ], + "src": "0:273:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 790 + ] + }, + "id": 791, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 698, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 790, + "linearizedBaseContracts": [ + 790 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 703, + "members": [ + { + "constant": false, + "id": 702, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 703, + "src": "145:32:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 701, + "keyType": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 700, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 790, + "src": "127:55:4", + "visibility": "public" + }, + { + "body": { + "id": 734, + "nodeType": "Block", + "src": "302:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 711, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 717, + "nodeType": "ExpressionStatement", + "src": "308:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 720, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "357:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 721, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 719, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "353:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "344:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 725, + "nodeType": "ExpressionStatement", + "src": "344:28:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 726, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "379:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 729, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "379:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 730, + "indexExpression": { + "argumentTypes": null, + "id": 728, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 733, + "nodeType": "ExpressionStatement", + "src": "379:27:4" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 735, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "257:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 704, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "257:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 707, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "276:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:4" + }, + "payable": false, + "returnParameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:4" + }, + "scope": 790, + "src": "244:167:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 765, + "nodeType": "Block", + "src": "538:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 743, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 742, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 749, + "nodeType": "ExpressionStatement", + "src": "544:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 752, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "592:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 753, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "598:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 751, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "588:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "580:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 756, + "nodeType": "ExpressionStatement", + "src": "580:27:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "614:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "614:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 761, + "indexExpression": { + "argumentTypes": null, + "id": 759, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "626:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 764, + "nodeType": "ExpressionStatement", + "src": "614:28:4" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 766, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 766, + "src": "493:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 736, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "493:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 739, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 766, + "src": "512:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:4" + }, + "payable": false, + "returnParameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:4" + }, + "scope": 790, + "src": "477:170:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 788, + "nodeType": "Block", + "src": "817:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 776, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 775, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "823:30:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "866:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "866:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 786, + "indexExpression": { + "argumentTypes": null, + "id": 785, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "878:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 774, + "id": 787, + "nodeType": "Return", + "src": "859:27:4" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 789, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 768, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "738:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 767, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "738:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 770, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "757:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:4" + }, + "payable": false, + "returnParameters": { + "id": 774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 773, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "809:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:4" + }, + "scope": 790, + "src": "725:166:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 791, + "src": "109:784:4" + } + ], + "src": "0:894:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 918 + ] + }, + "id": 919, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 792, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 918, + "linearizedBaseContracts": [ + 918 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 824, + "nodeType": "Block", + "src": "271:314:5", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 801, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "486:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 807, + "nodeType": "IfStatement", + "src": "482:35:5", + "trueBody": { + "id": 806, + "nodeType": "Block", + "src": "494:23:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 800, + "id": 805, + "nodeType": "Return", + "src": "502:8:5" + } + ] + } + }, + { + "assignments": [ + 809 + ], + "declarations": [ + { + "constant": false, + "id": 809, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "523:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 813, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 810, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "535:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 811, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 815, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "554:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 816, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "558:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 818, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 814, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "546:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 821, + "nodeType": "ExpressionStatement", + "src": "546:19:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 822, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "579:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 800, + "id": 823, + "nodeType": "Return", + "src": "572:8:5" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 825, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 794, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "217:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 796, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "228:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:5" + }, + "payable": false, + "returnParameters": { + "id": 800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 799, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "262:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:5" + }, + "scope": 918, + "src": "204:381:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "762:203:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 835, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "776:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 834, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "768:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "768:14:5" + }, + { + "assignments": [ + 841 + ], + "declarations": [ + { + "constant": false, + "id": 841, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "846:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 845, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 842, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "858:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 843, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "862:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 846, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "959:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 833, + "id": 847, + "nodeType": "Return", + "src": "952:8:5" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 849, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 827, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "708:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 829, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "719:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:5" + }, + "payable": false, + "returnParameters": { + "id": 833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 832, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "753:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:5" + }, + "scope": 918, + "src": "695:270:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 872, + "nodeType": "Block", + "src": "1145:64:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 859, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1159:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 860, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "1164:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 858, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1151:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 863, + "nodeType": "ExpressionStatement", + "src": "1151:15:5" + }, + { + "assignments": [ + 865 + ], + "declarations": [ + { + "constant": false, + "id": 865, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1172:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 869, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 866, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "1184:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 867, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1188:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 870, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 865, + "src": "1203:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 857, + "id": 871, + "nodeType": "Return", + "src": "1196:8:5" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 873, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 851, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1091:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 853, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1102:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:5" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1136:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:5" + }, + "scope": 918, + "src": "1078:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 896, + "nodeType": "Block", + "src": "1339:64:5", + "statements": [ + { + "assignments": [ + 883 + ], + "declarations": [ + { + "constant": false, + "id": 883, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1345:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 887, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 884, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "1357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 885, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 877, + "src": "1361:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 889, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "1376:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 890, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "1381:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1368:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 893, + "nodeType": "ExpressionStatement", + "src": "1368:15:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 894, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "1397:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 881, + "id": 895, + "nodeType": "Return", + "src": "1390:8:5" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 897, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1285:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 877, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1296:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:5" + }, + "payable": false, + "returnParameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1330:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:5" + }, + "scope": 918, + "src": "1272:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 916, + "nodeType": "Block", + "src": "1602:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 907, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1616:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1608:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 911, + "nodeType": "ExpressionStatement", + "src": "1608:15:5" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 912, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 899, + "src": "1636:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 913, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1640:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 905, + "id": 915, + "nodeType": "Return", + "src": "1629:12:5" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 917, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 899, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1548:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 901, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1559:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:5" + }, + "payable": false, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1593:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:5" + }, + "scope": 918, + "src": "1535:111:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 919, + "src": "117:1531:5" + } + ], + "src": "0:1649:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 987 + ] + }, + "id": 988, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 920, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 987, + "linearizedBaseContracts": [ + 987 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 925, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:6" + }, + "payable": false, + "returnParameters": { + "id": 924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 925, + "src": "182:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:6" + }, + "scope": 987, + "src": "136:55:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 932, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 927, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "214:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:6" + }, + "payable": false, + "returnParameters": { + "id": 931, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 930, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "250:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:6" + }, + "scope": 987, + "src": "195:64:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 941, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 937, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 934, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "282:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 936, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "297:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:6" + }, + "payable": false, + "returnParameters": { + "id": 940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 939, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "341:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:6" + }, + "scope": 987, + "src": "263:87:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 950, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 946, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 943, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "372:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 945, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "384:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:6" + }, + "payable": false, + "returnParameters": { + "id": 949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 948, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "417:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 947, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:6" + }, + "scope": 987, + "src": "354:69:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 959, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 952, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "444:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 954, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "461:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:6" + }, + "payable": false, + "returnParameters": { + "id": 958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 957, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "498:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 956, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:6" + }, + "scope": 987, + "src": "427:77:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 970, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 961, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "530:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 963, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "544:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 965, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "556:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:6" + }, + "payable": false, + "returnParameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 968, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "593:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 967, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:6" + }, + "scope": 987, + "src": "508:91:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 978, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 972, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "623:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 974, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "649:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 976, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "673:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:6" + }, + "src": "603:88:6" + }, + { + "anonymous": false, + "documentation": null, + "id": 986, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 980, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "715:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 982, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "742:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 984, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "771:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:6" + }, + "src": "695:94:6" + } + ], + "scope": 988, + "src": "115:676:6" + } + ], + "src": "0:792:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1131 + ] + }, + "id": 1132, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 989, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 990, + "nodeType": "ImportDirective", + "scope": 1132, + "sourceUnit": 988, + "src": "26:22:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 991, + "nodeType": "ImportDirective", + "scope": 1132, + "sourceUnit": 919, + "src": "49:33:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1131, + "linearizedBaseContracts": [ + 1131 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 994, + "libraryName": { + "contractScope": null, + "id": 992, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 918, + "src": "382:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$918", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:7", + "typeName": { + "id": 993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 1011, + "nodeType": "Block", + "src": "501:45:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "530:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "534:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1004, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "515:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 950, + "src": "515:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1003, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "507:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1010, + "nodeType": "ExpressionStatement", + "src": "507:34:7" + } + ] + }, + "documentation": null, + "id": 1012, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 996, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "434:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 995, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "434:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 998, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "452:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1000, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "468:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:7" + }, + "payable": false, + "returnParameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:7" + }, + "scope": 1131, + "src": "407:139:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1032, + "nodeType": "Block", + "src": "666:55:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1026, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "699:4:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1027, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "705:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "709:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1024, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "680:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 970, + "src": "680:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "672:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1031, + "nodeType": "ExpressionStatement", + "src": "672:44:7" + } + ] + }, + "documentation": null, + "id": 1033, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1014, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "581:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1013, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "581:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1016, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "599:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1018, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "617:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1020, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "633:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:7" + }, + "payable": false, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:7" + }, + "scope": 1131, + "src": "550:171:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1067, + "nodeType": "Block", + "src": "823:330:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1043, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "1045:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1046, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "1077:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1051, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "1089:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1047, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "1061:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1061:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1055, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1042, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1036:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1058, + "nodeType": "ExpressionStatement", + "src": "1036:68:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1062, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "1132:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1063, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "1141:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1060, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "1118:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1118:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1059, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1110:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1066, + "nodeType": "ExpressionStatement", + "src": "1110:38:7" + } + ] + }, + "documentation": null, + "id": 1068, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1035, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "751:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1034, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "751:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "769:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "790:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:7" + }, + "scope": 1131, + "src": "725:428:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1098, + "nodeType": "Block", + "src": "1265:135:7", + "statements": [ + { + "assignments": [ + 1078 + ], + "declarations": [ + { + "constant": false, + "id": 1078, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1271:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1089, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1087, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "1338:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1082, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "1318:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + ], + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1084, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "1325:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1079, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "1294:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1294:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 897, + "src": "1294:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1093, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "1372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1094, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "1381:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1091, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "1358:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1358:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1350:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1097, + "nodeType": "ExpressionStatement", + "src": "1350:45:7" + } + ] + }, + "documentation": null, + "id": 1099, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1070, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1193:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1069, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "1193:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1072, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1211:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1074, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1232:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1076, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:7" + }, + "scope": 1131, + "src": "1157:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1129, + "nodeType": "Block", + "src": "1512:135:7", + "statements": [ + { + "assignments": [ + 1109 + ], + "declarations": [ + { + "constant": false, + "id": 1109, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1518:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1120, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1118, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1105, + "src": "1585:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1113, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "1565:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + ], + "id": 1112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1115, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1572:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1110, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "1541:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1541:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 873, + "src": "1541:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1124, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1619:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1125, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "1628:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1122, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "1605:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1605:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1121, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1597:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1128, + "nodeType": "ExpressionStatement", + "src": "1597:45:7" + } + ] + }, + "documentation": null, + "id": 1130, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1101, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1440:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1100, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "1440:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1103, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1458:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1479:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:7" + }, + "scope": 1131, + "src": "1404:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1132, + "src": "353:1296:7" + } + ], + "src": "0:1650:7" + }, + "id": 7 + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi new file mode 100644 index 000000000..f5543d549 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin new file mode 100644 index 000000000..97fcd2fb9 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json new file mode 100644 index 000000000..3ede830af --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -0,0 +1,203 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "registerMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "getMinerByIndex", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "unregisterMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMinerCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "functionHashes": { + "addCoreTeam(address)": "2e6b6849", + "addSystem(address)": "74be7592", + "getMinerByIndex(uint256)": "3d19ab13", + "getMinerCount()": "bb52c137", + "isCoreTeam(address)": "608d3d3d", + "isSystem(address)": "34cdcf26", + "mine()": "99f4b251", + "registerMiner(address)": "341ccfcb", + "renounceCoreTeam()": "d43acc79", + "renounceSystem()": "e9d61859", + "unregisterMiner(address)": "81f909f3" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "686800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addCoreTeam(address)": "infinite", + "addSystem(address)": "infinite", + "getMinerByIndex(uint256)": "980", + "getMinerCount()": "633", + "isCoreTeam(address)": "infinite", + "isSystem(address)": "infinite", + "mine()": "infinite", + "registerMiner(address)": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSystem()": "infinite", + "unregisterMiner(address)": "infinite" + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 55865265d..873957ff2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -101,6 +101,20 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -152,6 +166,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -376,26 +404,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0xFB8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0xDE DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0xFC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x117 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1C5 JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x18D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xDE3 DUP1 PUSH3 0x1D5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x127 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x383 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x403 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x593 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x5E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x68E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x286 PUSH2 0x721 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x730 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x743 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x96F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xA05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0xB23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x3A1 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43B JUMPI INVALID JUMPDEST EQ PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH22 0x1000000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4B0 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x590 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBC8 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x59C CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x5B9 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5EE CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x613 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x697 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST EQ PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH2 0x70D CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xCD9 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x74E CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x773 JUMPI INVALID JUMPDEST EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x81D JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x16D SWAP1 SWAP3 DIV SWAP2 PUSH2 0x590 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x91E CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x929 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x943 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x978 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x99D JUMPI INVALID JUMPDEST EQ PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA10 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA35 JUMPI INVALID JUMPDEST EQ PUSH2 0xA3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xAE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCEA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCFB JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xB50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB6A JUMPI INVALID JUMPDEST EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xD0C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC58 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3C DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO PUSH2 0xD46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8A DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLVALUE PUSH8 0x33BED0F72B16C5BB SWAP7 PUSH17 0x42B5930D38E536CC6ADF26F0A2B6CC22AA 0xa8 MOD SWAP14 STOP 0x29 ", - "sourceMap": "558:3657:1:-;;;1139:336;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:336:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1342:10:1;:22;;-1:-1:-1;;1342:22:1;;;;;;;;;;-1:-1:-1;;1375:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1406:21:1;;-1:-1:-1;;;;;1406:21:1;;;;;;;;1438:6;:29;;-1:-1:-1;;;;;;1438:29:1;;;;;;;;558:3657;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3657:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x104F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0x121 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x13C DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0x8E JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1EA JUMP JUMPDEST PUSH3 0x11E PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x11E PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x11E PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x182 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1B2 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE55 DUP1 PUSH3 0x1FA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x13D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3DF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x3F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x496 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x516 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x61F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x224 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x7C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3FD CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x422 JUMPI INVALID JUMPDEST EQ PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47B JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x491 JUMPI POP PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CE JUMPI INVALID JUMPDEST EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x51F CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x544 JUMPI INVALID JUMPDEST EQ PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x5FF SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x60B CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x628 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD03 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x673 CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x698 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x71C CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x741 JUMPI INVALID JUMPDEST EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH2 0x792 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D3 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x890 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x958 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x958 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x5FF SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST PUSH2 0x9A2 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9FC CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA21 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA94 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI INVALID JUMPDEST EQ PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xB75 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xBEE JUMPI INVALID JUMPDEST EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT SWAP5 0xb6 0xd2 EXTCODESIZE LOG0 0xb9 SWAP14 0xb0 XOR 0xd2 0xb9 PUSH20 0x943CF860EA9CEB1232EA85E77D5E6F5D5A2E8900 0x29 ", + "sourceMap": "558:3961:1:-;;;1139:396;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:396:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1370:1:1;1358:8;:13;;;;:30;;;;;1387:1;1375:8;:13;;;;1358:30;1350:39;;;;;;;;1402:10;:22;;-1:-1:-1;;1402:22:1;;;;;;;;;;-1:-1:-1;;1435:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1466:21:1;;-1:-1:-1;;;;;1466:21:1;;;;;;;;1498:6;:29;;-1:-1:-1;;;;;;1498:29:1;;;;;;;;558:3961;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3961:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "711000", + "codeDepositCost": "733800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "580", + "DAYS_PER_YEAR()": "624", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "652", + "getCategory()": "696", + "getMiner()": "702", "isAlgoMiner()": "212", "isCoreTeam(address)": "infinite", + "isMining()": "859", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -406,9 +436,9 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21272", + "startMining()": "21420", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21665" + "stopMining()": "21772" } }, "methodIdentifiers": { @@ -419,8 +449,10 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getMiner()": "302c11ca", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", + "isMining()": "19a74ab3", "isSupervisor(address)": "81a24459", "isSystem(address)": "34cdcf26", "migrateMiner(address)": "231d4e2a", @@ -436,7 +468,7 @@ "stopMining()": "da408679" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xe5a1ae438e7d54f613a381816bda4959884722adfbf3976f99b7d7d35b5377c3\",\"urls\":[\"bzzr://e96b24515fcb5324ccbabb61424fbc290ace1636afa28f479a1e666bb06abc42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x3ac3214ab22215c557c0d9142bea5ee16bcedce1d06f4d36dded90b7c14e830a\",\"urls\":[\"bzzr://bf787e40723cedd9971737e335d4fe5d7cefef399c5de208ed362e7e336a624b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -609,6 +641,34 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -637,7 +697,9 @@ "gasEstimates": null, "methodIdentifiers": { "getCategory()": "80258e47", - "isAlgoMiner()": "1777fb4b" + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" } }, "metadata": "", @@ -986,7 +1048,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 769, + "sourceUnit": 816, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -1011,10 +1073,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -1025,10 +1087,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } @@ -1043,7 +1105,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -1051,10 +1113,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1079,7 +1141,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1187,7 +1249,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1253,10 +1315,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1341,7 +1403,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1352,10 +1414,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1615,7 +1677,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1742,7 +1804,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1753,10 +1815,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1874,7 +1936,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1885,10 +1947,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1980,10 +2042,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 487 + 524 ] }, - "id": 488, + "id": 525, "nodeType": "SourceUnit", "nodes": [ { @@ -2001,8 +2063,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 966, + "scope": 525, + "sourceUnit": 1013, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -2012,8 +2074,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 1110, + "scope": 525, + "sourceUnit": 1157, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -2023,8 +2085,8 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 675, + "scope": 525, + "sourceUnit": 722, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -2034,8 +2096,8 @@ "file": "./AlgoSystemRole.sol", "id": 92, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 662, + "scope": 525, + "sourceUnit": 699, "src": "454:30:1", "symbolAliases": [], "unitAlias": "" @@ -2045,7 +2107,7 @@ "file": "./AlgoCoreTeamRole.sol", "id": 93, "nodeType": "ImportDirective", - "scope": 488, + "scope": 525, "sourceUnit": 87, "src": "486:32:1", "symbolAliases": [], @@ -2056,8 +2118,8 @@ "file": "./AlgoSupervisorRole.sol", "id": 94, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 575, + "scope": 525, + "sourceUnit": 612, "src": "520:34:1", "symbolAliases": [], "unitAlias": "" @@ -2071,10 +2133,10 @@ "id": 95, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 661, + "referencedDeclaration": 698, "src": "580:14:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$661", + "typeIdentifier": "t_contract$_AlgoSystemRole_$698", "typeString": "contract AlgoSystemRole" } }, @@ -2107,10 +2169,10 @@ "id": 99, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 574, + "referencedDeclaration": 611, "src": "614:18:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$574", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$611", "typeString": "contract AlgoSupervisorRole" } }, @@ -2125,10 +2187,10 @@ "id": 101, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 674, + "referencedDeclaration": 721, "src": "634:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$674", + "typeIdentifier": "t_contract$_IAlgoMiner_$721", "typeString": "contract IAlgoMiner" } }, @@ -2139,20 +2201,20 @@ ], "contractDependencies": [ 86, - 574, - 661, - 674 + 611, + 698, + 721 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 487, + "id": 524, "linearizedBaseContracts": [ - 487, - 674, - 574, + 524, + 721, + 611, 86, - 661 + 698 ], "name": "AlgoMiner", "nodeType": "ContractDefinition", @@ -2164,10 +2226,10 @@ "id": 103, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1109, + "referencedDeclaration": 1156, "src": "658:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } }, @@ -2178,10 +2240,10 @@ "id": 104, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "672:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } } @@ -2191,7 +2253,7 @@ "id": 108, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "687:43:1", "stateVariable": true, "storageLocation": "default", @@ -2267,7 +2329,7 @@ "id": 115, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "850:25:1", "stateVariable": true, "storageLocation": "default", @@ -2293,7 +2355,7 @@ "id": 117, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "882:23:1", "stateVariable": true, "storageLocation": "default", @@ -2319,7 +2381,7 @@ "id": 119, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "912:22:1", "stateVariable": true, "storageLocation": "default", @@ -2345,12 +2407,12 @@ "id": 121, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "941:21:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { @@ -2358,10 +2420,10 @@ "id": 120, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "941:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -2373,7 +2435,7 @@ "id": 123, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "971:25:1", "stateVariable": true, "storageLocation": "default", @@ -2401,7 +2463,7 @@ "id": 125, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1003:20:1", "stateVariable": true, "storageLocation": "default", @@ -2427,7 +2489,7 @@ "id": 127, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1030:26:1", "stateVariable": true, "storageLocation": "default", @@ -2453,7 +2515,7 @@ "id": 129, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1063:26:1", "stateVariable": true, "storageLocation": "default", @@ -2479,7 +2541,7 @@ "id": 131, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1096:34:1", "stateVariable": true, "storageLocation": "default", @@ -2502,26 +2564,189 @@ }, { "body": { - "id": 166, + "id": 176, "nodeType": "Block", - "src": "1329:146:1", + "src": "1329:206:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 150, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 149, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1358:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1370:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1358:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 152, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1375:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1387:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1375:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1358:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1174, + 1175 + ], + "referencedDeclaration": 1174, + "src": "1350:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "1350:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 148, + "id": 158, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "1342:10:1", + "src": "1402:10:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2531,118 +2756,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 149, + "id": 159, "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 133, - "src": "1355:9:1", + "src": "1415:9:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "1342:22:1", + "src": "1402:22:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 151, + "id": 161, "nodeType": "ExpressionStatement", - "src": "1342:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 152, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "1375:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 153, - "name": "category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1387:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "1375:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 155, - "nodeType": "ExpressionStatement", - "src": "1375:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 156, - "name": "_miner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1406:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 157, - "name": "ownerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 137, - "src": "1415:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1406:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 159, - "nodeType": "ExpressionStatement", - "src": "1406:21:1" + "src": "1402:22:1" }, { "expression": { @@ -2654,14 +2787,106 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 160, + "id": 162, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "1435:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 163, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1447:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1435:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "1435:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 166, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "1466:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 167, + "name": "ownerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "1475:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1466:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 169, + "nodeType": "ExpressionStatement", + "src": "1466:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 170, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1438:6:1", + "src": "1498:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -2672,12 +2897,12 @@ "arguments": [ { "argumentTypes": null, - "id": 162, + "id": 172, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, - "src": "1454:12:1", + "src": "1514:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2691,18 +2916,18 @@ "typeString": "address" } ], - "id": 161, + "id": 171, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1447:6:1", + "referencedDeclaration": 1012, + "src": "1507:6:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1012_$", "typeString": "type(contract IERC20)" } }, - "id": 163, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2710,26 +2935,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1447:20:1", + "src": "1507:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "src": "1438:29:1", + "src": "1498:29:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 165, + "id": 175, "nodeType": "ExpressionStatement", - "src": "1438:29:1" + "src": "1498:29:1" } ] }, "documentation": null, - "id": 167, + "id": 177, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -2743,10 +2968,10 @@ "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 698, "src": "1238:14:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$661_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$698_$", "typeString": "type(contract AlgoSystemRole)" } }, @@ -2781,10 +3006,10 @@ "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, + "referencedDeclaration": 611, "src": "1292:18:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$574_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$611_$", "typeString": "type(contract AlgoSupervisorRole)" } }, @@ -2803,7 +3028,7 @@ "id": 133, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1151:16:1", "stateVariable": false, "storageLocation": "default", @@ -2829,7 +3054,7 @@ "id": 135, "name": "category", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1169:14:1", "stateVariable": false, "storageLocation": "default", @@ -2855,7 +3080,7 @@ "id": 137, "name": "ownerAddress", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1185:20:1", "stateVariable": false, "storageLocation": "default", @@ -2881,7 +3106,7 @@ "id": 139, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1207:20:1", "stateVariable": false, "storageLocation": "default", @@ -2912,17 +3137,17 @@ "parameters": [], "src": "1329:0:1" }, - "scope": 487, - "src": "1139:336:1", + "scope": 524, + "src": "1139:396:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 177, + "id": 187, "nodeType": "Block", - "src": "1504:60:1", + "src": "1564:60:1", "statements": [ { "expression": { @@ -2934,7 +3159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 173, + "id": 183, "isConstant": false, "isLValue": false, "isPure": false, @@ -2943,18 +3168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 170, + "id": 180, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "1523:3:1", + "referencedDeclaration": 1171, + "src": "1583:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 171, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, @@ -2962,7 +3187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1523:10:1", + "src": "1583:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2972,18 +3197,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 172, + "id": 182, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "1537:6:1", + "src": "1597:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1523:20:1", + "src": "1583:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2997,21 +3222,21 @@ "typeString": "bool" } ], - "id": 169, + "id": 179, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1515:7:1", + "referencedDeclaration": 1174, + "src": "1575:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 174, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -3019,41 +3244,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1515:29:1", + "src": "1575:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 175, + "id": 185, "nodeType": "ExpressionStatement", - "src": "1515:29:1" + "src": "1575:29:1" }, { - "id": 176, + "id": 186, "nodeType": "PlaceholderStatement", - "src": "1555:1:1" + "src": "1615:1:1" } ] }, "documentation": null, - "id": 178, + "id": 188, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 168, + "id": 178, "nodeType": "ParameterList", "parameters": [], - "src": "1501:2:1" + "src": "1561:2:1" }, - "src": "1483:81:1", + "src": "1543:81:1", "visibility": "internal" }, { "body": { - "id": 221, + "id": 231, "nodeType": "Block", - "src": "1621:326:1", + "src": "1681:326:1", "statements": [ { "expression": { @@ -3065,19 +3290,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 187, + "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 184, + "id": 194, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "1640:6:1", + "src": "1700:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3089,18 +3314,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 185, + "id": 195, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "1650:10:1", + "src": "1710:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 186, + "id": 196, "isConstant": false, "isLValue": false, "isPure": true, @@ -3108,13 +3333,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1650:22:1", + "src": "1710:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1640:32:1", + "src": "1700:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3128,21 +3353,21 @@ "typeString": "bool" } ], - "id": 183, + "id": 193, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1632:7:1", + "referencedDeclaration": 1174, + "src": "1692:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 188, + "id": 198, "isConstant": false, "isLValue": false, "isPure": false, @@ -3150,15 +3375,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1632:41:1", + "src": "1692:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 189, + "id": 199, "nodeType": "ExpressionStatement", - "src": "1632:41:1" + "src": "1692:41:1" }, { "condition": { @@ -3167,19 +3392,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 192, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 190, + "id": 200, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "1689:18:1", + "src": "1749:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3190,14 +3415,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 191, + "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1711:1:1", + "src": "1771:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3205,33 +3430,33 @@ }, "value": "0" }, - "src": "1689:23:1", + "src": "1749:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 215, + "id": 225, "nodeType": "IfStatement", - "src": "1686:212:1", + "src": "1746:212:1", "trueBody": { - "id": 214, + "id": 224, "nodeType": "Block", - "src": "1714:184:1", + "src": "1774:184:1", "statements": [ { "assignments": [ - 194 + 204 ], "declarations": [ { "constant": false, - "id": 194, + "id": 204, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 222, - "src": "1729:22:1", + "scope": 232, + "src": "1789:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3239,10 +3464,10 @@ "typeString": "uint256" }, "typeName": { - "id": 193, + "id": 203, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1729:7:1", + "src": "1789:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3252,7 +3477,7 @@ "visibility": "internal" } ], - "id": 201, + "id": 211, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3261,14 +3486,14 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 208, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, - "src": "1779:4:1", + "referencedDeclaration": 1200, + "src": "1839:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } } @@ -3276,24 +3501,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } ], - "id": 197, + "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1771:7:1", + "src": "1831:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 199, + "id": 209, "isConstant": false, "isLValue": false, "isPure": false, @@ -3301,7 +3526,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1771:13:1", + "src": "1831:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3317,32 +3542,32 @@ ], "expression": { "argumentTypes": null, - "id": 195, + "id": 205, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1754:6:1", + "src": "1814:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 196, + "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "1754:16:1", + "referencedDeclaration": 957, + "src": "1814:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 200, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3350,14 +3575,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1754:31:1", + "src": "1814:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1729:56:1" + "src": "1789:56:1" }, { "expression": { @@ -3369,19 +3594,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 203, + "id": 213, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "1810:14:1", + "referencedDeclaration": 204, + "src": "1870:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3392,14 +3617,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 204, + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1828:1:1", + "src": "1888:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3407,7 +3632,7 @@ }, "value": "0" }, - "src": "1810:19:1", + "src": "1870:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3421,21 +3646,21 @@ "typeString": "bool" } ], - "id": 202, + "id": 212, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1802:7:1", + "referencedDeclaration": 1174, + "src": "1862:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 206, + "id": 216, "isConstant": false, "isLValue": false, "isPure": false, @@ -3443,32 +3668,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1802:28:1", + "src": "1862:28:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 207, + "id": 217, "nodeType": "ExpressionStatement", - "src": "1802:28:1" + "src": "1862:28:1" }, { "expression": { "argumentTypes": null, - "id": 212, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 208, + "id": 218, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "1847:18:1", + "src": "1907:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3482,19 +3707,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 211, + "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 209, + "id": 219, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "1868:14:1", + "referencedDeclaration": 204, + "src": "1928:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3505,14 +3730,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 210, + "id": 220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1885:1:1", + "src": "1945:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3520,21 +3745,21 @@ }, "value": "2" }, - "src": "1868:18:1", + "src": "1928:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1847:39:1", + "src": "1907:39:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 213, + "id": 223, "nodeType": "ExpressionStatement", - "src": "1847:39:1" + "src": "1907:39:1" } ] } @@ -3542,19 +3767,19 @@ { "expression": { "argumentTypes": null, - "id": 219, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 216, + "id": 226, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "1910:6:1", + "src": "1970:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3566,18 +3791,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 217, + "id": 227, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "1919:10:1", + "src": "1979:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 218, + "id": 228, "isConstant": false, "isLValue": false, "isPure": true, @@ -3585,76 +3810,76 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1919:20:1", + "src": "1979:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1910:29:1", + "src": "1970:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 220, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1910:29:1" + "src": "1970:29:1" } ] }, "documentation": null, - "id": 222, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 181, + "id": 191, "modifierName": { "argumentTypes": null, - "id": 180, + "id": 190, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1608:12:1", + "src": "1668:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1608:12:1" + "src": "1668:12:1" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 179, + "id": 189, "nodeType": "ParameterList", "parameters": [], - "src": "1598:2:1" + "src": "1658:2:1" }, "payable": false, "returnParameters": { - "id": 182, + "id": 192, "nodeType": "ParameterList", "parameters": [], - "src": "1621:0:1" + "src": "1681:0:1" }, - "scope": 487, - "src": "1576:371:1", + "scope": 524, + "src": "1636:371:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 243, + "id": 253, "nodeType": "Block", - "src": "2002:138:1", + "src": "2062:138:1", "statements": [ { "expression": { @@ -3666,19 +3891,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 231, + "id": 241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 228, + "id": 238, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2021:6:1", + "src": "2081:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3690,18 +3915,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 229, + "id": 239, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2031:10:1", + "src": "2091:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 230, + "id": 240, "isConstant": false, "isLValue": false, "isPure": true, @@ -3709,13 +3934,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2031:22:1", + "src": "2091:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2021:32:1", + "src": "2081:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3729,21 +3954,21 @@ "typeString": "bool" } ], - "id": 227, + "id": 237, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2013:7:1", + "referencedDeclaration": 1174, + "src": "2073:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 232, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3751,32 +3976,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2013:41:1", + "src": "2073:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 233, + "id": 243, "nodeType": "ExpressionStatement", - "src": "2013:41:1" + "src": "2073:41:1" }, { "expression": { "argumentTypes": null, - "id": 237, + "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 234, + "id": 244, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2075:6:1", + "src": "2135:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3788,18 +4013,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 235, + "id": 245, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2084:10:1", + "src": "2144:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 236, + "id": 246, "isConstant": false, "isLValue": false, "isPure": true, @@ -3807,38 +4032,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2084:22:1", + "src": "2144:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2075:31:1", + "src": "2135:31:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 238, + "id": 248, "nodeType": "ExpressionStatement", - "src": "2075:31:1" + "src": "2135:31:1" }, { "expression": { "argumentTypes": null, - "id": 241, + "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 239, + "id": 249, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2117:7:1", + "src": "2177:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3849,14 +4074,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 240, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2127:5:1", + "src": "2187:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3864,70 +4089,70 @@ }, "value": "false" }, - "src": "2117:15:1", + "src": "2177:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 242, + "id": 252, "nodeType": "ExpressionStatement", - "src": "2117:15:1" + "src": "2177:15:1" } ] }, "documentation": null, - "id": 244, + "id": 254, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 225, + "id": 235, "modifierName": { "argumentTypes": null, - "id": 224, + "id": 234, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1989:12:1", + "src": "2049:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1989:12:1" + "src": "2049:12:1" } ], "name": "deactivateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 233, "nodeType": "ParameterList", "parameters": [], - "src": "1979:2:1" + "src": "2039:2:1" }, "payable": false, "returnParameters": { - "id": 226, + "id": 236, "nodeType": "ParameterList", "parameters": [], - "src": "2002:0:1" + "src": "2062:0:1" }, - "scope": 487, - "src": "1955:185:1", + "scope": 524, + "src": "2015:185:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 270, + "id": 280, "nodeType": "Block", - "src": "2215:142:1", + "src": "2275:142:1", "statements": [ { "expression": { @@ -3939,19 +4164,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 255, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 252, + "id": 262, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2234:6:1", + "src": "2294:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3963,18 +4188,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 253, + "id": 263, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2244:10:1", + "src": "2304:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 254, + "id": 264, "isConstant": false, "isLValue": false, "isPure": true, @@ -3982,13 +4207,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2244:22:1", + "src": "2304:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2234:32:1", + "src": "2294:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4002,21 +4227,21 @@ "typeString": "bool" } ], - "id": 251, + "id": 261, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2226:7:1", + "referencedDeclaration": 1174, + "src": "2286:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 256, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, @@ -4024,15 +4249,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2226:41:1", + "src": "2286:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 257, + "id": 267, "nodeType": "ExpressionStatement", - "src": "2226:41:1" + "src": "2286:41:1" }, { "expression": { @@ -4040,12 +4265,12 @@ "arguments": [ { "argumentTypes": null, - "id": 261, + "id": 271, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "2300:15:1", + "referencedDeclaration": 256, + "src": "2360:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4059,14 +4284,14 @@ "arguments": [ { "argumentTypes": null, - "id": 265, + "id": 275, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, - "src": "2342:4:1", + "referencedDeclaration": 1200, + "src": "2402:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } } @@ -4074,24 +4299,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } ], - "id": 264, + "id": 274, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2334:7:1", + "src": "2394:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 266, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -4099,7 +4324,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:13:1", + "src": "2394:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4115,32 +4340,32 @@ ], "expression": { "argumentTypes": null, - "id": 262, + "id": 272, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "2317:6:1", + "src": "2377:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 263, + "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "2317:16:1", + "referencedDeclaration": 957, + "src": "2377:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 267, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -4148,7 +4373,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2317:31:1", + "src": "2377:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4168,32 +4393,32 @@ ], "expression": { "argumentTypes": null, - "id": 258, + "id": 268, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "2280:6:1", + "src": "2340:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 260, + "id": 270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 990, - "src": "2280:19:1", + "referencedDeclaration": 1037, + "src": "2340:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 268, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, @@ -4201,57 +4426,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2280:69:1", + "src": "2340:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 279, "nodeType": "ExpressionStatement", - "src": "2280:69:1" + "src": "2340:69:1" } ] }, "documentation": null, - "id": 271, + "id": 281, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 249, + "id": 259, "modifierName": { "argumentTypes": null, - "id": 248, + "id": 258, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "2202:12:1", + "src": "2262:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2202:12:1" + "src": "2262:12:1" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 247, + "id": 257, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 246, + "id": 256, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 271, - "src": "2170:23:1", + "scope": 281, + "src": "2230:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4259,10 +4484,10 @@ "typeString": "address" }, "typeName": { - "id": 245, + "id": 255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2170:7:1", + "src": "2230:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,26 +4497,26 @@ "visibility": "internal" } ], - "src": "2169:25:1" + "src": "2229:25:1" }, "payable": false, "returnParameters": { - "id": 250, + "id": 260, "nodeType": "ParameterList", "parameters": [], - "src": "2215:0:1" + "src": "2275:0:1" }, - "scope": 487, - "src": "2148:209:1", + "scope": 524, + "src": "2208:209:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 288, + "id": 298, "nodeType": "Block", - "src": "2410:108:1", + "src": "2470:108:1", "statements": [ { "expression": { @@ -4303,19 +4528,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 280, + "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 277, + "id": 287, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2429:6:1", + "src": "2489:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4327,18 +4552,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 278, + "id": 288, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2439:10:1", + "src": "2499:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 279, + "id": 289, "isConstant": false, "isLValue": false, "isPure": true, @@ -4346,13 +4571,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2439:20:1", + "src": "2499:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2429:30:1", + "src": "2489:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4366,21 +4591,21 @@ "typeString": "bool" } ], - "id": 276, + "id": 286, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2421:7:1", + "referencedDeclaration": 1174, + "src": "2481:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 281, + "id": 291, "isConstant": false, "isLValue": false, "isPure": false, @@ -4388,32 +4613,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2421:39:1", + "src": "2481:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 282, + "id": 292, "nodeType": "ExpressionStatement", - "src": "2421:39:1" + "src": "2481:39:1" }, { "expression": { "argumentTypes": null, - "id": 286, + "id": 296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 283, + "id": 293, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2481:6:1", + "src": "2541:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4425,18 +4650,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 284, + "id": 294, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2490:10:1", + "src": "2550:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 285, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, @@ -4444,76 +4669,76 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2490:20:1", + "src": "2550:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2481:29:1", + "src": "2541:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 287, + "id": 297, "nodeType": "ExpressionStatement", - "src": "2481:29:1" + "src": "2541:29:1" } ] }, "documentation": null, - "id": 289, + "id": 299, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 274, + "id": 284, "modifierName": { "argumentTypes": null, - "id": 273, + "id": 283, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2395:14:1", + "referencedDeclaration": 552, + "src": "2455:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2395:14:1" + "src": "2455:14:1" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 272, + "id": 282, "nodeType": "ParameterList", "parameters": [], - "src": "2385:2:1" + "src": "2445:2:1" }, "payable": false, "returnParameters": { - "id": 275, + "id": 285, "nodeType": "ParameterList", "parameters": [], - "src": "2410:0:1" + "src": "2470:0:1" }, - "scope": 487, - "src": "2365:153:1", + "scope": 524, + "src": "2425:153:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 306, + "id": 316, "nodeType": "Block", - "src": "2572:100:1", + "src": "2632:100:1", "statements": [ { "expression": { @@ -4525,19 +4750,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 298, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 295, + "id": 305, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2591:6:1", + "src": "2651:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4549,18 +4774,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 296, + "id": 306, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2601:10:1", + "src": "2661:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 297, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, @@ -4568,13 +4793,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2601:20:1", + "src": "2661:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2591:30:1", + "src": "2651:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4588,21 +4813,21 @@ "typeString": "bool" } ], - "id": 294, + "id": 304, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2583:7:1", + "referencedDeclaration": 1174, + "src": "2643:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 299, + "id": 309, "isConstant": false, "isLValue": false, "isPure": false, @@ -4610,32 +4835,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2583:39:1", + "src": "2643:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 300, + "id": 310, "nodeType": "ExpressionStatement", - "src": "2583:39:1" + "src": "2643:39:1" }, { "expression": { "argumentTypes": null, - "id": 304, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 301, + "id": 311, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2635:6:1", + "src": "2695:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4647,18 +4872,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 302, + "id": 312, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2644:10:1", + "src": "2704:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 303, + "id": 313, "isConstant": false, "isLValue": false, "isPure": true, @@ -4666,76 +4891,76 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2644:20:1", + "src": "2704:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2635:29:1", + "src": "2695:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 305, + "id": 315, "nodeType": "ExpressionStatement", - "src": "2635:29:1" + "src": "2695:29:1" } ] }, "documentation": null, - "id": 307, + "id": 317, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 292, + "id": 302, "modifierName": { "argumentTypes": null, - "id": 291, + "id": 301, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2557:14:1", + "referencedDeclaration": 552, + "src": "2617:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2557:14:1" + "src": "2617:14:1" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "2547:2:1" + "src": "2607:2:1" }, "payable": false, "returnParameters": { - "id": 293, + "id": 303, "nodeType": "ParameterList", "parameters": [], - "src": "2572:0:1" + "src": "2632:0:1" }, - "scope": 487, - "src": "2526:146:1", + "scope": 524, + "src": "2586:146:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 334, + "id": 344, "nodeType": "Block", - "src": "2736:160:1", + "src": "2796:160:1", "statements": [ { "expression": { @@ -4747,19 +4972,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 316, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 313, + "id": 323, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2755:6:1", + "src": "2815:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4771,18 +4996,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 314, + "id": 324, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2765:10:1", + "src": "2825:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 315, + "id": 325, "isConstant": false, "isLValue": false, "isPure": true, @@ -4790,13 +5015,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2765:18:1", + "src": "2825:18:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2755:28:1", + "src": "2815:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4810,21 +5035,21 @@ "typeString": "bool" } ], - "id": 312, + "id": 322, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2747:7:1", + "referencedDeclaration": 1174, + "src": "2807:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 317, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, @@ -4832,128 +5057,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2747:37:1", + "src": "2807:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 318, + "id": 328, "nodeType": "ExpressionStatement", - "src": "2747:37:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 319, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2805:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 320, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2814:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Stopped", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2814:18:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2805:27:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "id": 323, - "nodeType": "ExpressionStatement", - "src": "2805:27:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 324, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2853:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2843:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 327, - "nodeType": "ExpressionStatement", - "src": "2843:15:1" + "src": "2807:37:1" }, { "expression": { @@ -4965,12 +5077,125 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 328, + "id": 329, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2865:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 330, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2874:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2865:27:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 333, + "nodeType": "ExpressionStatement", + "src": "2865:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 334, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2903:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2913:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2903:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 337, + "nodeType": "ExpressionStatement", + "src": "2903:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 338, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "2869:6:1", + "src": "2929:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4984,14 +5209,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 330, + "id": 340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2886:1:1", + "src": "2946:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5007,20 +5232,20 @@ "typeString": "int_const 0" } ], - "id": 329, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2878:7:1", + "src": "2938:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 331, + "id": 341, "isConstant": false, "isLValue": false, "isPure": true, @@ -5028,76 +5253,76 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2878:10:1", + "src": "2938:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2869:19:1", + "src": "2929:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 333, + "id": 343, "nodeType": "ExpressionStatement", - "src": "2869:19:1" + "src": "2929:19:1" } ] }, "documentation": null, - "id": 335, + "id": 345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 310, + "id": 320, "modifierName": { "argumentTypes": null, - "id": 309, + "id": 319, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2721:14:1", + "referencedDeclaration": 552, + "src": "2781:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2721:14:1" + "src": "2781:14:1" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 308, + "id": 318, "nodeType": "ParameterList", "parameters": [], - "src": "2711:2:1" + "src": "2771:2:1" }, "payable": false, "returnParameters": { - "id": 311, + "id": 321, "nodeType": "ParameterList", "parameters": [], - "src": "2736:0:1" + "src": "2796:0:1" }, - "scope": 487, - "src": "2680:216:1", + "scope": 524, + "src": "2740:216:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 358, + "id": 368, "nodeType": "Block", - "src": "2971:133:1", + "src": "3031:133:1", "statements": [ { "expression": { @@ -5109,19 +5334,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 346, + "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 343, + "id": 353, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2990:6:1", + "src": "3050:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5133,18 +5358,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 344, + "id": 354, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3000:10:1", + "src": "3060:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 345, + "id": 355, "isConstant": false, "isLValue": false, "isPure": true, @@ -5152,13 +5377,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3000:18:1", + "src": "3060:18:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2990:28:1", + "src": "3050:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5172,21 +5397,21 @@ "typeString": "bool" } ], - "id": 342, + "id": 352, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2982:7:1", + "referencedDeclaration": 1174, + "src": "3042:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 347, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, @@ -5194,32 +5419,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2982:37:1", + "src": "3042:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 348, + "id": 358, "nodeType": "ExpressionStatement", - "src": "2982:37:1" + "src": "3042:37:1" }, { "expression": { "argumentTypes": null, - "id": 352, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 349, + "id": 359, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3032:6:1", + "src": "3092:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5231,18 +5456,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 350, + "id": 360, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3041:10:1", + "src": "3101:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 351, + "id": 361, "isConstant": false, "isLValue": false, "isPure": true, @@ -5250,38 +5475,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3041:20:1", + "src": "3101:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3032:29:1", + "src": "3092:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 353, + "id": 363, "nodeType": "ExpressionStatement", - "src": "3032:29:1" + "src": "3092:29:1" }, { "expression": { "argumentTypes": null, - "id": 356, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 354, + "id": 364, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "3072:6:1", + "src": "3132:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5291,68 +5516,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 355, + "id": 365, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "3081:15:1", + "referencedDeclaration": 347, + "src": "3141:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3072:24:1", + "src": "3132:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 357, + "id": 367, "nodeType": "ExpressionStatement", - "src": "3072:24:1" + "src": "3132:24:1" } ] }, "documentation": null, - "id": 359, + "id": 369, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 340, + "id": 350, "modifierName": { "argumentTypes": null, - "id": 339, + "id": 349, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2956:14:1", + "referencedDeclaration": 552, + "src": "3016:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2956:14:1" + "src": "3016:14:1" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 338, + "id": 348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 337, + "id": 347, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 359, - "src": "2924:23:1", + "scope": 369, + "src": "2984:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5360,10 +5585,10 @@ "typeString": "address" }, "typeName": { - "id": 336, + "id": 346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:1", + "src": "2984:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5373,26 +5598,26 @@ "visibility": "internal" } ], - "src": "2923:25:1" + "src": "2983:25:1" }, "payable": false, "returnParameters": { - "id": 341, + "id": 351, "nodeType": "ParameterList", "parameters": [], - "src": "2971:0:1" + "src": "3031:0:1" }, - "scope": 487, - "src": "2904:200:1", + "scope": 524, + "src": "2964:200:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 380, + "id": 390, "nodeType": "Block", - "src": "3152:121:1", + "src": "3212:121:1", "statements": [ { "expression": { @@ -5404,19 +5629,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 368, + "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 365, + "id": 375, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3171:6:1", + "src": "3231:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5428,18 +5653,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 366, + "id": 376, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3181:10:1", + "src": "3241:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 367, + "id": 377, "isConstant": false, "isLValue": false, "isPure": true, @@ -5447,13 +5672,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3181:20:1", + "src": "3241:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3171:30:1", + "src": "3231:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5467,21 +5692,21 @@ "typeString": "bool" } ], - "id": 364, + "id": 374, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3163:7:1", + "referencedDeclaration": 1174, + "src": "3223:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 369, + "id": 379, "isConstant": false, "isLValue": false, "isPure": false, @@ -5489,15 +5714,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3163:39:1", + "src": "3223:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 370, + "id": 380, "nodeType": "ExpressionStatement", - "src": "3163:39:1" + "src": "3223:39:1" }, { "expression": { @@ -5505,7 +5730,7 @@ "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 383, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,15 +5738,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3221:8:1", + "src": "3281:8:1", "subExpression": { "argumentTypes": null, - "id": 372, + "id": 382, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3222:7:1", + "src": "3282:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5540,21 +5765,21 @@ "typeString": "bool" } ], - "id": 371, + "id": 381, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3213:7:1", + "referencedDeclaration": 1174, + "src": "3273:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 374, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -5562,32 +5787,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3213:17:1", + "src": "3273:17:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 375, + "id": 385, "nodeType": "ExpressionStatement", - "src": "3213:17:1" + "src": "3273:17:1" }, { "expression": { "argumentTypes": null, - "id": 378, + "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 376, + "id": 386, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3251:7:1", + "src": "3311:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5598,14 +5823,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 377, + "id": 387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3261:4:1", + "src": "3321:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5613,70 +5838,70 @@ }, "value": "true" }, - "src": "3251:14:1", + "src": "3311:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 379, + "id": 389, "nodeType": "ExpressionStatement", - "src": "3251:14:1" + "src": "3311:14:1" } ] }, "documentation": null, - "id": 381, + "id": 391, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 362, + "id": 372, "modifierName": { "argumentTypes": null, - "id": 361, + "id": 371, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "3142:9:1", + "referencedDeclaration": 188, + "src": "3202:9:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3142:9:1" + "src": "3202:9:1" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 360, + "id": 370, "nodeType": "ParameterList", "parameters": [], - "src": "3132:2:1" + "src": "3192:2:1" }, "payable": false, "returnParameters": { - "id": 363, + "id": 373, "nodeType": "ParameterList", "parameters": [], - "src": "3152:0:1" + "src": "3212:0:1" }, - "scope": 487, - "src": "3112:161:1", + "scope": 524, + "src": "3172:161:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 401, + "id": 411, "nodeType": "Block", - "src": "3320:121:1", + "src": "3380:121:1", "statements": [ { "expression": { @@ -5688,19 +5913,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 390, + "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 387, + "id": 397, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3339:6:1", + "src": "3399:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5712,18 +5937,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 388, + "id": 398, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3349:10:1", + "src": "3409:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 389, + "id": 399, "isConstant": false, "isLValue": false, "isPure": true, @@ -5731,13 +5956,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3349:20:1", + "src": "3409:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3339:30:1", + "src": "3399:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5751,21 +5976,21 @@ "typeString": "bool" } ], - "id": 386, + "id": 396, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3331:7:1", + "referencedDeclaration": 1174, + "src": "3391:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 391, + "id": 401, "isConstant": false, "isLValue": false, "isPure": false, @@ -5773,15 +5998,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3331:39:1", + "src": "3391:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 392, + "id": 402, "nodeType": "ExpressionStatement", - "src": "3331:39:1" + "src": "3391:39:1" }, { "expression": { @@ -5789,12 +6014,12 @@ "arguments": [ { "argumentTypes": null, - "id": 394, + "id": 404, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3389:7:1", + "src": "3449:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5808,21 +6033,21 @@ "typeString": "bool" } ], - "id": 393, + "id": 403, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3381:7:1", + "referencedDeclaration": 1174, + "src": "3441:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 395, + "id": 405, "isConstant": false, "isLValue": false, "isPure": false, @@ -5830,32 +6055,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3381:16:1", + "src": "3441:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 396, + "id": 406, "nodeType": "ExpressionStatement", - "src": "3381:16:1" + "src": "3441:16:1" }, { "expression": { "argumentTypes": null, - "id": 399, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 397, + "id": 407, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3418:7:1", + "src": "3478:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5866,14 +6091,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 398, + "id": 408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:5:1", + "src": "3488:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5881,70 +6106,70 @@ }, "value": "false" }, - "src": "3418:15:1", + "src": "3478:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 400, + "id": 410, "nodeType": "ExpressionStatement", - "src": "3418:15:1" + "src": "3478:15:1" } ] }, "documentation": null, - "id": 402, + "id": 412, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 384, + "id": 394, "modifierName": { "argumentTypes": null, - "id": 383, + "id": 393, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "3310:9:1", + "referencedDeclaration": 188, + "src": "3370:9:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3310:9:1" + "src": "3370:9:1" } ], "name": "stopMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 382, + "id": 392, "nodeType": "ParameterList", "parameters": [], - "src": "3300:2:1" + "src": "3360:2:1" }, "payable": false, "returnParameters": { - "id": 385, + "id": 395, "nodeType": "ParameterList", "parameters": [], - "src": "3320:0:1" + "src": "3380:0:1" }, - "scope": 487, - "src": "3281:160:1", + "scope": 524, + "src": "3341:160:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 469, + "id": 485, "nodeType": "Block", - "src": "3483:547:1", + "src": "3543:579:1", "statements": [ { "expression": { @@ -5956,19 +6181,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 411, + "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 408, + "id": 418, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3502:6:1", + "src": "3562:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5980,18 +6205,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 409, + "id": 419, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3512:10:1", + "src": "3572:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 410, + "id": 420, "isConstant": false, "isLValue": false, "isPure": true, @@ -5999,13 +6224,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3512:20:1", + "src": "3572:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3502:30:1", + "src": "3562:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6019,21 +6244,21 @@ "typeString": "bool" } ], - "id": 407, + "id": 417, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3494:7:1", + "referencedDeclaration": 1174, + "src": "3554:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 412, + "id": 422, "isConstant": false, "isLValue": false, "isPure": false, @@ -6041,15 +6266,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3494:39:1", + "src": "3554:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 413, + "id": 423, "nodeType": "ExpressionStatement", - "src": "3494:39:1" + "src": "3554:39:1" }, { "expression": { @@ -6057,12 +6282,12 @@ "arguments": [ { "argumentTypes": null, - "id": 415, + "id": 425, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3552:7:1", + "src": "3612:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6076,21 +6301,21 @@ "typeString": "bool" } ], - "id": 414, + "id": 424, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3544:7:1", + "referencedDeclaration": 1174, + "src": "3604:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 416, + "id": 426, "isConstant": false, "isLValue": false, "isPure": false, @@ -6098,15 +6323,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3544:16:1", + "src": "3604:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 417, + "id": 427, "nodeType": "ExpressionStatement", - "src": "3544:16:1" + "src": "3604:16:1" }, { "condition": { @@ -6115,19 +6340,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 420, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 428, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3576:11:1", + "src": "3636:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6138,14 +6363,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 419, + "id": 429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3591:1:1", + "src": "3651:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6153,21 +6378,21 @@ }, "value": "0" }, - "src": "3576:16:1", + "src": "3636:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 454, + "id": 464, "nodeType": "Block", - "src": "3673:238:1", + "src": "3733:238:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 431, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -6175,15 +6400,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3688:13:1", + "src": "3748:13:1", "subExpression": { "argumentTypes": null, - "id": 430, + "id": 440, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3688:11:1", + "src": "3748:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6194,9 +6419,9 @@ "typeString": "uint16" } }, - "id": 432, + "id": 442, "nodeType": "ExpressionStatement", - "src": "3688:13:1" + "src": "3748:13:1" }, { "condition": { @@ -6205,19 +6430,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 438, + "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 433, + "id": 443, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3719:11:1", + "src": "3779:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6234,19 +6459,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 436, + "id": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 434, + "id": 444, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, - "src": "3735:13:1", + "src": "3795:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6257,14 +6482,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 435, + "id": 445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3751:1:1", + "src": "3811:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6272,45 +6497,45 @@ }, "value": "1" }, - "src": "3735:17:1", + "src": "3795:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 437, + "id": 447, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3734:19:1", + "src": "3794:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3719:34:1", + "src": "3779:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 453, + "id": 463, "nodeType": "IfStatement", - "src": "3716:184:1", + "src": "3776:184:1", "trueBody": { - "id": 452, + "id": 462, "nodeType": "Block", - "src": "3755:145:1", + "src": "3815:145:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 440, + "id": 450, "isConstant": false, "isLValue": false, "isPure": false, @@ -6318,15 +6543,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3774:14:1", + "src": "3834:14:1", "subExpression": { "argumentTypes": null, - "id": 439, + "id": 449, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "3774:12:1", + "src": "3834:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6337,26 +6562,26 @@ "typeString": "uint8" } }, - "id": 441, + "id": 451, "nodeType": "ExpressionStatement", - "src": "3774:14:1" + "src": "3834:14:1" }, { "expression": { "argumentTypes": null, - "id": 444, + "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 442, + "id": 452, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3807:11:1", + "src": "3867:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6367,14 +6592,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 443, + "id": 453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3821:1:1", + "src": "3881:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6382,32 +6607,32 @@ }, "value": "1" }, - "src": "3807:15:1", + "src": "3867:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 445, + "id": 455, "nodeType": "ExpressionStatement", - "src": "3807:15:1" + "src": "3867:15:1" }, { "expression": { "argumentTypes": null, - "id": 450, + "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 446, + "id": 456, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3841:18:1", + "src": "3901:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6421,19 +6646,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 449, + "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 447, + "id": 457, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3862:18:1", + "src": "3922:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6444,14 +6669,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 448, + "id": 458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3883:1:1", + "src": "3943:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6459,51 +6684,51 @@ }, "value": "2" }, - "src": "3862:22:1", + "src": "3922:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3841:43:1", + "src": "3901:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 451, + "id": 461, "nodeType": "ExpressionStatement", - "src": "3841:43:1" + "src": "3901:43:1" } ] } } ] }, - "id": 455, + "id": 465, "nodeType": "IfStatement", - "src": "3573:338:1", + "src": "3633:338:1", "trueBody": { - "id": 429, + "id": 439, "nodeType": "Block", - "src": "3594:73:1", + "src": "3654:73:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 423, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 421, + "id": 431, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "3609:12:1", + "src": "3669:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6514,14 +6739,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 422, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3624:1:1", + "src": "3684:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6529,32 +6754,32 @@ }, "value": "1" }, - "src": "3609:16:1", + "src": "3669:16:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 424, + "id": 434, "nodeType": "ExpressionStatement", - "src": "3609:16:1" + "src": "3669:16:1" }, { "expression": { "argumentTypes": null, - "id": 427, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 425, + "id": 435, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3640:11:1", + "src": "3700:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6565,14 +6790,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 426, + "id": 436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3654:1:1", + "src": "3714:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6580,31 +6805,31 @@ }, "value": "1" }, - "src": "3640:15:1", + "src": "3700:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 428, + "id": 438, "nodeType": "ExpressionStatement", - "src": "3640:15:1" + "src": "3700:15:1" } ] } }, { "assignments": [ - 457 + 467 ], "declarations": [ { "constant": false, - "id": 457, + "id": 467, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "3923:14:1", + "scope": 486, + "src": "3983:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6612,10 +6837,10 @@ "typeString": "uint256" }, "typeName": { - "id": 456, + "id": 466, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3923:7:1", + "src": "3983:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6625,26 +6850,26 @@ "visibility": "internal" } ], - "id": 461, + "id": 471, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 460, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 458, + "id": 468, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3940:18:1", + "src": "4000:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6654,25 +6879,25 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 459, + "id": 469, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, - "src": "3961:13:1", + "src": "4021:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3940:34:1", + "src": "4000:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3923:51:1" + "src": "3983:51:1" }, { "expression": { @@ -6680,12 +6905,106 @@ "arguments": [ { "argumentTypes": null, - "id": 465, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 473, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "4055:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4064:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4055:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1174, + 1175 + ], + "referencedDeclaration": 1174, + "src": "4047:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4047:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "4047:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 481, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "4007:6:1", + "src": "4099:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6693,12 +7012,12 @@ }, { "argumentTypes": null, - "id": 466, + "id": 482, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "4015:6:1", + "referencedDeclaration": 467, + "src": "4107:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6718,32 +7037,32 @@ ], "expression": { "argumentTypes": null, - "id": 462, + "id": 478, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "3987:6:1", + "src": "4079:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 464, + "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 990, - "src": "3987:19:1", + "referencedDeclaration": 1037, + "src": "4079:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 467, + "id": 483, "isConstant": false, "isLValue": false, "isPure": false, @@ -6751,175 +7070,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3987:35:1", + "src": "4079:35:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 468, - "nodeType": "ExpressionStatement", - "src": "3987:35:1" - } - ] - }, - "documentation": null, - "id": 470, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 405, - "modifierName": { - "argumentTypes": null, - "id": 404, - "name": "onlySystem", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 602, - "src": "3472:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3472:10:1" - } - ], - "name": "mine", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 403, - "nodeType": "ParameterList", - "parameters": [], - "src": "3462:2:1" - }, - "payable": false, - "returnParameters": { - "id": 406, - "nodeType": "ParameterList", - "parameters": [], - "src": "3483:0:1" - }, - "scope": 487, - "src": "3449:581:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 477, - "nodeType": "Block", - "src": "4088:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4106:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 474, - "id": 476, - "nodeType": "Return", - "src": "4099:11:1" - } - ] - }, - "documentation": null, - "id": 478, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [], - "src": "4058:2:1" - }, - "payable": false, - "returnParameters": { - "id": 474, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 473, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 478, - "src": "4082:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 472, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4082:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4081:6:1" - }, - "scope": 487, - "src": "4038:80:1", - "stateMutability": "pure", - "superFunction": 668, - "visibility": "public" - }, - { - "body": { - "id": 485, - "nodeType": "Block", - "src": "4177:35:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 483, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "4195:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 482, "id": 484, - "nodeType": "Return", - "src": "4188:16:1" + "nodeType": "ExpressionStatement", + "src": "4079:35:1" } ] }, @@ -6927,28 +7086,188 @@ "id": 486, "implemented": true, "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 415, + "modifierName": { + "argumentTypes": null, + "id": 414, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "3532:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3532:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 413, + "nodeType": "ParameterList", + "parameters": [], + "src": "3522:2:1" + }, + "payable": false, + "returnParameters": { + "id": 416, + "nodeType": "ParameterList", + "parameters": [], + "src": "3543:0:1" + }, + "scope": 524, + "src": "3509:613:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 493, + "nodeType": "Block", + "src": "4180:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4198:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 490, + "id": 492, + "nodeType": "Return", + "src": "4191:11:1" + } + ] + }, + "documentation": null, + "id": 494, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [], + "src": "4150:2:1" + }, + "payable": false, + "returnParameters": { + "id": 490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 494, + "src": "4174:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 488, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4174:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4173:6:1" + }, + "scope": 524, + "src": "4130:80:1", + "stateMutability": "pure", + "superFunction": 705, + "visibility": "public" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "4269:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 499, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "4287:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 498, + "id": 500, + "nodeType": "Return", + "src": "4280:16:1" + } + ] + }, + "documentation": null, + "id": 502, + "implemented": true, + "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 479, + "id": 495, "nodeType": "ParameterList", "parameters": [], - "src": "4146:2:1" + "src": "4238:2:1" }, "payable": false, "returnParameters": { - "id": 482, + "id": 498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 481, + "id": 497, "name": "", "nodeType": "VariableDeclaration", - "scope": 486, - "src": "4170:5:1", + "scope": 502, + "src": "4262:5:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6956,10 +7275,10 @@ "typeString": "uint8" }, "typeName": { - "id": 480, + "id": 496, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4170:5:1", + "src": "4262:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6969,20 +7288,262 @@ "visibility": "internal" } ], - "src": "4169:7:1" + "src": "4261:7:1" }, - "scope": 487, - "src": "4126:86:1", + "scope": 524, + "src": "4218:86:1", "stateMutability": "view", - "superFunction": 673, + "superFunction": 710, + "visibility": "public" + }, + { + "body": { + "id": 514, + "nodeType": "Block", + "src": "4359:67:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 507, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4377:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 508, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4387:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4387:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "4377:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "4411:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4377:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 506, + "id": 513, + "nodeType": "Return", + "src": "4370:48:1" + } + ] + }, + "documentation": null, + "id": 515, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "4329:2:1" + }, + "payable": false, + "returnParameters": { + "id": 506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 505, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "4353:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 504, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4353:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4352:6:1" + }, + "scope": 524, + "src": "4312:114:1", + "stateMutability": "view", + "superFunction": 715, + "visibility": "public" + }, + { + "body": { + "id": 522, + "nodeType": "Block", + "src": "4484:32:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 520, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4502:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 519, + "id": 521, + "nodeType": "Return", + "src": "4495:13:1" + } + ] + }, + "documentation": null, + "id": 523, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [], + "src": "4451:2:1" + }, + "payable": false, + "returnParameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "4475:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4475:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4474:9:1" + }, + "scope": 524, + "src": "4434:82:1", + "stateMutability": "view", + "superFunction": 720, "visibility": "public" } ], - "scope": 488, - "src": "558:3657:1" + "scope": 525, + "src": "558:3961:1" } ], - "src": "0:4217:1" + "src": "0:4521:1" }, "id": 1 }, @@ -6991,14 +7552,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 574 + 611 ] }, - "id": 575, + "id": 612, "nodeType": "SourceUnit", "nodes": [ { - "id": 489, + "id": 526, "literals": [ "solidity", "^", @@ -7011,10 +7572,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 490, + "id": 527, "nodeType": "ImportDirective", - "scope": 575, - "sourceUnit": 769, + "scope": 612, + "sourceUnit": 816, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -7025,24 +7586,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 574, + "id": 611, "linearizedBaseContracts": [ - 574 + 611 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 493, + "id": 530, "libraryName": { "contractScope": null, - "id": 491, + "id": 528, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "262:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -7050,39 +7611,39 @@ "src": "256:27:2", "typeName": { "contractScope": null, - "id": 492, + "id": 529, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "272:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 495, + "id": 532, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 574, + "scope": 611, "src": "291:31:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 494, + "id": 531, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "291:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7091,7 +7652,7 @@ }, { "body": { - "id": 503, + "id": 540, "nodeType": "Block", "src": "355:45:2", "statements": [ @@ -7103,18 +7664,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 499, + "id": 536, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "381:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 500, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, @@ -7136,18 +7697,18 @@ "typeString": "address" } ], - "id": 498, + "id": 535, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, + "referencedDeclaration": 598, "src": "366:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 501, + "id": 538, "isConstant": false, "isLValue": false, "isPure": false, @@ -7161,14 +7722,14 @@ "typeString": "tuple()" } }, - "id": 502, + "id": 539, "nodeType": "ExpressionStatement", "src": "366:26:2" } ] }, "documentation": null, - "id": 504, + "id": 541, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -7176,19 +7737,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 496, + "id": 533, "nodeType": "ParameterList", "parameters": [], "src": "343:2:2" }, "payable": false, "returnParameters": { - "id": 497, + "id": 534, "nodeType": "ParameterList", "parameters": [], "src": "355:0:2" }, - "scope": 574, + "scope": 611, "src": "331:69:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7196,7 +7757,7 @@ }, { "body": { - "id": 514, + "id": 551, "nodeType": "Block", "src": "434:64:2", "statements": [ @@ -7211,18 +7772,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 508, + "id": 545, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "466:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 509, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, @@ -7244,18 +7805,18 @@ "typeString": "address" } ], - "id": 507, + "id": 544, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 528, + "referencedDeclaration": 565, "src": "453:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 510, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, @@ -7277,21 +7838,21 @@ "typeString": "bool" } ], - "id": 506, + "id": 543, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "445:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 511, + "id": 548, "isConstant": false, "isLValue": false, "isPure": false, @@ -7305,23 +7866,23 @@ "typeString": "tuple()" } }, - "id": 512, + "id": 549, "nodeType": "ExpressionStatement", "src": "445:33:2" }, { - "id": 513, + "id": 550, "nodeType": "PlaceholderStatement", "src": "489:1:2" } ] }, "documentation": null, - "id": 515, + "id": 552, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 505, + "id": 542, "nodeType": "ParameterList", "parameters": [], "src": "431:2:2" @@ -7331,7 +7892,7 @@ }, { "body": { - "id": 527, + "id": 564, "nodeType": "Block", "src": "572:51:2", "statements": [ @@ -7341,11 +7902,11 @@ "arguments": [ { "argumentTypes": null, - "id": 524, + "id": 561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 517, + "referencedDeclaration": 554, "src": "607:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7362,32 +7923,32 @@ ], "expression": { "argumentTypes": null, - "id": 522, + "id": 559, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "590:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 523, + "id": 560, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "590:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 525, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7401,15 +7962,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 521, - "id": 526, + "functionReturnParameters": 558, + "id": 563, "nodeType": "Return", "src": "583:32:2" } ] }, "documentation": null, - "id": 528, + "id": 565, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7417,15 +7978,15 @@ "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 518, + "id": 555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 517, + "id": 554, "name": "account", "nodeType": "VariableDeclaration", - "scope": 528, + "scope": 565, "src": "528:15:2", "stateVariable": false, "storageLocation": "default", @@ -7434,7 +7995,7 @@ "typeString": "address" }, "typeName": { - "id": 516, + "id": 553, "name": "address", "nodeType": "ElementaryTypeName", "src": "528:7:2", @@ -7451,15 +8012,15 @@ }, "payable": false, "returnParameters": { - "id": 521, + "id": 558, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 520, + "id": 557, "name": "", "nodeType": "VariableDeclaration", - "scope": 528, + "scope": 565, "src": "566:4:2", "stateVariable": false, "storageLocation": "default", @@ -7468,7 +8029,7 @@ "typeString": "bool" }, "typeName": { - "id": 519, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", "src": "566:4:2", @@ -7483,7 +8044,7 @@ ], "src": "565:6:2" }, - "scope": 574, + "scope": 611, "src": "506:117:2", "stateMutability": "view", "superFunction": null, @@ -7491,7 +8052,7 @@ }, { "body": { - "id": 539, + "id": 576, "nodeType": "Block", "src": "693:42:2", "statements": [ @@ -7501,11 +8062,11 @@ "arguments": [ { "argumentTypes": null, - "id": 536, + "id": 573, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, + "referencedDeclaration": 567, "src": "719:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7520,18 +8081,18 @@ "typeString": "address" } ], - "id": 535, + "id": 572, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, + "referencedDeclaration": 598, "src": "704:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 537, + "id": 574, "isConstant": false, "isLValue": false, "isPure": false, @@ -7545,28 +8106,28 @@ "typeString": "tuple()" } }, - "id": 538, + "id": 575, "nodeType": "ExpressionStatement", "src": "704:23:2" } ] }, "documentation": null, - "id": 540, + "id": 577, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 533, + "id": 570, "modifierName": { "argumentTypes": null, - "id": 532, + "id": 569, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, + "referencedDeclaration": 552, "src": "678:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -7580,15 +8141,15 @@ "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 531, + "id": 568, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 530, + "id": 567, "name": "account", "nodeType": "VariableDeclaration", - "scope": 540, + "scope": 577, "src": "654:15:2", "stateVariable": false, "storageLocation": "default", @@ -7597,7 +8158,7 @@ "typeString": "address" }, "typeName": { - "id": 529, + "id": 566, "name": "address", "nodeType": "ElementaryTypeName", "src": "654:7:2", @@ -7614,12 +8175,12 @@ }, "payable": false, "returnParameters": { - "id": 534, + "id": 571, "nodeType": "ParameterList", "parameters": [], "src": "693:0:2" }, - "scope": 574, + "scope": 611, "src": "631:104:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7627,7 +8188,7 @@ }, { "body": { - "id": 548, + "id": 585, "nodeType": "Block", "src": "780:48:2", "statements": [ @@ -7639,18 +8200,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 544, + "id": 581, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "809:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 545, + "id": 582, "isConstant": false, "isLValue": false, "isPure": false, @@ -7672,18 +8233,18 @@ "typeString": "address" } ], - "id": 543, + "id": 580, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 573, + "referencedDeclaration": 610, "src": "791:17:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 546, + "id": 583, "isConstant": false, "isLValue": false, "isPure": false, @@ -7697,14 +8258,14 @@ "typeString": "tuple()" } }, - "id": 547, + "id": 584, "nodeType": "ExpressionStatement", "src": "791:29:2" } ] }, "documentation": null, - "id": 549, + "id": 586, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7712,19 +8273,19 @@ "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 541, + "id": 578, "nodeType": "ParameterList", "parameters": [], "src": "770:2:2" }, "payable": false, "returnParameters": { - "id": 542, + "id": 579, "nodeType": "ParameterList", "parameters": [], "src": "780:0:2" }, - "scope": 574, + "scope": 611, "src": "743:85:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7732,7 +8293,7 @@ }, { "body": { - "id": 560, + "id": 597, "nodeType": "Block", "src": "886:44:2", "statements": [ @@ -7742,11 +8303,11 @@ "arguments": [ { "argumentTypes": null, - "id": 557, + "id": 594, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 551, + "referencedDeclaration": 588, "src": "914:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7763,32 +8324,32 @@ ], "expression": { "argumentTypes": null, - "id": 554, + "id": 591, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "897:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 556, + "id": 593, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "897:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 558, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,14 +8363,14 @@ "typeString": "tuple()" } }, - "id": 559, + "id": 596, "nodeType": "ExpressionStatement", "src": "897:25:2" } ] }, "documentation": null, - "id": 561, + "id": 598, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7817,15 +8378,15 @@ "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 552, + "id": 589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 551, + "id": 588, "name": "account", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 598, "src": "860:15:2", "stateVariable": false, "storageLocation": "default", @@ -7834,7 +8395,7 @@ "typeString": "address" }, "typeName": { - "id": 550, + "id": 587, "name": "address", "nodeType": "ElementaryTypeName", "src": "860:7:2", @@ -7851,12 +8412,12 @@ }, "payable": false, "returnParameters": { - "id": 553, + "id": 590, "nodeType": "ParameterList", "parameters": [], "src": "886:0:2" }, - "scope": 574, + "scope": 611, "src": "836:94:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7864,7 +8425,7 @@ }, { "body": { - "id": 572, + "id": 609, "nodeType": "Block", "src": "991:47:2", "statements": [ @@ -7874,11 +8435,11 @@ "arguments": [ { "argumentTypes": null, - "id": 569, + "id": 606, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, + "referencedDeclaration": 600, "src": "1022:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7895,32 +8456,32 @@ ], "expression": { "argumentTypes": null, - "id": 566, + "id": 603, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "1002:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 568, + "id": 605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "1002:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 570, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -7934,14 +8495,14 @@ "typeString": "tuple()" } }, - "id": 571, + "id": 608, "nodeType": "ExpressionStatement", "src": "1002:28:2" } ] }, "documentation": null, - "id": 573, + "id": 610, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7949,15 +8510,15 @@ "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 601, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 600, "name": "account", "nodeType": "VariableDeclaration", - "scope": 573, + "scope": 610, "src": "965:15:2", "stateVariable": false, "storageLocation": "default", @@ -7966,7 +8527,7 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 599, "name": "address", "nodeType": "ElementaryTypeName", "src": "965:7:2", @@ -7983,19 +8544,19 @@ }, "payable": false, "returnParameters": { - "id": 565, + "id": 602, "nodeType": "ParameterList", "parameters": [], "src": "991:0:2" }, - "scope": 574, + "scope": 611, "src": "938:100:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 575, + "scope": 612, "src": "221:820:2" } ], @@ -8008,14 +8569,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 661 + 698 ] }, - "id": 662, + "id": 699, "nodeType": "SourceUnit", "nodes": [ { - "id": 576, + "id": 613, "literals": [ "solidity", "^", @@ -8028,10 +8589,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 577, + "id": 614, "nodeType": "ImportDirective", - "scope": 662, - "sourceUnit": 769, + "scope": 699, + "sourceUnit": 816, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -8042,24 +8603,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 661, + "id": 698, "linearizedBaseContracts": [ - 661 + 698 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 580, + "id": 617, "libraryName": { "contractScope": null, - "id": 578, + "id": 615, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "258:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -8067,39 +8628,39 @@ "src": "252:27:3", "typeName": { "contractScope": null, - "id": 579, + "id": 616, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "268:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 582, + "id": 619, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 661, + "scope": 698, "src": "287:33:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 581, + "id": 618, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "287:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8108,7 +8669,7 @@ }, { "body": { - "id": 590, + "id": 627, "nodeType": "Block", "src": "353:41:3", "statements": [ @@ -8120,18 +8681,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 586, + "id": 623, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "375:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 587, + "id": 624, "isConstant": false, "isLValue": false, "isPure": false, @@ -8153,18 +8714,18 @@ "typeString": "address" } ], - "id": 585, + "id": 622, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, + "referencedDeclaration": 685, "src": "364:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 588, + "id": 625, "isConstant": false, "isLValue": false, "isPure": false, @@ -8178,14 +8739,14 @@ "typeString": "tuple()" } }, - "id": 589, + "id": 626, "nodeType": "ExpressionStatement", "src": "364:22:3" } ] }, "documentation": null, - "id": 591, + "id": 628, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8193,19 +8754,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 583, + "id": 620, "nodeType": "ParameterList", "parameters": [], "src": "341:2:3" }, "payable": false, "returnParameters": { - "id": 584, + "id": 621, "nodeType": "ParameterList", "parameters": [], "src": "353:0:3" }, - "scope": 661, + "scope": 698, "src": "329:65:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8213,7 +8774,7 @@ }, { "body": { - "id": 601, + "id": 638, "nodeType": "Block", "src": "424:60:3", "statements": [ @@ -8228,18 +8789,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 595, + "id": 632, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "452:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 596, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, @@ -8261,18 +8822,18 @@ "typeString": "address" } ], - "id": 594, + "id": 631, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 615, + "referencedDeclaration": 652, "src": "443:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 597, + "id": 634, "isConstant": false, "isLValue": false, "isPure": false, @@ -8294,21 +8855,21 @@ "typeString": "bool" } ], - "id": 593, + "id": 630, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "435:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 598, + "id": 635, "isConstant": false, "isLValue": false, "isPure": false, @@ -8322,23 +8883,23 @@ "typeString": "tuple()" } }, - "id": 599, + "id": 636, "nodeType": "ExpressionStatement", "src": "435:29:3" }, { - "id": 600, + "id": 637, "nodeType": "PlaceholderStatement", "src": "475:1:3" } ] }, "documentation": null, - "id": 602, + "id": 639, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 592, + "id": 629, "nodeType": "ParameterList", "parameters": [], "src": "421:2:3" @@ -8348,7 +8909,7 @@ }, { "body": { - "id": 614, + "id": 651, "nodeType": "Block", "src": "554:53:3", "statements": [ @@ -8358,11 +8919,11 @@ "arguments": [ { "argumentTypes": null, - "id": 611, + "id": 648, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, + "referencedDeclaration": 641, "src": "591:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8379,32 +8940,32 @@ ], "expression": { "argumentTypes": null, - "id": 609, + "id": 646, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "572:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 610, + "id": 647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "572:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 612, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -8418,15 +8979,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 608, - "id": 613, + "functionReturnParameters": 645, + "id": 650, "nodeType": "Return", "src": "565:34:3" } ] }, "documentation": null, - "id": 615, + "id": 652, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8434,15 +8995,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 605, + "id": 642, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 641, "name": "account", "nodeType": "VariableDeclaration", - "scope": 615, + "scope": 652, "src": "510:15:3", "stateVariable": false, "storageLocation": "default", @@ -8451,7 +9012,7 @@ "typeString": "address" }, "typeName": { - "id": 603, + "id": 640, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:3", @@ -8468,15 +9029,15 @@ }, "payable": false, "returnParameters": { - "id": 608, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 607, + "id": 644, "name": "", "nodeType": "VariableDeclaration", - "scope": 615, + "scope": 652, "src": "548:4:3", "stateVariable": false, "storageLocation": "default", @@ -8485,7 +9046,7 @@ "typeString": "bool" }, "typeName": { - "id": 606, + "id": 643, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:3", @@ -8500,7 +9061,7 @@ ], "src": "547:6:3" }, - "scope": 661, + "scope": 698, "src": "492:115:3", "stateMutability": "view", "superFunction": null, @@ -8508,7 +9069,7 @@ }, { "body": { - "id": 626, + "id": 663, "nodeType": "Block", "src": "669:38:3", "statements": [ @@ -8518,11 +9079,11 @@ "arguments": [ { "argumentTypes": null, - "id": 623, + "id": 660, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 617, + "referencedDeclaration": 654, "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8537,18 +9098,18 @@ "typeString": "address" } ], - "id": 622, + "id": 659, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, + "referencedDeclaration": 685, "src": "680:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 624, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -8562,28 +9123,28 @@ "typeString": "tuple()" } }, - "id": 625, + "id": 662, "nodeType": "ExpressionStatement", "src": "680:19:3" } ] }, "documentation": null, - "id": 627, + "id": 664, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 620, + "id": 657, "modifierName": { "argumentTypes": null, - "id": 619, + "id": 656, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 602, + "referencedDeclaration": 639, "src": "658:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8597,15 +9158,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 618, + "id": 655, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 617, + "id": 654, "name": "account", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 664, "src": "634:15:3", "stateVariable": false, "storageLocation": "default", @@ -8614,7 +9175,7 @@ "typeString": "address" }, "typeName": { - "id": 616, + "id": 653, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:3", @@ -8631,12 +9192,12 @@ }, "payable": false, "returnParameters": { - "id": 621, + "id": 658, "nodeType": "ParameterList", "parameters": [], "src": "669:0:3" }, - "scope": 661, + "scope": 698, "src": "615:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8644,7 +9205,7 @@ }, { "body": { - "id": 635, + "id": 672, "nodeType": "Block", "src": "748:44:3", "statements": [ @@ -8656,18 +9217,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 631, + "id": 668, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "773:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 632, + "id": 669, "isConstant": false, "isLValue": false, "isPure": false, @@ -8689,18 +9250,18 @@ "typeString": "address" } ], - "id": 630, + "id": 667, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 697, "src": "759:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 633, + "id": 670, "isConstant": false, "isLValue": false, "isPure": false, @@ -8714,14 +9275,14 @@ "typeString": "tuple()" } }, - "id": 634, + "id": 671, "nodeType": "ExpressionStatement", "src": "759:25:3" } ] }, "documentation": null, - "id": 636, + "id": 673, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8729,19 +9290,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 628, + "id": 665, "nodeType": "ParameterList", "parameters": [], "src": "738:2:3" }, "payable": false, "returnParameters": { - "id": 629, + "id": 666, "nodeType": "ParameterList", "parameters": [], "src": "748:0:3" }, - "scope": 661, + "scope": 698, "src": "715:77:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8749,7 +9310,7 @@ }, { "body": { - "id": 647, + "id": 684, "nodeType": "Block", "src": "846:46:3", "statements": [ @@ -8759,11 +9320,11 @@ "arguments": [ { "argumentTypes": null, - "id": 644, + "id": 681, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, + "referencedDeclaration": 675, "src": "876:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8780,32 +9341,32 @@ ], "expression": { "argumentTypes": null, - "id": 641, + "id": 678, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "857:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 643, + "id": 680, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "857:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 645, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -8819,14 +9380,14 @@ "typeString": "tuple()" } }, - "id": 646, + "id": 683, "nodeType": "ExpressionStatement", "src": "857:27:3" } ] }, "documentation": null, - "id": 648, + "id": 685, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8834,15 +9395,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 639, + "id": 676, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 638, + "id": 675, "name": "account", "nodeType": "VariableDeclaration", - "scope": 648, + "scope": 685, "src": "820:15:3", "stateVariable": false, "storageLocation": "default", @@ -8851,7 +9412,7 @@ "typeString": "address" }, "typeName": { - "id": 637, + "id": 674, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:3", @@ -8868,12 +9429,12 @@ }, "payable": false, "returnParameters": { - "id": 640, + "id": 677, "nodeType": "ParameterList", "parameters": [], "src": "846:0:3" }, - "scope": 661, + "scope": 698, "src": "800:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8881,7 +9442,7 @@ }, { "body": { - "id": 659, + "id": 696, "nodeType": "Block", "src": "949:49:3", "statements": [ @@ -8891,11 +9452,11 @@ "arguments": [ { "argumentTypes": null, - "id": 656, + "id": 693, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, + "referencedDeclaration": 687, "src": "982:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8912,32 +9473,32 @@ ], "expression": { "argumentTypes": null, - "id": 653, + "id": 690, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "960:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 655, + "id": 692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "960:21:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 657, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, @@ -8951,14 +9512,14 @@ "typeString": "tuple()" } }, - "id": 658, + "id": 695, "nodeType": "ExpressionStatement", "src": "960:30:3" } ] }, "documentation": null, - "id": 660, + "id": 697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8966,15 +9527,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 651, + "id": 688, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 650, + "id": 687, "name": "account", "nodeType": "VariableDeclaration", - "scope": 660, + "scope": 697, "src": "923:15:3", "stateVariable": false, "storageLocation": "default", @@ -8983,7 +9544,7 @@ "typeString": "address" }, "typeName": { - "id": 649, + "id": 686, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:3", @@ -9000,19 +9561,19 @@ }, "payable": false, "returnParameters": { - "id": 652, + "id": 689, "nodeType": "ParameterList", "parameters": [], "src": "949:0:3" }, - "scope": 661, + "scope": 698, "src": "900:98:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 662, + "scope": 699, "src": "221:780:3" } ], @@ -9025,14 +9586,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 674 + 721 ] }, - "id": 675, + "id": 722, "nodeType": "SourceUnit", "nodes": [ { - "id": 663, + "id": 700, "literals": [ "solidity", "0.4", @@ -9047,9 +9608,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 674, + "id": 721, "linearizedBaseContracts": [ - 674 + 721 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9057,7 +9618,7 @@ { "body": null, "documentation": null, - "id": 668, + "id": 705, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9065,22 +9626,22 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 664, + "id": 701, "nodeType": "ParameterList", "parameters": [], "src": "74:2:4" }, "payable": false, "returnParameters": { - "id": 667, + "id": 704, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 666, + "id": 703, "name": "", "nodeType": "VariableDeclaration", - "scope": 668, + "scope": 705, "src": "98:4:4", "stateVariable": false, "storageLocation": "default", @@ -9089,7 +9650,7 @@ "typeString": "bool" }, "typeName": { - "id": 665, + "id": 702, "name": "bool", "nodeType": "ElementaryTypeName", "src": "98:4:4", @@ -9104,7 +9665,7 @@ ], "src": "97:6:4" }, - "scope": 674, + "scope": 721, "src": "54:50:4", "stateMutability": "pure", "superFunction": null, @@ -9113,7 +9674,7 @@ { "body": null, "documentation": null, - "id": 673, + "id": 710, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9121,22 +9682,22 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 669, + "id": 706, "nodeType": "ParameterList", "parameters": [], "src": "130:2:4" }, "payable": false, "returnParameters": { - "id": 672, + "id": 709, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 671, + "id": 708, "name": "", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 710, "src": "154:5:4", "stateVariable": false, "storageLocation": "default", @@ -9145,7 +9706,7 @@ "typeString": "uint8" }, "typeName": { - "id": 670, + "id": 707, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "154:5:4", @@ -9160,18 +9721,130 @@ ], "src": "153:7:4" }, - "scope": 674, + "scope": 721, "src": "110:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 715, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:4" + }, + "payable": false, + "returnParameters": { + "id": 714, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 713, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 715, + "src": "208:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 712, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:4" + }, + "scope": 721, + "src": "167:47:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 720, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 716, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:4" + }, + "payable": false, + "returnParameters": { + "id": 719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 718, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 720, + "src": "261:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:4" + }, + "scope": 721, + "src": "220:50:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" } ], - "scope": 675, - "src": "27:137:4" + "scope": 722, + "src": "27:246:4" } ], - "src": "0:164:4" + "src": "0:273:4" }, "id": 4 }, @@ -9180,14 +9853,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 768 + 815 ] }, - "id": 769, + "id": 816, "nodeType": "SourceUnit", "nodes": [ { - "id": 676, + "id": 723, "literals": [ "solidity", "^", @@ -9203,23 +9876,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 768, + "id": 815, "linearizedBaseContracts": [ - 768 + 815 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 681, + "id": 728, "members": [ { "constant": false, - "id": 680, + "id": 727, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 681, + "scope": 728, "src": "145:32:5", "stateVariable": false, "storageLocation": "default", @@ -9228,9 +9901,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 679, + "id": 726, "keyType": { - "id": 677, + "id": 724, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:5", @@ -9246,7 +9919,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 678, + "id": 725, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:5", @@ -9262,13 +9935,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 768, + "scope": 815, "src": "127:55:5", "visibility": "public" }, { "body": { - "id": 712, + "id": 759, "nodeType": "Block", "src": "302:109:5", "statements": [ @@ -9282,18 +9955,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 689, + "id": 736, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "316:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9308,7 +9981,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 691, + "id": 738, "isConstant": false, "isLValue": false, "isPure": true, @@ -9331,7 +10004,7 @@ "typeString": "int_const 0" } ], - "id": 690, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, @@ -9344,7 +10017,7 @@ }, "typeName": "address" }, - "id": 692, + "id": 739, "isConstant": false, "isLValue": false, "isPure": true, @@ -9372,21 +10045,21 @@ "typeString": "bool" } ], - "id": 688, + "id": 735, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "308:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 694, + "id": 741, "isConstant": false, "isLValue": false, "isPure": false, @@ -9400,7 +10073,7 @@ "typeString": "tuple()" } }, - "id": 695, + "id": 742, "nodeType": "ExpressionStatement", "src": "308:30:5" }, @@ -9410,7 +10083,7 @@ "arguments": [ { "argumentTypes": null, - "id": 701, + "id": 748, "isConstant": false, "isLValue": false, "isPure": false, @@ -9424,24 +10097,24 @@ "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 745, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, + "referencedDeclaration": 730, "src": "357:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 699, + "id": 746, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "363:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9452,7 +10125,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -9460,18 +10133,18 @@ "typeString": "address" } ], - "id": 697, + "id": 744, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "353:3:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 700, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -9498,21 +10171,21 @@ "typeString": "bool" } ], - "id": 696, + "id": 743, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "344:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 702, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -9526,14 +10199,14 @@ "typeString": "tuple()" } }, - "id": 703, + "id": 750, "nodeType": "ExpressionStatement", "src": "344:28:5" }, { "expression": { "argumentTypes": null, - "id": 710, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -9544,39 +10217,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 704, + "id": 751, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, + "referencedDeclaration": 730, "src": "379:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 707, + "id": 754, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "379:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 708, + "id": 755, "indexExpression": { "argumentTypes": null, - "id": 706, + "id": 753, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "391:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9599,7 +10272,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 709, + "id": 756, "isConstant": false, "isLValue": false, "isPure": true, @@ -9620,14 +10293,14 @@ "typeString": "bool" } }, - "id": 711, + "id": 758, "nodeType": "ExpressionStatement", "src": "379:27:5" } ] }, "documentation": "@dev give an account access to this role", - "id": 713, + "id": 760, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9635,31 +10308,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 733, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 730, "name": "role", "nodeType": "VariableDeclaration", - "scope": 713, + "scope": 760, "src": "257:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 682, + "id": 729, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "257:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -9668,10 +10341,10 @@ }, { "constant": false, - "id": 685, + "id": 732, "name": "account", "nodeType": "VariableDeclaration", - "scope": 713, + "scope": 760, "src": "276:15:5", "stateVariable": false, "storageLocation": "default", @@ -9680,7 +10353,7 @@ "typeString": "address" }, "typeName": { - "id": 684, + "id": 731, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:5", @@ -9697,12 +10370,12 @@ }, "payable": false, "returnParameters": { - "id": 687, + "id": 734, "nodeType": "ParameterList", "parameters": [], "src": "302:0:5" }, - "scope": 768, + "scope": 815, "src": "244:167:5", "stateMutability": "nonpayable", "superFunction": null, @@ -9710,7 +10383,7 @@ }, { "body": { - "id": 743, + "id": 790, "nodeType": "Block", "src": "538:109:5", "statements": [ @@ -9724,18 +10397,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 721, + "id": 768, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "552:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9750,7 +10423,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 723, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, @@ -9773,7 +10446,7 @@ "typeString": "int_const 0" } ], - "id": 722, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, @@ -9786,7 +10459,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -9814,21 +10487,21 @@ "typeString": "bool" } ], - "id": 720, + "id": 767, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "544:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 726, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, @@ -9842,7 +10515,7 @@ "typeString": "tuple()" } }, - "id": 727, + "id": 774, "nodeType": "ExpressionStatement", "src": "544:30:5" }, @@ -9855,24 +10528,24 @@ "arguments": [ { "argumentTypes": null, - "id": 730, + "id": 777, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 715, + "referencedDeclaration": 762, "src": "592:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 731, + "id": 778, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "598:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9883,7 +10556,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -9891,18 +10564,18 @@ "typeString": "address" } ], - "id": 729, + "id": 776, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "588:3:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 732, + "id": 779, "isConstant": false, "isLValue": false, "isPure": false, @@ -9924,21 +10597,21 @@ "typeString": "bool" } ], - "id": 728, + "id": 775, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "580:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 733, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, @@ -9952,14 +10625,14 @@ "typeString": "tuple()" } }, - "id": 734, + "id": 781, "nodeType": "ExpressionStatement", "src": "580:27:5" }, { "expression": { "argumentTypes": null, - "id": 741, + "id": 788, "isConstant": false, "isLValue": false, "isPure": false, @@ -9970,39 +10643,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 735, + "id": 782, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 715, + "referencedDeclaration": 762, "src": "614:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 738, + "id": 785, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "614:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 739, + "id": 786, "indexExpression": { "argumentTypes": null, - "id": 737, + "id": 784, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "626:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10025,7 +10698,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 740, + "id": 787, "isConstant": false, "isLValue": false, "isPure": true, @@ -10046,14 +10719,14 @@ "typeString": "bool" } }, - "id": 742, + "id": 789, "nodeType": "ExpressionStatement", "src": "614:28:5" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 744, + "id": 791, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10061,31 +10734,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 718, + "id": 765, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 715, + "id": 762, "name": "role", "nodeType": "VariableDeclaration", - "scope": 744, + "scope": 791, "src": "493:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 714, + "id": 761, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "493:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -10094,10 +10767,10 @@ }, { "constant": false, - "id": 717, + "id": 764, "name": "account", "nodeType": "VariableDeclaration", - "scope": 744, + "scope": 791, "src": "512:15:5", "stateVariable": false, "storageLocation": "default", @@ -10106,7 +10779,7 @@ "typeString": "address" }, "typeName": { - "id": 716, + "id": 763, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:5", @@ -10123,12 +10796,12 @@ }, "payable": false, "returnParameters": { - "id": 719, + "id": 766, "nodeType": "ParameterList", "parameters": [], "src": "538:0:5" }, - "scope": 768, + "scope": 815, "src": "477:170:5", "stateMutability": "nonpayable", "superFunction": null, @@ -10136,7 +10809,7 @@ }, { "body": { - "id": 766, + "id": 813, "nodeType": "Block", "src": "817:74:5", "statements": [ @@ -10150,18 +10823,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 758, + "id": 805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 754, + "id": 801, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 748, + "referencedDeclaration": 795, "src": "831:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10176,7 +10849,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 756, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -10199,7 +10872,7 @@ "typeString": "int_const 0" } ], - "id": 755, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, @@ -10212,7 +10885,7 @@ }, "typeName": "address" }, - "id": 757, + "id": 804, "isConstant": false, "isLValue": false, "isPure": true, @@ -10240,21 +10913,21 @@ "typeString": "bool" } ], - "id": 753, + "id": 800, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "823:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 759, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -10268,7 +10941,7 @@ "typeString": "tuple()" } }, - "id": 760, + "id": 807, "nodeType": "ExpressionStatement", "src": "823:30:5" }, @@ -10279,39 +10952,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 761, + "id": 808, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, + "referencedDeclaration": 793, "src": "866:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 762, + "id": 809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "866:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 764, + "id": 811, "indexExpression": { "argumentTypes": null, - "id": 763, + "id": 810, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 748, + "referencedDeclaration": 795, "src": "878:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10329,15 +11002,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 752, - "id": 765, + "functionReturnParameters": 799, + "id": 812, "nodeType": "Return", "src": "859:27:5" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 767, + "id": 814, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10345,31 +11018,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 749, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 746, + "id": 793, "name": "role", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "738:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 745, + "id": 792, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "738:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -10378,10 +11051,10 @@ }, { "constant": false, - "id": 748, + "id": 795, "name": "account", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "757:15:5", "stateVariable": false, "storageLocation": "default", @@ -10390,7 +11063,7 @@ "typeString": "address" }, "typeName": { - "id": 747, + "id": 794, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:5", @@ -10407,15 +11080,15 @@ }, "payable": false, "returnParameters": { - "id": 752, + "id": 799, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 751, + "id": 798, "name": "", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "809:4:5", "stateVariable": false, "storageLocation": "default", @@ -10424,7 +11097,7 @@ "typeString": "bool" }, "typeName": { - "id": 750, + "id": 797, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:5", @@ -10439,14 +11112,14 @@ ], "src": "808:6:5" }, - "scope": 768, + "scope": 815, "src": "725:166:5", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 769, + "scope": 816, "src": "109:784:5" } ], @@ -10459,14 +11132,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 896 + 943 ] }, - "id": 897, + "id": 944, "nodeType": "SourceUnit", "nodes": [ { - "id": 770, + "id": 817, "literals": [ "solidity", "^", @@ -10482,16 +11155,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 896, + "id": 943, "linearizedBaseContracts": [ - 896 + 943 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 802, + "id": 849, "nodeType": "Block", "src": "271:314:6", "statements": [ @@ -10502,18 +11175,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 781, + "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 779, + "id": 826, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "486:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10525,7 +11198,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 780, + "id": 827, "isConstant": false, "isLValue": false, "isPure": true, @@ -10547,11 +11220,11 @@ } }, "falseBody": null, - "id": 785, + "id": 832, "nodeType": "IfStatement", "src": "482:35:6", "trueBody": { - "id": 784, + "id": 831, "nodeType": "Block", "src": "494:23:6", "statements": [ @@ -10559,7 +11232,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 829, "isConstant": false, "isLValue": false, "isPure": true, @@ -10574,8 +11247,8 @@ }, "value": "0" }, - "functionReturnParameters": 778, - "id": 783, + "functionReturnParameters": 825, + "id": 830, "nodeType": "Return", "src": "502:8:6" } @@ -10584,15 +11257,15 @@ }, { "assignments": [ - 787 + 834 ], "declarations": [ { "constant": false, - "id": 787, + "id": 834, "name": "c", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "523:9:6", "stateVariable": false, "storageLocation": "default", @@ -10601,7 +11274,7 @@ "typeString": "uint256" }, "typeName": { - "id": 786, + "id": 833, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:6", @@ -10614,25 +11287,25 @@ "visibility": "internal" } ], - "id": 791, + "id": 838, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 790, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 788, + "id": 835, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "535:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10643,11 +11316,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 836, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 774, + "referencedDeclaration": 821, "src": "539:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10673,7 +11346,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 797, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -10684,18 +11357,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 795, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 793, + "id": 840, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, + "referencedDeclaration": 834, "src": "554:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10706,11 +11379,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 794, + "id": 841, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "558:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10727,11 +11400,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 796, + "id": 843, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 774, + "referencedDeclaration": 821, "src": "563:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10752,21 +11425,21 @@ "typeString": "bool" } ], - "id": 792, + "id": 839, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "546:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 798, + "id": 845, "isConstant": false, "isLValue": false, "isPure": false, @@ -10780,33 +11453,33 @@ "typeString": "tuple()" } }, - "id": 799, + "id": 846, "nodeType": "ExpressionStatement", "src": "546:19:6" }, { "expression": { "argumentTypes": null, - "id": 800, + "id": 847, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, + "referencedDeclaration": 834, "src": "579:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 778, - "id": 801, + "functionReturnParameters": 825, + "id": 848, "nodeType": "Return", "src": "572:8:6" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 803, + "id": 850, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10814,15 +11487,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 775, + "id": 822, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 772, + "id": 819, "name": "a", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "217:9:6", "stateVariable": false, "storageLocation": "default", @@ -10831,7 +11504,7 @@ "typeString": "uint256" }, "typeName": { - "id": 771, + "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:6", @@ -10845,10 +11518,10 @@ }, { "constant": false, - "id": 774, + "id": 821, "name": "b", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "228:9:6", "stateVariable": false, "storageLocation": "default", @@ -10857,7 +11530,7 @@ "typeString": "uint256" }, "typeName": { - "id": 773, + "id": 820, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:6", @@ -10874,15 +11547,15 @@ }, "payable": false, "returnParameters": { - "id": 778, + "id": 825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 777, + "id": 824, "name": "", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "262:7:6", "stateVariable": false, "storageLocation": "default", @@ -10891,7 +11564,7 @@ "typeString": "uint256" }, "typeName": { - "id": 776, + "id": 823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:6", @@ -10906,7 +11579,7 @@ ], "src": "261:9:6" }, - "scope": 896, + "scope": 943, "src": "204:381:6", "stateMutability": "pure", "superFunction": null, @@ -10914,7 +11587,7 @@ }, { "body": { - "id": 826, + "id": 873, "nodeType": "Block", "src": "762:203:6", "statements": [ @@ -10928,18 +11601,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 815, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 860, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, + "referencedDeclaration": 854, "src": "776:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10951,7 +11624,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 814, + "id": 861, "isConstant": false, "isLValue": false, "isPure": true, @@ -10980,21 +11653,21 @@ "typeString": "bool" } ], - "id": 812, + "id": 859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "768:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 816, + "id": 863, "isConstant": false, "isLValue": false, "isPure": false, @@ -11008,21 +11681,21 @@ "typeString": "tuple()" } }, - "id": 817, + "id": 864, "nodeType": "ExpressionStatement", "src": "768:14:6" }, { "assignments": [ - 819 + 866 ], "declarations": [ { "constant": false, - "id": 819, + "id": 866, "name": "c", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "846:9:6", "stateVariable": false, "storageLocation": "default", @@ -11031,7 +11704,7 @@ "typeString": "uint256" }, "typeName": { - "id": 818, + "id": 865, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:6", @@ -11044,25 +11717,25 @@ "visibility": "internal" } ], - "id": 823, + "id": 870, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 822, + "id": 869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 820, + "id": 867, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, + "referencedDeclaration": 852, "src": "858:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11073,11 +11746,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 821, + "id": 868, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, + "referencedDeclaration": 854, "src": "862:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11096,26 +11769,26 @@ { "expression": { "argumentTypes": null, - "id": 824, + "id": 871, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 819, + "referencedDeclaration": 866, "src": "959:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 811, - "id": 825, + "functionReturnParameters": 858, + "id": 872, "nodeType": "Return", "src": "952:8:6" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 827, + "id": 874, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11123,15 +11796,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 808, + "id": 855, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 852, "name": "a", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "708:9:6", "stateVariable": false, "storageLocation": "default", @@ -11140,7 +11813,7 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:6", @@ -11154,10 +11827,10 @@ }, { "constant": false, - "id": 807, + "id": 854, "name": "b", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "719:9:6", "stateVariable": false, "storageLocation": "default", @@ -11166,7 +11839,7 @@ "typeString": "uint256" }, "typeName": { - "id": 806, + "id": 853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:6", @@ -11183,15 +11856,15 @@ }, "payable": false, "returnParameters": { - "id": 811, + "id": 858, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 810, + "id": 857, "name": "", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "753:7:6", "stateVariable": false, "storageLocation": "default", @@ -11200,7 +11873,7 @@ "typeString": "uint256" }, "typeName": { - "id": 809, + "id": 856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:6", @@ -11215,7 +11888,7 @@ ], "src": "752:9:6" }, - "scope": 896, + "scope": 943, "src": "695:270:6", "stateMutability": "pure", "superFunction": null, @@ -11223,7 +11896,7 @@ }, { "body": { - "id": 850, + "id": 897, "nodeType": "Block", "src": "1145:64:6", "statements": [ @@ -11237,18 +11910,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 839, + "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 837, + "id": 884, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, + "referencedDeclaration": 878, "src": "1159:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11259,11 +11932,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 838, + "id": 885, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, + "referencedDeclaration": 876, "src": "1164:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11284,21 +11957,21 @@ "typeString": "bool" } ], - "id": 836, + "id": 883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1151:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 840, + "id": 887, "isConstant": false, "isLValue": false, "isPure": false, @@ -11312,21 +11985,21 @@ "typeString": "tuple()" } }, - "id": 841, + "id": 888, "nodeType": "ExpressionStatement", "src": "1151:15:6" }, { "assignments": [ - 843 + 890 ], "declarations": [ { "constant": false, - "id": 843, + "id": 890, "name": "c", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1172:9:6", "stateVariable": false, "storageLocation": "default", @@ -11335,7 +12008,7 @@ "typeString": "uint256" }, "typeName": { - "id": 842, + "id": 889, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:6", @@ -11348,25 +12021,25 @@ "visibility": "internal" } ], - "id": 847, + "id": 894, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 846, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 844, + "id": 891, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, + "referencedDeclaration": 876, "src": "1184:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11377,11 +12050,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 845, + "id": 892, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, + "referencedDeclaration": 878, "src": "1188:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11400,26 +12073,26 @@ { "expression": { "argumentTypes": null, - "id": 848, + "id": 895, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 843, + "referencedDeclaration": 890, "src": "1203:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 835, - "id": 849, + "functionReturnParameters": 882, + "id": 896, "nodeType": "Return", "src": "1196:8:6" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 851, + "id": 898, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11427,15 +12100,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 832, + "id": 879, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 829, + "id": 876, "name": "a", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1091:9:6", "stateVariable": false, "storageLocation": "default", @@ -11444,7 +12117,7 @@ "typeString": "uint256" }, "typeName": { - "id": 828, + "id": 875, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:6", @@ -11458,10 +12131,10 @@ }, { "constant": false, - "id": 831, + "id": 878, "name": "b", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1102:9:6", "stateVariable": false, "storageLocation": "default", @@ -11470,7 +12143,7 @@ "typeString": "uint256" }, "typeName": { - "id": 830, + "id": 877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:6", @@ -11487,15 +12160,15 @@ }, "payable": false, "returnParameters": { - "id": 835, + "id": 882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 834, + "id": 881, "name": "", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1136:7:6", "stateVariable": false, "storageLocation": "default", @@ -11504,7 +12177,7 @@ "typeString": "uint256" }, "typeName": { - "id": 833, + "id": 880, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:6", @@ -11519,7 +12192,7 @@ ], "src": "1135:9:6" }, - "scope": 896, + "scope": 943, "src": "1078:131:6", "stateMutability": "pure", "superFunction": null, @@ -11527,21 +12200,21 @@ }, { "body": { - "id": 874, + "id": 921, "nodeType": "Block", "src": "1339:64:6", "statements": [ { "assignments": [ - 861 + 908 ], "declarations": [ { "constant": false, - "id": 861, + "id": 908, "name": "c", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1345:9:6", "stateVariable": false, "storageLocation": "default", @@ -11550,7 +12223,7 @@ "typeString": "uint256" }, "typeName": { - "id": 860, + "id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:6", @@ -11563,25 +12236,25 @@ "visibility": "internal" } ], - "id": 865, + "id": 912, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 864, + "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 862, + "id": 909, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 900, "src": "1357:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11592,11 +12265,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 863, + "id": 910, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, + "referencedDeclaration": 902, "src": "1361:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11622,18 +12295,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 869, + "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 867, + "id": 914, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, + "referencedDeclaration": 908, "src": "1376:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11644,11 +12317,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 868, + "id": 915, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 900, "src": "1381:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11669,21 +12342,21 @@ "typeString": "bool" } ], - "id": 866, + "id": 913, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1368:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 870, + "id": 917, "isConstant": false, "isLValue": false, "isPure": false, @@ -11697,33 +12370,33 @@ "typeString": "tuple()" } }, - "id": 871, + "id": 918, "nodeType": "ExpressionStatement", "src": "1368:15:6" }, { "expression": { "argumentTypes": null, - "id": 872, + "id": 919, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, + "referencedDeclaration": 908, "src": "1397:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 859, - "id": 873, + "functionReturnParameters": 906, + "id": 920, "nodeType": "Return", "src": "1390:8:6" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 875, + "id": 922, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11731,15 +12404,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 856, + "id": 903, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 853, + "id": 900, "name": "a", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1285:9:6", "stateVariable": false, "storageLocation": "default", @@ -11748,7 +12421,7 @@ "typeString": "uint256" }, "typeName": { - "id": 852, + "id": 899, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:6", @@ -11762,10 +12435,10 @@ }, { "constant": false, - "id": 855, + "id": 902, "name": "b", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1296:9:6", "stateVariable": false, "storageLocation": "default", @@ -11774,7 +12447,7 @@ "typeString": "uint256" }, "typeName": { - "id": 854, + "id": 901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:6", @@ -11791,15 +12464,15 @@ }, "payable": false, "returnParameters": { - "id": 859, + "id": 906, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 858, + "id": 905, "name": "", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1330:7:6", "stateVariable": false, "storageLocation": "default", @@ -11808,7 +12481,7 @@ "typeString": "uint256" }, "typeName": { - "id": 857, + "id": 904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:6", @@ -11823,7 +12496,7 @@ ], "src": "1329:9:6" }, - "scope": 896, + "scope": 943, "src": "1272:131:6", "stateMutability": "pure", "superFunction": null, @@ -11831,7 +12504,7 @@ }, { "body": { - "id": 894, + "id": 941, "nodeType": "Block", "src": "1602:44:6", "statements": [ @@ -11845,18 +12518,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 887, + "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 885, + "id": 932, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, + "referencedDeclaration": 926, "src": "1616:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11868,7 +12541,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 886, + "id": 933, "isConstant": false, "isLValue": false, "isPure": true, @@ -11897,21 +12570,21 @@ "typeString": "bool" } ], - "id": 884, + "id": 931, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1608:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 888, + "id": 935, "isConstant": false, "isLValue": false, "isPure": false, @@ -11925,7 +12598,7 @@ "typeString": "tuple()" } }, - "id": 889, + "id": 936, "nodeType": "ExpressionStatement", "src": "1608:15:6" }, @@ -11936,18 +12609,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 892, + "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 890, + "id": 937, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 877, + "referencedDeclaration": 924, "src": "1636:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11958,11 +12631,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 891, + "id": 938, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, + "referencedDeclaration": 926, "src": "1640:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11975,15 +12648,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 883, - "id": 893, + "functionReturnParameters": 930, + "id": 940, "nodeType": "Return", "src": "1629:12:6" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 895, + "id": 942, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11991,15 +12664,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 880, + "id": 927, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 924, "name": "a", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1548:9:6", "stateVariable": false, "storageLocation": "default", @@ -12008,7 +12681,7 @@ "typeString": "uint256" }, "typeName": { - "id": 876, + "id": 923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:6", @@ -12022,10 +12695,10 @@ }, { "constant": false, - "id": 879, + "id": 926, "name": "b", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1559:9:6", "stateVariable": false, "storageLocation": "default", @@ -12034,7 +12707,7 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 925, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:6", @@ -12051,15 +12724,15 @@ }, "payable": false, "returnParameters": { - "id": 883, + "id": 930, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 882, + "id": 929, "name": "", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1593:7:6", "stateVariable": false, "storageLocation": "default", @@ -12068,7 +12741,7 @@ "typeString": "uint256" }, "typeName": { - "id": 881, + "id": 928, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:6", @@ -12083,14 +12756,14 @@ ], "src": "1592:9:6" }, - "scope": 896, + "scope": 943, "src": "1535:111:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 897, + "scope": 944, "src": "117:1531:6" } ], @@ -12103,14 +12776,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 965 + 1012 ] }, - "id": 966, + "id": 1013, "nodeType": "SourceUnit", "nodes": [ { - "id": 898, + "id": 945, "literals": [ "solidity", "^", @@ -12126,9 +12799,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 965, + "id": 1012, "linearizedBaseContracts": [ - 965 + 1012 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -12136,7 +12809,7 @@ { "body": null, "documentation": null, - "id": 903, + "id": 950, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12144,22 +12817,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 899, + "id": 946, "nodeType": "ParameterList", "parameters": [], "src": "156:2:7" }, "payable": false, "returnParameters": { - "id": 902, + "id": 949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 948, "name": "", "nodeType": "VariableDeclaration", - "scope": 903, + "scope": 950, "src": "182:7:7", "stateVariable": false, "storageLocation": "default", @@ -12168,7 +12841,7 @@ "typeString": "uint256" }, "typeName": { - "id": 900, + "id": 947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:7", @@ -12183,7 +12856,7 @@ ], "src": "181:9:7" }, - "scope": 965, + "scope": 1012, "src": "136:55:7", "stateMutability": "view", "superFunction": null, @@ -12192,7 +12865,7 @@ { "body": null, "documentation": null, - "id": 910, + "id": 957, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12200,15 +12873,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 906, + "id": 953, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 905, + "id": 952, "name": "who", "nodeType": "VariableDeclaration", - "scope": 910, + "scope": 957, "src": "214:11:7", "stateVariable": false, "storageLocation": "default", @@ -12217,7 +12890,7 @@ "typeString": "address" }, "typeName": { - "id": 904, + "id": 951, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:7", @@ -12234,15 +12907,15 @@ }, "payable": false, "returnParameters": { - "id": 909, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 908, + "id": 955, "name": "", "nodeType": "VariableDeclaration", - "scope": 910, + "scope": 957, "src": "250:7:7", "stateVariable": false, "storageLocation": "default", @@ -12251,7 +12924,7 @@ "typeString": "uint256" }, "typeName": { - "id": 907, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:7", @@ -12266,7 +12939,7 @@ ], "src": "249:9:7" }, - "scope": 965, + "scope": 1012, "src": "195:64:7", "stateMutability": "view", "superFunction": null, @@ -12275,7 +12948,7 @@ { "body": null, "documentation": null, - "id": 919, + "id": 966, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12283,15 +12956,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 915, + "id": 962, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 912, + "id": 959, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "282:13:7", "stateVariable": false, "storageLocation": "default", @@ -12300,7 +12973,7 @@ "typeString": "address" }, "typeName": { - "id": 911, + "id": 958, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:7", @@ -12314,10 +12987,10 @@ }, { "constant": false, - "id": 914, + "id": 961, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "297:15:7", "stateVariable": false, "storageLocation": "default", @@ -12326,7 +12999,7 @@ "typeString": "address" }, "typeName": { - "id": 913, + "id": 960, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:7", @@ -12343,15 +13016,15 @@ }, "payable": false, "returnParameters": { - "id": 918, + "id": 965, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 917, + "id": 964, "name": "", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "341:7:7", "stateVariable": false, "storageLocation": "default", @@ -12360,7 +13033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 916, + "id": 963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:7", @@ -12375,7 +13048,7 @@ ], "src": "340:9:7" }, - "scope": 965, + "scope": 1012, "src": "263:87:7", "stateMutability": "view", "superFunction": null, @@ -12384,7 +13057,7 @@ { "body": null, "documentation": null, - "id": 928, + "id": 975, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12392,15 +13065,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 924, + "id": 971, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 921, + "id": 968, "name": "to", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "372:10:7", "stateVariable": false, "storageLocation": "default", @@ -12409,7 +13082,7 @@ "typeString": "address" }, "typeName": { - "id": 920, + "id": 967, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:7", @@ -12423,10 +13096,10 @@ }, { "constant": false, - "id": 923, + "id": 970, "name": "value", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "384:13:7", "stateVariable": false, "storageLocation": "default", @@ -12435,7 +13108,7 @@ "typeString": "uint256" }, "typeName": { - "id": 922, + "id": 969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:7", @@ -12452,15 +13125,15 @@ }, "payable": false, "returnParameters": { - "id": 927, + "id": 974, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 926, + "id": 973, "name": "", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "417:4:7", "stateVariable": false, "storageLocation": "default", @@ -12469,7 +13142,7 @@ "typeString": "bool" }, "typeName": { - "id": 925, + "id": 972, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:7", @@ -12484,7 +13157,7 @@ ], "src": "416:6:7" }, - "scope": 965, + "scope": 1012, "src": "354:69:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12493,7 +13166,7 @@ { "body": null, "documentation": null, - "id": 937, + "id": 984, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12501,15 +13174,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 933, + "id": 980, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 930, + "id": 977, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "444:15:7", "stateVariable": false, "storageLocation": "default", @@ -12518,7 +13191,7 @@ "typeString": "address" }, "typeName": { - "id": 929, + "id": 976, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:7", @@ -12532,10 +13205,10 @@ }, { "constant": false, - "id": 932, + "id": 979, "name": "value", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "461:13:7", "stateVariable": false, "storageLocation": "default", @@ -12544,7 +13217,7 @@ "typeString": "uint256" }, "typeName": { - "id": 931, + "id": 978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:7", @@ -12561,15 +13234,15 @@ }, "payable": false, "returnParameters": { - "id": 936, + "id": 983, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 935, + "id": 982, "name": "", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "498:4:7", "stateVariable": false, "storageLocation": "default", @@ -12578,7 +13251,7 @@ "typeString": "bool" }, "typeName": { - "id": 934, + "id": 981, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:7", @@ -12593,7 +13266,7 @@ ], "src": "497:6:7" }, - "scope": 965, + "scope": 1012, "src": "427:77:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12602,7 +13275,7 @@ { "body": null, "documentation": null, - "id": 948, + "id": 995, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12610,15 +13283,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 944, + "id": 991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 939, + "id": 986, "name": "from", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "530:12:7", "stateVariable": false, "storageLocation": "default", @@ -12627,7 +13300,7 @@ "typeString": "address" }, "typeName": { - "id": 938, + "id": 985, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:7", @@ -12641,10 +13314,10 @@ }, { "constant": false, - "id": 941, + "id": 988, "name": "to", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "544:10:7", "stateVariable": false, "storageLocation": "default", @@ -12653,7 +13326,7 @@ "typeString": "address" }, "typeName": { - "id": 940, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:7", @@ -12667,10 +13340,10 @@ }, { "constant": false, - "id": 943, + "id": 990, "name": "value", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "556:13:7", "stateVariable": false, "storageLocation": "default", @@ -12679,7 +13352,7 @@ "typeString": "uint256" }, "typeName": { - "id": 942, + "id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:7", @@ -12696,15 +13369,15 @@ }, "payable": false, "returnParameters": { - "id": 947, + "id": 994, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 946, + "id": 993, "name": "", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "593:4:7", "stateVariable": false, "storageLocation": "default", @@ -12713,7 +13386,7 @@ "typeString": "bool" }, "typeName": { - "id": 945, + "id": 992, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:7", @@ -12728,7 +13401,7 @@ ], "src": "592:6:7" }, - "scope": 965, + "scope": 1012, "src": "508:91:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12737,20 +13410,20 @@ { "anonymous": false, "documentation": null, - "id": 956, + "id": 1003, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 955, + "id": 1002, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 950, + "id": 997, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "623:20:7", "stateVariable": false, "storageLocation": "default", @@ -12759,7 +13432,7 @@ "typeString": "address" }, "typeName": { - "id": 949, + "id": 996, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:7", @@ -12773,11 +13446,11 @@ }, { "constant": false, - "id": 952, + "id": 999, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "649:18:7", "stateVariable": false, "storageLocation": "default", @@ -12786,7 +13459,7 @@ "typeString": "address" }, "typeName": { - "id": 951, + "id": 998, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:7", @@ -12800,11 +13473,11 @@ }, { "constant": false, - "id": 954, + "id": 1001, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "673:13:7", "stateVariable": false, "storageLocation": "default", @@ -12813,7 +13486,7 @@ "typeString": "uint256" }, "typeName": { - "id": 953, + "id": 1000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:7", @@ -12833,20 +13506,20 @@ { "anonymous": false, "documentation": null, - "id": 964, + "id": 1011, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 963, + "id": 1010, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 958, + "id": 1005, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "715:21:7", "stateVariable": false, "storageLocation": "default", @@ -12855,7 +13528,7 @@ "typeString": "address" }, "typeName": { - "id": 957, + "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:7", @@ -12869,11 +13542,11 @@ }, { "constant": false, - "id": 960, + "id": 1007, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "742:23:7", "stateVariable": false, "storageLocation": "default", @@ -12882,7 +13555,7 @@ "typeString": "address" }, "typeName": { - "id": 959, + "id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:7", @@ -12896,11 +13569,11 @@ }, { "constant": false, - "id": 962, + "id": 1009, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "771:13:7", "stateVariable": false, "storageLocation": "default", @@ -12909,7 +13582,7 @@ "typeString": "uint256" }, "typeName": { - "id": 961, + "id": 1008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:7", @@ -12927,7 +13600,7 @@ "src": "695:94:7" } ], - "scope": 966, + "scope": 1013, "src": "115:676:7" } ], @@ -12940,14 +13613,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1109 + 1156 ] }, - "id": 1110, + "id": 1157, "nodeType": "SourceUnit", "nodes": [ { - "id": 967, + "id": 1014, "literals": [ "solidity", "^", @@ -12960,10 +13633,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 968, + "id": 1015, "nodeType": "ImportDirective", - "scope": 1110, - "sourceUnit": 966, + "scope": 1157, + "sourceUnit": 1013, "src": "26:22:8", "symbolAliases": [], "unitAlias": "" @@ -12971,10 +13644,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 969, + "id": 1016, "nodeType": "ImportDirective", - "scope": 1110, - "sourceUnit": 897, + "scope": 1157, + "sourceUnit": 944, "src": "49:33:8", "symbolAliases": [], "unitAlias": "" @@ -12985,31 +13658,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1109, + "id": 1156, "linearizedBaseContracts": [ - 1109 + 1156 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 972, + "id": 1019, "libraryName": { "contractScope": null, - "id": 970, + "id": 1017, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 896, + "referencedDeclaration": 943, "src": "382:8:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$896", + "typeIdentifier": "t_contract$_SafeMath_$943", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:8", "typeName": { - "id": 971, + "id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:8", @@ -13021,7 +13694,7 @@ }, { "body": { - "id": 989, + "id": 1036, "nodeType": "Block", "src": "501:45:8", "statements": [ @@ -13034,11 +13707,11 @@ "arguments": [ { "argumentTypes": null, - "id": 984, + "id": 1031, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 976, + "referencedDeclaration": 1023, "src": "530:2:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13047,11 +13720,11 @@ }, { "argumentTypes": null, - "id": 985, + "id": 1032, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, + "referencedDeclaration": 1025, "src": "534:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13072,32 +13745,32 @@ ], "expression": { "argumentTypes": null, - "id": 982, + "id": 1029, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, + "referencedDeclaration": 1021, "src": "515:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 983, + "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 928, + "referencedDeclaration": 975, "src": "515:14:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 986, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, @@ -13119,21 +13792,21 @@ "typeString": "bool" } ], - "id": 981, + "id": 1028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "507:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 987, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, @@ -13147,14 +13820,14 @@ "typeString": "tuple()" } }, - "id": 988, + "id": 1035, "nodeType": "ExpressionStatement", "src": "507:34:8" } ] }, "documentation": null, - "id": 990, + "id": 1037, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13162,31 +13835,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 979, + "id": 1026, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 974, + "id": 1021, "name": "token", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "434:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 973, + "id": 1020, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "434:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -13195,10 +13868,10 @@ }, { "constant": false, - "id": 976, + "id": 1023, "name": "to", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "452:10:8", "stateVariable": false, "storageLocation": "default", @@ -13207,7 +13880,7 @@ "typeString": "address" }, "typeName": { - "id": 975, + "id": 1022, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:8", @@ -13221,10 +13894,10 @@ }, { "constant": false, - "id": 978, + "id": 1025, "name": "value", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "468:13:8", "stateVariable": false, "storageLocation": "default", @@ -13233,7 +13906,7 @@ "typeString": "uint256" }, "typeName": { - "id": 977, + "id": 1024, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:8", @@ -13250,12 +13923,12 @@ }, "payable": false, "returnParameters": { - "id": 980, + "id": 1027, "nodeType": "ParameterList", "parameters": [], "src": "501:0:8" }, - "scope": 1109, + "scope": 1156, "src": "407:139:8", "stateMutability": "nonpayable", "superFunction": null, @@ -13263,7 +13936,7 @@ }, { "body": { - "id": 1010, + "id": 1057, "nodeType": "Block", "src": "666:55:8", "statements": [ @@ -13276,11 +13949,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1004, + "id": 1051, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, + "referencedDeclaration": 1041, "src": "699:4:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13289,11 +13962,11 @@ }, { "argumentTypes": null, - "id": 1005, + "id": 1052, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, + "referencedDeclaration": 1043, "src": "705:2:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13302,11 +13975,11 @@ }, { "argumentTypes": null, - "id": 1006, + "id": 1053, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 998, + "referencedDeclaration": 1045, "src": "709:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13331,32 +14004,32 @@ ], "expression": { "argumentTypes": null, - "id": 1002, + "id": 1049, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, + "referencedDeclaration": 1039, "src": "680:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1003, + "id": 1050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 948, + "referencedDeclaration": 995, "src": "680:18:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1007, + "id": 1054, "isConstant": false, "isLValue": false, "isPure": false, @@ -13378,21 +14051,21 @@ "typeString": "bool" } ], - "id": 1001, + "id": 1048, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "672:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, @@ -13406,14 +14079,14 @@ "typeString": "tuple()" } }, - "id": 1009, + "id": 1056, "nodeType": "ExpressionStatement", "src": "672:44:8" } ] }, "documentation": null, - "id": 1011, + "id": 1058, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13421,31 +14094,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 999, + "id": 1046, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1039, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "581:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 991, + "id": 1038, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "581:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -13454,10 +14127,10 @@ }, { "constant": false, - "id": 994, + "id": 1041, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "599:12:8", "stateVariable": false, "storageLocation": "default", @@ -13466,7 +14139,7 @@ "typeString": "address" }, "typeName": { - "id": 993, + "id": 1040, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:8", @@ -13480,10 +14153,10 @@ }, { "constant": false, - "id": 996, + "id": 1043, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "617:10:8", "stateVariable": false, "storageLocation": "default", @@ -13492,7 +14165,7 @@ "typeString": "address" }, "typeName": { - "id": 995, + "id": 1042, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:8", @@ -13506,10 +14179,10 @@ }, { "constant": false, - "id": 998, + "id": 1045, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "633:13:8", "stateVariable": false, "storageLocation": "default", @@ -13518,7 +14191,7 @@ "typeString": "uint256" }, "typeName": { - "id": 997, + "id": 1044, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:8", @@ -13535,12 +14208,12 @@ }, "payable": false, "returnParameters": { - "id": 1000, + "id": 1047, "nodeType": "ParameterList", "parameters": [], "src": "666:0:8" }, - "scope": 1109, + "scope": 1156, "src": "550:171:8", "stateMutability": "nonpayable", "superFunction": null, @@ -13548,7 +14221,7 @@ }, { "body": { - "id": 1045, + "id": 1092, "nodeType": "Block", "src": "823:330:8", "statements": [ @@ -13562,7 +14235,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1034, + "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, @@ -13576,18 +14249,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1023, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1021, + "id": 1068, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, + "referencedDeclaration": 1064, "src": "1045:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13599,7 +14272,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": true, @@ -13621,7 +14294,7 @@ } } ], - "id": 1024, + "id": 1071, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13645,7 +14318,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1032, + "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, @@ -13657,18 +14330,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1027, + "id": 1074, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "1077:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1028, + "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, @@ -13684,11 +14357,11 @@ }, { "argumentTypes": null, - "id": 1029, + "id": 1076, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1062, "src": "1089:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13709,32 +14382,32 @@ ], "expression": { "argumentTypes": null, - "id": 1025, + "id": 1072, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1013, + "referencedDeclaration": 1060, "src": "1061:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1026, + "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1061:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1030, + "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, @@ -13753,7 +14426,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1031, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": true, @@ -13775,7 +14448,7 @@ } } ], - "id": 1033, + "id": 1080, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13802,21 +14475,21 @@ "typeString": "bool" } ], - "id": 1020, + "id": 1067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1036:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1035, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -13830,7 +14503,7 @@ "typeString": "tuple()" } }, - "id": 1036, + "id": 1083, "nodeType": "ExpressionStatement", "src": "1036:68:8" }, @@ -13843,11 +14516,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1040, + "id": 1087, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1062, "src": "1132:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13856,11 +14529,11 @@ }, { "argumentTypes": null, - "id": 1041, + "id": 1088, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, + "referencedDeclaration": 1064, "src": "1141:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13881,32 +14554,32 @@ ], "expression": { "argumentTypes": null, - "id": 1038, + "id": 1085, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1013, + "referencedDeclaration": 1060, "src": "1118:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1039, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1118:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1042, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, @@ -13928,21 +14601,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1084, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1110:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1043, + "id": 1090, "isConstant": false, "isLValue": false, "isPure": false, @@ -13956,14 +14629,14 @@ "typeString": "tuple()" } }, - "id": 1044, + "id": 1091, "nodeType": "ExpressionStatement", "src": "1110:38:8" } ] }, "documentation": null, - "id": 1046, + "id": 1093, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13971,31 +14644,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1018, + "id": 1065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1060, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "751:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1012, + "id": 1059, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "751:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14004,10 +14677,10 @@ }, { "constant": false, - "id": 1015, + "id": 1062, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "769:15:8", "stateVariable": false, "storageLocation": "default", @@ -14016,7 +14689,7 @@ "typeString": "address" }, "typeName": { - "id": 1014, + "id": 1061, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:8", @@ -14030,10 +14703,10 @@ }, { "constant": false, - "id": 1017, + "id": 1064, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "790:13:8", "stateVariable": false, "storageLocation": "default", @@ -14042,7 +14715,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1016, + "id": 1063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:8", @@ -14059,12 +14732,12 @@ }, "payable": false, "returnParameters": { - "id": 1019, + "id": 1066, "nodeType": "ParameterList", "parameters": [], "src": "823:0:8" }, - "scope": 1109, + "scope": 1156, "src": "725:428:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14072,21 +14745,21 @@ }, { "body": { - "id": 1076, + "id": 1123, "nodeType": "Block", "src": "1265:135:8", "statements": [ { "assignments": [ - 1056 + 1103 ], "declarations": [ { "constant": false, - "id": 1056, + "id": 1103, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1271:20:8", "stateVariable": false, "storageLocation": "default", @@ -14095,7 +14768,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1055, + "id": 1102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:8", @@ -14108,17 +14781,17 @@ "visibility": "internal" } ], - "id": 1067, + "id": 1114, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1065, + "id": 1112, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1052, + "referencedDeclaration": 1099, "src": "1338:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14141,14 +14814,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1060, + "id": 1107, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1145, + "referencedDeclaration": 1192, "src": "1318:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } } @@ -14156,11 +14829,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } ], - "id": 1059, + "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, @@ -14173,7 +14846,7 @@ }, "typeName": "address" }, - "id": 1061, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, @@ -14189,11 +14862,11 @@ }, { "argumentTypes": null, - "id": 1062, + "id": 1109, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1050, + "referencedDeclaration": 1097, "src": "1325:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14214,32 +14887,32 @@ ], "expression": { "argumentTypes": null, - "id": 1057, + "id": 1104, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1048, + "referencedDeclaration": 1095, "src": "1294:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1058, + "id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1294:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1063, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -14253,21 +14926,21 @@ "typeString": "uint256" } }, - "id": 1064, + "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 875, + "referencedDeclaration": 922, "src": "1294:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1066, + "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, @@ -14293,11 +14966,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1071, + "id": 1118, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1050, + "referencedDeclaration": 1097, "src": "1372:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14306,11 +14979,11 @@ }, { "argumentTypes": null, - "id": 1072, + "id": 1119, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1056, + "referencedDeclaration": 1103, "src": "1381:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14331,32 +15004,32 @@ ], "expression": { "argumentTypes": null, - "id": 1069, + "id": 1116, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1048, + "referencedDeclaration": 1095, "src": "1358:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1070, + "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1358:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1073, + "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, @@ -14378,21 +15051,21 @@ "typeString": "bool" } ], - "id": 1068, + "id": 1115, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1350:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1074, + "id": 1121, "isConstant": false, "isLValue": false, "isPure": false, @@ -14406,14 +15079,14 @@ "typeString": "tuple()" } }, - "id": 1075, + "id": 1122, "nodeType": "ExpressionStatement", "src": "1350:45:8" } ] }, "documentation": null, - "id": 1077, + "id": 1124, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14421,31 +15094,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1053, + "id": 1100, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1048, + "id": 1095, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1193:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1047, + "id": 1094, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "1193:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14454,10 +15127,10 @@ }, { "constant": false, - "id": 1050, + "id": 1097, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1211:15:8", "stateVariable": false, "storageLocation": "default", @@ -14466,7 +15139,7 @@ "typeString": "address" }, "typeName": { - "id": 1049, + "id": 1096, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:8", @@ -14480,10 +15153,10 @@ }, { "constant": false, - "id": 1052, + "id": 1099, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1232:13:8", "stateVariable": false, "storageLocation": "default", @@ -14492,7 +15165,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1051, + "id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:8", @@ -14509,12 +15182,12 @@ }, "payable": false, "returnParameters": { - "id": 1054, + "id": 1101, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:8" }, - "scope": 1109, + "scope": 1156, "src": "1157:243:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14522,21 +15195,21 @@ }, { "body": { - "id": 1107, + "id": 1154, "nodeType": "Block", "src": "1512:135:8", "statements": [ { "assignments": [ - 1087 + 1134 ], "declarations": [ { "constant": false, - "id": 1087, + "id": 1134, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", @@ -14545,7 +15218,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1086, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:8", @@ -14558,17 +15231,17 @@ "visibility": "internal" } ], - "id": 1098, + "id": 1145, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1096, + "id": 1143, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, + "referencedDeclaration": 1130, "src": "1585:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14591,14 +15264,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1091, + "id": 1138, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1145, + "referencedDeclaration": 1192, "src": "1565:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } } @@ -14606,11 +15279,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } ], - "id": 1090, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": true, @@ -14623,7 +15296,7 @@ }, "typeName": "address" }, - "id": 1092, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, @@ -14639,11 +15312,11 @@ }, { "argumentTypes": null, - "id": 1093, + "id": 1140, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1081, + "referencedDeclaration": 1128, "src": "1572:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14664,32 +15337,32 @@ ], "expression": { "argumentTypes": null, - "id": 1088, + "id": 1135, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1126, "src": "1541:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1089, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1541:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1094, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, @@ -14703,21 +15376,21 @@ "typeString": "uint256" } }, - "id": 1095, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 851, + "referencedDeclaration": 898, "src": "1541:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1097, + "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, @@ -14743,11 +15416,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1102, + "id": 1149, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1081, + "referencedDeclaration": 1128, "src": "1619:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14756,11 +15429,11 @@ }, { "argumentTypes": null, - "id": 1103, + "id": 1150, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, + "referencedDeclaration": 1134, "src": "1628:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14781,32 +15454,32 @@ ], "expression": { "argumentTypes": null, - "id": 1100, + "id": 1147, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1126, "src": "1605:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1101, + "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1605:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1104, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, @@ -14828,21 +15501,21 @@ "typeString": "bool" } ], - "id": 1099, + "id": 1146, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1597:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1105, + "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, @@ -14856,14 +15529,14 @@ "typeString": "tuple()" } }, - "id": 1106, + "id": 1153, "nodeType": "ExpressionStatement", "src": "1597:45:8" } ] }, "documentation": null, - "id": 1108, + "id": 1155, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14871,31 +15544,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1084, + "id": 1131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1079, + "id": 1126, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1440:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1078, + "id": 1125, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "1440:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14904,10 +15577,10 @@ }, { "constant": false, - "id": 1081, + "id": 1128, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1458:15:8", "stateVariable": false, "storageLocation": "default", @@ -14916,7 +15589,7 @@ "typeString": "address" }, "typeName": { - "id": 1080, + "id": 1127, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:8", @@ -14930,10 +15603,10 @@ }, { "constant": false, - "id": 1083, + "id": 1130, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1479:13:8", "stateVariable": false, "storageLocation": "default", @@ -14942,7 +15615,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1082, + "id": 1129, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:8", @@ -14959,19 +15632,19 @@ }, "payable": false, "returnParameters": { - "id": 1085, + "id": 1132, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:8" }, - "scope": 1109, + "scope": 1156, "src": "1404:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1110, + "scope": 1157, "src": "353:1296:8" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index e8b771402..88576e784 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 14cb72e69..481853b90 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029 \ No newline at end of file +60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index d56d737c5..1533a78f8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -23,6 +23,20 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -74,6 +88,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -292,7 +320,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", + "bytecode": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -301,8 +329,10 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getMiner()": "302c11ca", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", + "isMining()": "19a74ab3", "isSupervisor(address)": "81a24459", "isSystem(address)": "34cdcf26", "migrateMiner(address)": "231d4e2a", @@ -319,20 +349,22 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "711000", + "codeDepositCost": "733800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "580", + "DAYS_PER_YEAR()": "624", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "652", + "getCategory()": "696", + "getMiner()": "702", "isAlgoMiner()": "212", "isCoreTeam(address)": "infinite", + "isMining()": "859", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -343,9 +375,9 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21272", + "startMining()": "21420", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21665" + "stopMining()": "21772" } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index 15b41cc7a..b4bb44849 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -254,13 +254,13 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x760 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x56B PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x631 DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x424 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x44A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x459 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x468 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2E2 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x30B JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x328 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x364 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x382 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x39C JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x3C6 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP6 DUP4 PUSH2 0x473 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x3E1 CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x512 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x523 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x471 CALLER PUSH2 0x55A JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x56B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58A DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xfc 0xd1 PUSH7 0x5B524606952D86 0xf8 PUSH17 0xD91A6AD5CEAED631661EE3CC8731E992B4 PUSH5 0x993A002900 ", - "sourceMap": "490:1691:1:-;;;1113:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1113:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1219:9:1;:20;;-1:-1:-1;;;;;1250:29:1;;;;;-1:-1:-1;;;;;;1219:20:1;;;;-1:-1:-1;;1219:20:1;;;;;;;1250:29;;;;;;;490:1691;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1691:1:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7AA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x5B5 PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x67B DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x486 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x4A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x261 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x308 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x331 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x34E JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x36C JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x38A JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x3A8 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x3C2 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x410 SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4BD AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x42B CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43F DUP2 PUSH2 0x55C JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x480 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x56D AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x5A4 JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x603 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D4 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x622 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MOD 0x48 KECCAK256 0x4d PUSH27 0xAC13AA2E9AB7514200C49DD33AE54F0178FD146385AD3444F20EE STOP 0x29 ", + "sourceMap": "490:1831:1:-;;;1158:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1158:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1264:9:1;:20;;-1:-1:-1;;;;;1295:29:1;;;;;-1:-1:-1;;;;;;1264:20:1;;;;-1:-1:-1;;1264:20:1;;;;;;;1295:29;;;;;;;490:1831;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1831:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "317000", + "codeDepositCost": "331800", "executionCost": "infinite", "totalCost": "infinite" }, @@ -292,7 +292,7 @@ "trasferToMiner(address)": "2296f4c7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xaa20972ee94e17902a4362885750505af52aeaa2e0cae1bf259b4ba3c3923d32\",\"urls\":[\"bzzr://cb35cac4a863c851295ac8608f3076d82cb1661797bed96740ef01d558ccfb61\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x36684faaffdccd3408380faed00c3c73ed986c568a88e0cb9e8d12761b4d49cc\",\"urls\":[\"bzzr://9eb7271afec474b033f225a395d76b8dff2afd730dc21f9f10ec6c059714de6b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -692,7 +692,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 382, + "sourceUnit": 399, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -717,10 +717,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 381, + "referencedDeclaration": 398, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$381", + "typeIdentifier": "t_contract$_Roles_$398", "typeString": "library Roles" } }, @@ -731,10 +731,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } } @@ -749,7 +749,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -757,10 +757,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -785,7 +785,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -893,7 +893,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -959,10 +959,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1047,7 +1047,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1058,10 +1058,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1321,7 +1321,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1448,7 +1448,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1459,10 +1459,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 326, + "referencedDeclaration": 343, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1580,7 +1580,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1591,10 +1591,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 357, + "referencedDeclaration": 374, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1686,10 +1686,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", "exportedSymbols": { "AlgoPool": [ - 274 + 291 ] }, - "id": 275, + "id": 292, "nodeType": "SourceUnit", "nodes": [ { @@ -1707,8 +1707,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 579, + "scope": 292, + "sourceUnit": 596, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1718,8 +1718,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 723, + "scope": 292, + "sourceUnit": 740, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1729,8 +1729,8 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 288, + "scope": 292, + "sourceUnit": 305, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -1740,7 +1740,7 @@ "file": "./AlgoCoreTeamRole.sol", "id": 92, "nodeType": "ImportDirective", - "scope": 275, + "scope": 292, "sourceUnit": 87, "src": "454:32:1", "symbolAliases": [], @@ -1773,9 +1773,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 274, + "id": 291, "linearizedBaseContracts": [ - 274, + 291, 86 ], "name": "AlgoPool", @@ -1788,10 +1788,10 @@ "id": 95, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 722, + "referencedDeclaration": 739, "src": "541:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } }, @@ -1802,10 +1802,10 @@ "id": 96, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "555:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } } @@ -1815,7 +1815,7 @@ "id": 104, "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "570:56:1", "stateVariable": true, "storageLocation": "default", @@ -1933,7 +1933,7 @@ "id": 109, "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "633:59:1", "stateVariable": true, "storageLocation": "default", @@ -2008,7 +2008,7 @@ "id": 114, "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "699:60:1", "stateVariable": true, "storageLocation": "default", @@ -2083,7 +2083,7 @@ "id": 121, "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "766:64:1", "stateVariable": true, "storageLocation": "default", @@ -2195,7 +2195,7 @@ "id": 128, "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "837:64:1", "stateVariable": true, "storageLocation": "default", @@ -2307,7 +2307,7 @@ "id": 135, "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "908:64:1", "stateVariable": true, "storageLocation": "default", @@ -2419,7 +2419,7 @@ "id": 142, "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "979:64:1", "stateVariable": true, "storageLocation": "default", @@ -2531,7 +2531,7 @@ "id": 144, "name": "_poolType", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "1052:24:1", "stateVariable": true, "storageLocation": "default", @@ -2557,12 +2557,12 @@ "id": 146, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "1083:21:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { @@ -2570,38 +2570,83 @@ "id": 145, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1083:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, "value": null, "visibility": "private" }, + { + "constant": false, + "id": 150, + "name": "_fundedMiners", + "nodeType": "VariableDeclaration", + "scope": 291, + "src": "1111:38:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 149, + "keyType": { + "id": 147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1119:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1111:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 148, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1130:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + }, { "body": { - "id": 165, + "id": 169, "nodeType": "Block", - "src": "1208:79:1", + "src": "1253:79:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 157, + "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 155, + "id": 159, "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, - "src": "1219:9:1", + "src": "1264:9:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2611,45 +2656,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 156, + "id": 160, "name": "poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 148, - "src": "1231:8:1", + "referencedDeclaration": 152, + "src": "1276:8:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "1219:20:1", + "src": "1264:20:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 158, + "id": 162, "nodeType": "ExpressionStatement", - "src": "1219:20:1" + "src": "1264:20:1" }, { "expression": { "argumentTypes": null, - "id": 163, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 159, + "id": 163, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, - "src": "1250:6:1", + "src": "1295:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -2660,12 +2705,12 @@ "arguments": [ { "argumentTypes": null, - "id": 161, + "id": 165, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "1266:12:1", + "referencedDeclaration": 154, + "src": "1311:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2679,18 +2724,18 @@ "typeString": "address" } ], - "id": 160, + "id": 164, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 578, - "src": "1259:6:1", + "referencedDeclaration": 595, + "src": "1304:6:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$578_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$595_$", "typeString": "type(contract IERC20)" } }, - "id": 162, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2698,63 +2743,63 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1259:20:1", + "src": "1304:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "src": "1250:29:1", + "src": "1295:29:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 164, + "id": 168, "nodeType": "ExpressionStatement", - "src": "1250:29:1" + "src": "1295:29:1" } ] }, "documentation": null, - "id": 166, + "id": 170, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { "arguments": [], - "id": 153, + "id": 157, "modifierName": { "argumentTypes": null, - "id": 152, + "id": 156, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1173:16:1", + "src": "1218:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1173:18:1" + "src": "1218:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 151, + "id": 155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 148, + "id": 152, "name": "poolType", "nodeType": "VariableDeclaration", - "scope": 166, - "src": "1125:15:1", + "scope": 170, + "src": "1170:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2762,10 +2807,10 @@ "typeString": "uint16" }, "typeName": { - "id": 147, + "id": 151, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1125:6:1", + "src": "1170:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2776,11 +2821,11 @@ }, { "constant": false, - "id": 150, + "id": 154, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 166, - "src": "1142:20:1", + "scope": 170, + "src": "1187:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2788,10 +2833,10 @@ "typeString": "address" }, "typeName": { - "id": 149, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1142:7:1", + "src": "1187:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2801,54 +2846,154 @@ "visibility": "internal" } ], - "src": "1124:39:1" + "src": "1169:39:1" }, "payable": false, "returnParameters": { - "id": 154, + "id": 158, "nodeType": "ParameterList", "parameters": [], - "src": "1208:0:1" + "src": "1253:0:1" }, - "scope": 274, - "src": "1113:174:1", + "scope": 291, + "src": "1158:174:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 272, + "id": 289, "nodeType": "Block", - "src": "1361:817:1", + "src": "1406:912:1", "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1425:28:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 178, + "name": "_fundedMiners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1426:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 180, + "indexExpression": { + "argumentTypes": null, + "id": 179, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "1440:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1426:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 757, + 758 + ], + "referencedDeclaration": 757, + "src": "1417:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1417:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 183, + "nodeType": "ExpressionStatement", + "src": "1417:37:1" + }, { "assignments": [ - 174 + 185 ], "declarations": [ { "constant": false, - "id": 174, + "id": 185, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1372:20:1", + "scope": 290, + "src": "1467:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 173, + "id": 184, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 287, - "src": "1372:10:1", + "referencedDeclaration": 304, + "src": "1467:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, @@ -2856,18 +3001,18 @@ "visibility": "internal" } ], - "id": 178, + "id": 189, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 176, + "id": 187, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 168, - "src": "1406:12:1", + "referencedDeclaration": 172, + "src": "1501:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2881,18 +3026,18 @@ "typeString": "address" } ], - "id": 175, + "id": 186, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "1395:10:1", + "referencedDeclaration": 304, + "src": "1490:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$287_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$304_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 177, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, @@ -2900,14 +3045,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1395:24:1", + "src": "1490:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1372:47:1" + "src": "1467:47:1" }, { "expression": { @@ -2920,32 +3065,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 180, + "id": 191, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "1448:9:1", + "referencedDeclaration": 185, + "src": "1543:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, - "id": 181, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 281, - "src": "1448:21:1", + "referencedDeclaration": 298, + "src": "1543:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" } }, - "id": 182, + "id": 193, "isConstant": false, "isLValue": false, "isPure": false, @@ -2953,7 +3098,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1448:23:1", + "src": "1543:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2967,21 +3112,21 @@ "typeString": "bool" } ], - "id": 179, + "id": 190, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "1440:7:1", + "referencedDeclaration": 757, + "src": "1535:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 183, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -2989,28 +3134,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1440:32:1", + "src": "1535:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 184, + "id": 195, "nodeType": "ExpressionStatement", - "src": "1440:32:1" + "src": "1535:32:1" }, { "assignments": [ - 186 + 197 ], "declarations": [ { "constant": false, - "id": 186, + "id": 197, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1493:19:1", + "scope": 290, + "src": "1588:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3018,10 +3163,10 @@ "typeString": "uint8" }, "typeName": { - "id": 185, + "id": 196, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1493:5:1", + "src": "1588:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3031,7 +3176,7 @@ "visibility": "internal" } ], - "id": 190, + "id": 201, "initialValue": { "argumentTypes": null, "arguments": [], @@ -3039,32 +3184,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 187, + "id": 198, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "1515:9:1", + "referencedDeclaration": 185, + "src": "1610:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, - "id": 188, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 286, - "src": "1515:21:1", + "referencedDeclaration": 303, + "src": "1610:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 189, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -3072,14 +3217,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1515:23:1", + "src": "1610:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1493:45:1" + "src": "1588:45:1" }, { "expression": { @@ -3091,7 +3236,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 198, + "id": 209, "isConstant": false, "isLValue": false, "isPure": false, @@ -3102,19 +3247,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 194, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 192, + "id": 203, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1559:13:1", + "referencedDeclaration": 197, + "src": "1654:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3125,14 +3270,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 193, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1576:1:1", + "src": "1671:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3140,7 +3285,7 @@ }, "value": "0" }, - "src": "1559:18:1", + "src": "1654:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3154,19 +3299,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 197, + "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 195, + "id": 206, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1581:13:1", + "referencedDeclaration": 197, + "src": "1676:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3177,14 +3322,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 196, + "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:1:1", + "src": "1693:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3192,13 +3337,13 @@ }, "value": "5" }, - "src": "1581:18:1", + "src": "1676:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1559:40:1", + "src": "1654:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3212,21 +3357,21 @@ "typeString": "bool" } ], - "id": 191, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "1551:7:1", + "referencedDeclaration": 757, + "src": "1646:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 199, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3234,28 +3379,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1551:49:1", + "src": "1646:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 200, + "id": 211, "nodeType": "ExpressionStatement", - "src": "1551:49:1" + "src": "1646:49:1" }, { "assignments": [ - 202 + 213 ], "declarations": [ { "constant": false, - "id": 202, + "id": 213, "name": "value", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1613:13:1", + "scope": 290, + "src": "1708:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3263,10 +3408,10 @@ "typeString": "uint256" }, "typeName": { - "id": 201, + "id": 212, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1613:7:1", + "src": "1708:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3276,18 +3421,18 @@ "visibility": "internal" } ], - "id": 204, + "id": 215, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 203, + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1629:1:1", + "src": "1724:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3296,7 +3441,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1613:17:1" + "src": "1708:17:1" }, { "condition": { @@ -3305,19 +3450,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 207, + "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 205, + "id": 216, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1646:13:1", + "referencedDeclaration": 197, + "src": "1741:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3328,14 +3473,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 206, + "id": 217, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1663:1:1", + "src": "1758:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3343,7 +3488,7 @@ }, "value": "0" }, - "src": "1646:18:1", + "src": "1741:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3356,19 +3501,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 215, + "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 213, + "id": 224, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1721:13:1", + "referencedDeclaration": 197, + "src": "1816:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3379,14 +3524,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 214, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1738:1:1", + "src": "1833:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3394,7 +3539,7 @@ }, "value": "1" }, - "src": "1721:18:1", + "src": "1816:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3407,19 +3552,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 223, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 232, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1796:13:1", + "referencedDeclaration": 197, + "src": "1891:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3430,14 +3575,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 222, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1813:1:1", + "src": "1908:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3445,7 +3590,7 @@ }, "value": "2" }, - "src": "1796:18:1", + "src": "1891:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3458,19 +3603,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 231, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 229, + "id": 240, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1871:13:1", + "referencedDeclaration": 197, + "src": "1966:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3481,14 +3626,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "33", - "id": 230, + "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1888:1:1", + "src": "1983:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -3496,7 +3641,7 @@ }, "value": "3" }, - "src": "1871:18:1", + "src": "1966:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3509,19 +3654,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 239, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 237, + "id": 248, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1946:13:1", + "referencedDeclaration": 197, + "src": "2041:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3532,14 +3677,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "34", - "id": 238, + "id": 249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1963:1:1", + "src": "2058:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -3547,7 +3692,7 @@ }, "value": "4" }, - "src": "1946:18:1", + "src": "2041:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3560,19 +3705,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 247, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 245, + "id": 256, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "2021:13:1", + "referencedDeclaration": 197, + "src": "2116:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3583,14 +3728,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 246, + "id": 257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2038:1:1", + "src": "2133:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3598,37 +3743,37 @@ }, "value": "5" }, - "src": "2021:18:1", + "src": "2116:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 253, + "id": 264, "nodeType": "IfStatement", - "src": "2018:69:1", + "src": "2113:69:1", "trueBody": { - "id": 252, + "id": 263, "nodeType": "Block", - "src": "2041:46:1", + "src": "2136:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 250, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 248, + "id": 259, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2056:5:1", + "referencedDeclaration": 213, + "src": "2151:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3638,54 +3783,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 249, + "id": 260, "name": "CAT_5_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 142, - "src": "2064:11:1", + "src": "2159:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2056:19:1", + "src": "2151:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 251, + "id": 262, "nodeType": "ExpressionStatement", - "src": "2056:19:1" + "src": "2151:19:1" } ] } }, - "id": 254, + "id": 265, "nodeType": "IfStatement", - "src": "1943:144:1", + "src": "2038:144:1", "trueBody": { - "id": 244, + "id": 255, "nodeType": "Block", - "src": "1966:46:1", + "src": "2061:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 242, + "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 240, + "id": 251, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1981:5:1", + "referencedDeclaration": 213, + "src": "2076:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3695,54 +3840,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 241, + "id": 252, "name": "CAT_4_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 135, - "src": "1989:11:1", + "src": "2084:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:19:1", + "src": "2076:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 243, + "id": 254, "nodeType": "ExpressionStatement", - "src": "1981:19:1" + "src": "2076:19:1" } ] } }, - "id": 255, + "id": 266, "nodeType": "IfStatement", - "src": "1868:219:1", + "src": "1963:219:1", "trueBody": { - "id": 236, + "id": 247, "nodeType": "Block", - "src": "1891:46:1", + "src": "1986:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 234, + "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 232, + "id": 243, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1906:5:1", + "referencedDeclaration": 213, + "src": "2001:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3752,54 +3897,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 233, + "id": 244, "name": "CAT_3_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1914:11:1", + "src": "2009:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1906:19:1", + "src": "2001:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 235, + "id": 246, "nodeType": "ExpressionStatement", - "src": "1906:19:1" + "src": "2001:19:1" } ] } }, - "id": 256, + "id": 267, "nodeType": "IfStatement", - "src": "1793:294:1", + "src": "1888:294:1", "trueBody": { - "id": 228, + "id": 239, "nodeType": "Block", - "src": "1816:46:1", + "src": "1911:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 226, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 224, + "id": 235, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1831:5:1", + "referencedDeclaration": 213, + "src": "1926:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3809,54 +3954,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 225, + "id": 236, "name": "CAT_2_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1839:11:1", + "src": "1934:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1831:19:1", + "src": "1926:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 227, + "id": 238, "nodeType": "ExpressionStatement", - "src": "1831:19:1" + "src": "1926:19:1" } ] } }, - "id": 257, + "id": 268, "nodeType": "IfStatement", - "src": "1718:369:1", + "src": "1813:369:1", "trueBody": { - "id": 220, + "id": 231, "nodeType": "Block", - "src": "1741:46:1", + "src": "1836:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 218, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 216, + "id": 227, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1756:5:1", + "referencedDeclaration": 213, + "src": "1851:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3866,54 +4011,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 217, + "id": 228, "name": "CAT_1_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, - "src": "1764:11:1", + "src": "1859:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1756:19:1", + "src": "1851:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 219, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1756:19:1" + "src": "1851:19:1" } ] } }, - "id": 258, + "id": 269, "nodeType": "IfStatement", - "src": "1643:444:1", + "src": "1738:444:1", "trueBody": { - "id": 212, + "id": 223, "nodeType": "Block", - "src": "1666:46:1", + "src": "1761:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 210, + "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 208, + "id": 219, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1681:5:1", + "referencedDeclaration": 213, + "src": "1776:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3923,26 +4068,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 209, + "id": 220, "name": "CAT_0_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "1689:11:1", + "src": "1784:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1681:19:1", + "src": "1776:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 211, + "id": 222, "nodeType": "ExpressionStatement", - "src": "1681:19:1" + "src": "1776:19:1" } ] } @@ -3957,19 +4102,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 262, + "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 260, + "id": 271, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2107:5:1", + "referencedDeclaration": 213, + "src": "2202:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3980,14 +4125,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 261, + "id": 272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2115:1:1", + "src": "2210:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3995,7 +4140,7 @@ }, "value": "0" }, - "src": "2107:9:1", + "src": "2202:9:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4009,21 +4154,21 @@ "typeString": "bool" } ], - "id": 259, + "id": 270, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "2099:7:1", + "referencedDeclaration": 757, + "src": "2194:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 263, + "id": 274, "isConstant": false, "isLValue": false, "isPure": false, @@ -4031,15 +4176,93 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2099:18:1", + "src": "2194:18:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 264, + "id": 275, "nodeType": "ExpressionStatement", - "src": "2099:18:1" + "src": "2194:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 276, + "name": "_fundedMiners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "2225:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 278, + "indexExpression": { + "argumentTypes": null, + "id": 277, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "2239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2225:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2255:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2225:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "2225:34:1" }, { "expression": { @@ -4047,12 +4270,12 @@ "arguments": [ { "argumentTypes": null, - "id": 268, + "id": 285, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 168, - "src": "2150:12:1", + "referencedDeclaration": 172, + "src": "2290:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4060,12 +4283,12 @@ }, { "argumentTypes": null, - "id": 269, + "id": 286, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2164:5:1", + "referencedDeclaration": 213, + "src": "2304:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4085,32 +4308,32 @@ ], "expression": { "argumentTypes": null, - "id": 265, + "id": 282, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, - "src": "2130:6:1", + "src": "2270:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 267, + "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 603, - "src": "2130:19:1", + "referencedDeclaration": 620, + "src": "2270:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$578_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$578_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$595_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$595_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 270, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, @@ -4118,57 +4341,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2130:40:1", + "src": "2270:40:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 271, + "id": 288, "nodeType": "ExpressionStatement", - "src": "2130:40:1" + "src": "2270:40:1" } ] }, "documentation": null, - "id": 273, + "id": 290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 171, + "id": 175, "modifierName": { "argumentTypes": null, - "id": 170, + "id": 174, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1348:12:1", + "src": "1393:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1348:12:1" + "src": "1393:12:1" } ], "name": "trasferToMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 169, + "id": 173, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 168, + "id": 172, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1319:20:1", + "scope": 290, + "src": "1364:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4176,10 +4399,10 @@ "typeString": "address" }, "typeName": { - "id": 167, + "id": 171, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1319:7:1", + "src": "1364:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4189,27 +4412,27 @@ "visibility": "internal" } ], - "src": "1318:22:1" + "src": "1363:22:1" }, "payable": false, "returnParameters": { - "id": 172, + "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1361:0:1" + "src": "1406:0:1" }, - "scope": 274, - "src": "1295:883:1", + "scope": 291, + "src": "1340:978:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 275, - "src": "490:1691:1" + "scope": 292, + "src": "490:1831:1" } ], - "src": "0:2183:1" + "src": "0:2323:1" }, "id": 1 }, @@ -4218,14 +4441,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 287 + 304 ] }, - "id": 288, + "id": 305, "nodeType": "SourceUnit", "nodes": [ { - "id": 276, + "id": 293, "literals": [ "solidity", "0.4", @@ -4240,9 +4463,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 287, + "id": 304, "linearizedBaseContracts": [ - 287 + 304 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -4250,7 +4473,7 @@ { "body": null, "documentation": null, - "id": 281, + "id": 298, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4258,22 +4481,22 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 277, + "id": 294, "nodeType": "ParameterList", "parameters": [], "src": "74:2:2" }, "payable": false, "returnParameters": { - "id": 280, + "id": 297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 279, + "id": 296, "name": "", "nodeType": "VariableDeclaration", - "scope": 281, + "scope": 298, "src": "98:4:2", "stateVariable": false, "storageLocation": "default", @@ -4282,7 +4505,7 @@ "typeString": "bool" }, "typeName": { - "id": 278, + "id": 295, "name": "bool", "nodeType": "ElementaryTypeName", "src": "98:4:2", @@ -4297,7 +4520,7 @@ ], "src": "97:6:2" }, - "scope": 287, + "scope": 304, "src": "54:50:2", "stateMutability": "pure", "superFunction": null, @@ -4306,7 +4529,7 @@ { "body": null, "documentation": null, - "id": 286, + "id": 303, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4314,22 +4537,22 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 282, + "id": 299, "nodeType": "ParameterList", "parameters": [], "src": "130:2:2" }, "payable": false, "returnParameters": { - "id": 285, + "id": 302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 284, + "id": 301, "name": "", "nodeType": "VariableDeclaration", - "scope": 286, + "scope": 303, "src": "154:5:2", "stateVariable": false, "storageLocation": "default", @@ -4338,7 +4561,7 @@ "typeString": "uint8" }, "typeName": { - "id": 283, + "id": 300, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "154:5:2", @@ -4353,14 +4576,14 @@ ], "src": "153:7:2" }, - "scope": 287, + "scope": 304, "src": "110:51:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 288, + "scope": 305, "src": "27:137:2" } ], @@ -4373,14 +4596,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 381 + 398 ] }, - "id": 382, + "id": 399, "nodeType": "SourceUnit", "nodes": [ { - "id": 289, + "id": 306, "literals": [ "solidity", "^", @@ -4396,23 +4619,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 381, + "id": 398, "linearizedBaseContracts": [ - 381 + 398 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 294, + "id": 311, "members": [ { "constant": false, - "id": 293, + "id": 310, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 294, + "scope": 311, "src": "145:32:3", "stateVariable": false, "storageLocation": "default", @@ -4421,9 +4644,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 292, + "id": 309, "keyType": { - "id": 290, + "id": 307, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:3", @@ -4439,7 +4662,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 291, + "id": 308, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:3", @@ -4455,13 +4678,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 381, + "scope": 398, "src": "127:55:3", "visibility": "public" }, { "body": { - "id": 325, + "id": 342, "nodeType": "Block", "src": "302:109:3", "statements": [ @@ -4475,18 +4698,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 306, + "id": 323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 302, + "id": 319, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "316:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4501,7 +4724,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 304, + "id": 321, "isConstant": false, "isLValue": false, "isPure": true, @@ -4524,7 +4747,7 @@ "typeString": "int_const 0" } ], - "id": 303, + "id": 320, "isConstant": false, "isLValue": false, "isPure": true, @@ -4537,7 +4760,7 @@ }, "typeName": "address" }, - "id": 305, + "id": 322, "isConstant": false, "isLValue": false, "isPure": true, @@ -4565,21 +4788,21 @@ "typeString": "bool" } ], - "id": 301, + "id": 318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "308:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 307, + "id": 324, "isConstant": false, "isLValue": false, "isPure": false, @@ -4593,7 +4816,7 @@ "typeString": "tuple()" } }, - "id": 308, + "id": 325, "nodeType": "ExpressionStatement", "src": "308:30:3" }, @@ -4603,7 +4826,7 @@ "arguments": [ { "argumentTypes": null, - "id": 314, + "id": 331, "isConstant": false, "isLValue": false, "isPure": false, @@ -4617,24 +4840,24 @@ "arguments": [ { "argumentTypes": null, - "id": 311, + "id": 328, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 296, + "referencedDeclaration": 313, "src": "357:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 312, + "id": 329, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "363:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4645,7 +4868,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -4653,18 +4876,18 @@ "typeString": "address" } ], - "id": 310, + "id": 327, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "353:3:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 313, + "id": 330, "isConstant": false, "isLValue": false, "isPure": false, @@ -4691,21 +4914,21 @@ "typeString": "bool" } ], - "id": 309, + "id": 326, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "344:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 315, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -4719,14 +4942,14 @@ "typeString": "tuple()" } }, - "id": 316, + "id": 333, "nodeType": "ExpressionStatement", "src": "344:28:3" }, { "expression": { "argumentTypes": null, - "id": 323, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, @@ -4737,39 +4960,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 317, + "id": 334, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 296, + "referencedDeclaration": 313, "src": "379:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 320, + "id": 337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "379:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 321, + "id": 338, "indexExpression": { "argumentTypes": null, - "id": 319, + "id": 336, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "391:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4792,7 +5015,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 322, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, @@ -4813,14 +5036,14 @@ "typeString": "bool" } }, - "id": 324, + "id": 341, "nodeType": "ExpressionStatement", "src": "379:27:3" } ] }, "documentation": "@dev give an account access to this role", - "id": 326, + "id": 343, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4828,31 +5051,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 299, + "id": 316, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 296, + "id": 313, "name": "role", "nodeType": "VariableDeclaration", - "scope": 326, + "scope": 343, "src": "257:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 295, + "id": 312, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "257:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -4861,10 +5084,10 @@ }, { "constant": false, - "id": 298, + "id": 315, "name": "account", "nodeType": "VariableDeclaration", - "scope": 326, + "scope": 343, "src": "276:15:3", "stateVariable": false, "storageLocation": "default", @@ -4873,7 +5096,7 @@ "typeString": "address" }, "typeName": { - "id": 297, + "id": 314, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:3", @@ -4890,12 +5113,12 @@ }, "payable": false, "returnParameters": { - "id": 300, + "id": 317, "nodeType": "ParameterList", "parameters": [], "src": "302:0:3" }, - "scope": 381, + "scope": 398, "src": "244:167:3", "stateMutability": "nonpayable", "superFunction": null, @@ -4903,7 +5126,7 @@ }, { "body": { - "id": 356, + "id": 373, "nodeType": "Block", "src": "538:109:3", "statements": [ @@ -4917,18 +5140,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 338, + "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 334, + "id": 351, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "552:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4943,7 +5166,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 336, + "id": 353, "isConstant": false, "isLValue": false, "isPure": true, @@ -4966,7 +5189,7 @@ "typeString": "int_const 0" } ], - "id": 335, + "id": 352, "isConstant": false, "isLValue": false, "isPure": true, @@ -4979,7 +5202,7 @@ }, "typeName": "address" }, - "id": 337, + "id": 354, "isConstant": false, "isLValue": false, "isPure": true, @@ -5007,21 +5230,21 @@ "typeString": "bool" } ], - "id": 333, + "id": 350, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "544:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 339, + "id": 356, "isConstant": false, "isLValue": false, "isPure": false, @@ -5035,7 +5258,7 @@ "typeString": "tuple()" } }, - "id": 340, + "id": 357, "nodeType": "ExpressionStatement", "src": "544:30:3" }, @@ -5048,24 +5271,24 @@ "arguments": [ { "argumentTypes": null, - "id": 343, + "id": 360, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 328, + "referencedDeclaration": 345, "src": "592:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 344, + "id": 361, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "598:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5076,7 +5299,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -5084,18 +5307,18 @@ "typeString": "address" } ], - "id": 342, + "id": 359, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "588:3:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 345, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, @@ -5117,21 +5340,21 @@ "typeString": "bool" } ], - "id": 341, + "id": 358, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "580:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 346, + "id": 363, "isConstant": false, "isLValue": false, "isPure": false, @@ -5145,14 +5368,14 @@ "typeString": "tuple()" } }, - "id": 347, + "id": 364, "nodeType": "ExpressionStatement", "src": "580:27:3" }, { "expression": { "argumentTypes": null, - "id": 354, + "id": 371, "isConstant": false, "isLValue": false, "isPure": false, @@ -5163,39 +5386,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 348, + "id": 365, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 328, + "referencedDeclaration": 345, "src": "614:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 351, + "id": 368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "614:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 352, + "id": 369, "indexExpression": { "argumentTypes": null, - "id": 350, + "id": 367, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "626:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5218,7 +5441,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 353, + "id": 370, "isConstant": false, "isLValue": false, "isPure": true, @@ -5239,14 +5462,14 @@ "typeString": "bool" } }, - "id": 355, + "id": 372, "nodeType": "ExpressionStatement", "src": "614:28:3" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 357, + "id": 374, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5254,31 +5477,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 331, + "id": 348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 328, + "id": 345, "name": "role", "nodeType": "VariableDeclaration", - "scope": 357, + "scope": 374, "src": "493:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 327, + "id": 344, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "493:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5287,10 +5510,10 @@ }, { "constant": false, - "id": 330, + "id": 347, "name": "account", "nodeType": "VariableDeclaration", - "scope": 357, + "scope": 374, "src": "512:15:3", "stateVariable": false, "storageLocation": "default", @@ -5299,7 +5522,7 @@ "typeString": "address" }, "typeName": { - "id": 329, + "id": 346, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:3", @@ -5316,12 +5539,12 @@ }, "payable": false, "returnParameters": { - "id": 332, + "id": 349, "nodeType": "ParameterList", "parameters": [], "src": "538:0:3" }, - "scope": 381, + "scope": 398, "src": "477:170:3", "stateMutability": "nonpayable", "superFunction": null, @@ -5329,7 +5552,7 @@ }, { "body": { - "id": 379, + "id": 396, "nodeType": "Block", "src": "817:74:3", "statements": [ @@ -5343,18 +5566,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 371, + "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 367, + "id": 384, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 361, + "referencedDeclaration": 378, "src": "831:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5369,7 +5592,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 369, + "id": 386, "isConstant": false, "isLValue": false, "isPure": true, @@ -5392,7 +5615,7 @@ "typeString": "int_const 0" } ], - "id": 368, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -5405,7 +5628,7 @@ }, "typeName": "address" }, - "id": 370, + "id": 387, "isConstant": false, "isLValue": false, "isPure": true, @@ -5433,21 +5656,21 @@ "typeString": "bool" } ], - "id": 366, + "id": 383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "823:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 372, + "id": 389, "isConstant": false, "isLValue": false, "isPure": false, @@ -5461,7 +5684,7 @@ "typeString": "tuple()" } }, - "id": 373, + "id": 390, "nodeType": "ExpressionStatement", "src": "823:30:3" }, @@ -5472,39 +5695,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 374, + "id": 391, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 359, + "referencedDeclaration": 376, "src": "866:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 375, + "id": 392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "866:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 377, + "id": 394, "indexExpression": { "argumentTypes": null, - "id": 376, + "id": 393, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 361, + "referencedDeclaration": 378, "src": "878:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5522,15 +5745,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 365, - "id": 378, + "functionReturnParameters": 382, + "id": 395, "nodeType": "Return", "src": "859:27:3" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 380, + "id": 397, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5538,31 +5761,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 362, + "id": 379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 359, + "id": 376, "name": "role", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "738:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 358, + "id": 375, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "738:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5571,10 +5794,10 @@ }, { "constant": false, - "id": 361, + "id": 378, "name": "account", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "757:15:3", "stateVariable": false, "storageLocation": "default", @@ -5583,7 +5806,7 @@ "typeString": "address" }, "typeName": { - "id": 360, + "id": 377, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:3", @@ -5600,15 +5823,15 @@ }, "payable": false, "returnParameters": { - "id": 365, + "id": 382, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 364, + "id": 381, "name": "", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "809:4:3", "stateVariable": false, "storageLocation": "default", @@ -5617,7 +5840,7 @@ "typeString": "bool" }, "typeName": { - "id": 363, + "id": 380, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:3", @@ -5632,14 +5855,14 @@ ], "src": "808:6:3" }, - "scope": 381, + "scope": 398, "src": "725:166:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 382, + "scope": 399, "src": "109:784:3" } ], @@ -5652,14 +5875,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 509 + 526 ] }, - "id": 510, + "id": 527, "nodeType": "SourceUnit", "nodes": [ { - "id": 383, + "id": 400, "literals": [ "solidity", "^", @@ -5675,16 +5898,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 509, + "id": 526, "linearizedBaseContracts": [ - 509 + 526 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 415, + "id": 432, "nodeType": "Block", "src": "271:314:4", "statements": [ @@ -5695,18 +5918,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 394, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 392, + "id": 409, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "486:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5718,7 +5941,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 393, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, @@ -5740,11 +5963,11 @@ } }, "falseBody": null, - "id": 398, + "id": 415, "nodeType": "IfStatement", "src": "482:35:4", "trueBody": { - "id": 397, + "id": 414, "nodeType": "Block", "src": "494:23:4", "statements": [ @@ -5752,7 +5975,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 395, + "id": 412, "isConstant": false, "isLValue": false, "isPure": true, @@ -5767,8 +5990,8 @@ }, "value": "0" }, - "functionReturnParameters": 391, - "id": 396, + "functionReturnParameters": 408, + "id": 413, "nodeType": "Return", "src": "502:8:4" } @@ -5777,15 +6000,15 @@ }, { "assignments": [ - 400 + 417 ], "declarations": [ { "constant": false, - "id": 400, + "id": 417, "name": "c", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "523:9:4", "stateVariable": false, "storageLocation": "default", @@ -5794,7 +6017,7 @@ "typeString": "uint256" }, "typeName": { - "id": 399, + "id": 416, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:4", @@ -5807,25 +6030,25 @@ "visibility": "internal" } ], - "id": 404, + "id": 421, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 403, + "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 401, + "id": 418, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "535:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5836,11 +6059,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 402, + "id": 419, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 387, + "referencedDeclaration": 404, "src": "539:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5866,7 +6089,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 410, + "id": 427, "isConstant": false, "isLValue": false, "isPure": false, @@ -5877,18 +6100,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 408, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 406, + "id": 423, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, + "referencedDeclaration": 417, "src": "554:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5899,11 +6122,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 407, + "id": 424, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "558:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5920,11 +6143,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 409, + "id": 426, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 387, + "referencedDeclaration": 404, "src": "563:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5945,21 +6168,21 @@ "typeString": "bool" } ], - "id": 405, + "id": 422, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "546:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 411, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,33 +6196,33 @@ "typeString": "tuple()" } }, - "id": 412, + "id": 429, "nodeType": "ExpressionStatement", "src": "546:19:4" }, { "expression": { "argumentTypes": null, - "id": 413, + "id": 430, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, + "referencedDeclaration": 417, "src": "579:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 391, - "id": 414, + "functionReturnParameters": 408, + "id": 431, "nodeType": "Return", "src": "572:8:4" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 416, + "id": 433, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6007,15 +6230,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 388, + "id": 405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 385, + "id": 402, "name": "a", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "217:9:4", "stateVariable": false, "storageLocation": "default", @@ -6024,7 +6247,7 @@ "typeString": "uint256" }, "typeName": { - "id": 384, + "id": 401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:4", @@ -6038,10 +6261,10 @@ }, { "constant": false, - "id": 387, + "id": 404, "name": "b", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "228:9:4", "stateVariable": false, "storageLocation": "default", @@ -6050,7 +6273,7 @@ "typeString": "uint256" }, "typeName": { - "id": 386, + "id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:4", @@ -6067,15 +6290,15 @@ }, "payable": false, "returnParameters": { - "id": 391, + "id": 408, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 390, + "id": 407, "name": "", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "262:7:4", "stateVariable": false, "storageLocation": "default", @@ -6084,7 +6307,7 @@ "typeString": "uint256" }, "typeName": { - "id": 389, + "id": 406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:4", @@ -6099,7 +6322,7 @@ ], "src": "261:9:4" }, - "scope": 509, + "scope": 526, "src": "204:381:4", "stateMutability": "pure", "superFunction": null, @@ -6107,7 +6330,7 @@ }, { "body": { - "id": 439, + "id": 456, "nodeType": "Block", "src": "762:203:4", "statements": [ @@ -6121,18 +6344,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 426, + "id": 443, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 420, + "referencedDeclaration": 437, "src": "776:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6144,7 +6367,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 427, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, @@ -6173,21 +6396,21 @@ "typeString": "bool" } ], - "id": 425, + "id": 442, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "768:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 429, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,21 +6424,21 @@ "typeString": "tuple()" } }, - "id": 430, + "id": 447, "nodeType": "ExpressionStatement", "src": "768:14:4" }, { "assignments": [ - 432 + 449 ], "declarations": [ { "constant": false, - "id": 432, + "id": 449, "name": "c", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "846:9:4", "stateVariable": false, "storageLocation": "default", @@ -6224,7 +6447,7 @@ "typeString": "uint256" }, "typeName": { - "id": 431, + "id": 448, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:4", @@ -6237,25 +6460,25 @@ "visibility": "internal" } ], - "id": 436, + "id": 453, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 435, + "id": 452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 433, + "id": 450, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, + "referencedDeclaration": 435, "src": "858:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6266,11 +6489,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 434, + "id": 451, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 420, + "referencedDeclaration": 437, "src": "862:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6289,26 +6512,26 @@ { "expression": { "argumentTypes": null, - "id": 437, + "id": 454, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 432, + "referencedDeclaration": 449, "src": "959:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 424, - "id": 438, + "functionReturnParameters": 441, + "id": 455, "nodeType": "Return", "src": "952:8:4" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 440, + "id": 457, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6316,15 +6539,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 421, + "id": 438, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 418, + "id": 435, "name": "a", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "708:9:4", "stateVariable": false, "storageLocation": "default", @@ -6333,7 +6556,7 @@ "typeString": "uint256" }, "typeName": { - "id": 417, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:4", @@ -6347,10 +6570,10 @@ }, { "constant": false, - "id": 420, + "id": 437, "name": "b", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "719:9:4", "stateVariable": false, "storageLocation": "default", @@ -6359,7 +6582,7 @@ "typeString": "uint256" }, "typeName": { - "id": 419, + "id": 436, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:4", @@ -6376,15 +6599,15 @@ }, "payable": false, "returnParameters": { - "id": 424, + "id": 441, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 440, "name": "", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "753:7:4", "stateVariable": false, "storageLocation": "default", @@ -6393,7 +6616,7 @@ "typeString": "uint256" }, "typeName": { - "id": 422, + "id": 439, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:4", @@ -6408,7 +6631,7 @@ ], "src": "752:9:4" }, - "scope": 509, + "scope": 526, "src": "695:270:4", "stateMutability": "pure", "superFunction": null, @@ -6416,7 +6639,7 @@ }, { "body": { - "id": 463, + "id": 480, "nodeType": "Block", "src": "1145:64:4", "statements": [ @@ -6430,18 +6653,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 452, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 450, + "id": 467, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, + "referencedDeclaration": 461, "src": "1159:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6452,11 +6675,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 451, + "id": 468, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, + "referencedDeclaration": 459, "src": "1164:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6477,21 +6700,21 @@ "typeString": "bool" } ], - "id": 449, + "id": 466, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1151:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 453, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, @@ -6505,21 +6728,21 @@ "typeString": "tuple()" } }, - "id": 454, + "id": 471, "nodeType": "ExpressionStatement", "src": "1151:15:4" }, { "assignments": [ - 456 + 473 ], "declarations": [ { "constant": false, - "id": 456, + "id": 473, "name": "c", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1172:9:4", "stateVariable": false, "storageLocation": "default", @@ -6528,7 +6751,7 @@ "typeString": "uint256" }, "typeName": { - "id": 455, + "id": 472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:4", @@ -6541,25 +6764,25 @@ "visibility": "internal" } ], - "id": 460, + "id": 477, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 459, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 457, + "id": 474, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, + "referencedDeclaration": 459, "src": "1184:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6570,11 +6793,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 458, + "id": 475, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, + "referencedDeclaration": 461, "src": "1188:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6593,26 +6816,26 @@ { "expression": { "argumentTypes": null, - "id": 461, + "id": 478, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 456, + "referencedDeclaration": 473, "src": "1203:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 448, - "id": 462, + "functionReturnParameters": 465, + "id": 479, "nodeType": "Return", "src": "1196:8:4" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 464, + "id": 481, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6620,15 +6843,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 445, + "id": 462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 442, + "id": 459, "name": "a", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1091:9:4", "stateVariable": false, "storageLocation": "default", @@ -6637,7 +6860,7 @@ "typeString": "uint256" }, "typeName": { - "id": 441, + "id": 458, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:4", @@ -6651,10 +6874,10 @@ }, { "constant": false, - "id": 444, + "id": 461, "name": "b", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1102:9:4", "stateVariable": false, "storageLocation": "default", @@ -6663,7 +6886,7 @@ "typeString": "uint256" }, "typeName": { - "id": 443, + "id": 460, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:4", @@ -6680,15 +6903,15 @@ }, "payable": false, "returnParameters": { - "id": 448, + "id": 465, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 447, + "id": 464, "name": "", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1136:7:4", "stateVariable": false, "storageLocation": "default", @@ -6697,7 +6920,7 @@ "typeString": "uint256" }, "typeName": { - "id": 446, + "id": 463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:4", @@ -6712,7 +6935,7 @@ ], "src": "1135:9:4" }, - "scope": 509, + "scope": 526, "src": "1078:131:4", "stateMutability": "pure", "superFunction": null, @@ -6720,21 +6943,21 @@ }, { "body": { - "id": 487, + "id": 504, "nodeType": "Block", "src": "1339:64:4", "statements": [ { "assignments": [ - 474 + 491 ], "declarations": [ { "constant": false, - "id": 474, + "id": 491, "name": "c", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1345:9:4", "stateVariable": false, "storageLocation": "default", @@ -6743,7 +6966,7 @@ "typeString": "uint256" }, "typeName": { - "id": 473, + "id": 490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:4", @@ -6756,25 +6979,25 @@ "visibility": "internal" } ], - "id": 478, + "id": 495, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 477, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 475, + "id": 492, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 466, + "referencedDeclaration": 483, "src": "1357:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6785,11 +7008,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 476, + "id": 493, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 468, + "referencedDeclaration": 485, "src": "1361:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6815,18 +7038,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 482, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 480, + "id": 497, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, + "referencedDeclaration": 491, "src": "1376:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6837,11 +7060,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 481, + "id": 498, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 466, + "referencedDeclaration": 483, "src": "1381:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6862,21 +7085,21 @@ "typeString": "bool" } ], - "id": 479, + "id": 496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1368:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 483, + "id": 500, "isConstant": false, "isLValue": false, "isPure": false, @@ -6890,33 +7113,33 @@ "typeString": "tuple()" } }, - "id": 484, + "id": 501, "nodeType": "ExpressionStatement", "src": "1368:15:4" }, { "expression": { "argumentTypes": null, - "id": 485, + "id": 502, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, + "referencedDeclaration": 491, "src": "1397:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 472, - "id": 486, + "functionReturnParameters": 489, + "id": 503, "nodeType": "Return", "src": "1390:8:4" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 488, + "id": 505, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6924,15 +7147,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 469, + "id": 486, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 466, + "id": 483, "name": "a", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1285:9:4", "stateVariable": false, "storageLocation": "default", @@ -6941,7 +7164,7 @@ "typeString": "uint256" }, "typeName": { - "id": 465, + "id": 482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:4", @@ -6955,10 +7178,10 @@ }, { "constant": false, - "id": 468, + "id": 485, "name": "b", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1296:9:4", "stateVariable": false, "storageLocation": "default", @@ -6967,7 +7190,7 @@ "typeString": "uint256" }, "typeName": { - "id": 467, + "id": 484, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:4", @@ -6984,15 +7207,15 @@ }, "payable": false, "returnParameters": { - "id": 472, + "id": 489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 471, + "id": 488, "name": "", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1330:7:4", "stateVariable": false, "storageLocation": "default", @@ -7001,7 +7224,7 @@ "typeString": "uint256" }, "typeName": { - "id": 470, + "id": 487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:4", @@ -7016,7 +7239,7 @@ ], "src": "1329:9:4" }, - "scope": 509, + "scope": 526, "src": "1272:131:4", "stateMutability": "pure", "superFunction": null, @@ -7024,7 +7247,7 @@ }, { "body": { - "id": 507, + "id": 524, "nodeType": "Block", "src": "1602:44:4", "statements": [ @@ -7038,18 +7261,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 500, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 498, + "id": 515, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 492, + "referencedDeclaration": 509, "src": "1616:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7061,7 +7284,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 499, + "id": 516, "isConstant": false, "isLValue": false, "isPure": true, @@ -7090,21 +7313,21 @@ "typeString": "bool" } ], - "id": 497, + "id": 514, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1608:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 501, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -7118,7 +7341,7 @@ "typeString": "tuple()" } }, - "id": 502, + "id": 519, "nodeType": "ExpressionStatement", "src": "1608:15:4" }, @@ -7129,18 +7352,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 505, + "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 503, + "id": 520, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, + "referencedDeclaration": 507, "src": "1636:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7151,11 +7374,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 504, + "id": 521, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 492, + "referencedDeclaration": 509, "src": "1640:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7168,15 +7391,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 496, - "id": 506, + "functionReturnParameters": 513, + "id": 523, "nodeType": "Return", "src": "1629:12:4" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 508, + "id": 525, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7184,15 +7407,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 493, + "id": 510, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 490, + "id": 507, "name": "a", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1548:9:4", "stateVariable": false, "storageLocation": "default", @@ -7201,7 +7424,7 @@ "typeString": "uint256" }, "typeName": { - "id": 489, + "id": 506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:4", @@ -7215,10 +7438,10 @@ }, { "constant": false, - "id": 492, + "id": 509, "name": "b", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1559:9:4", "stateVariable": false, "storageLocation": "default", @@ -7227,7 +7450,7 @@ "typeString": "uint256" }, "typeName": { - "id": 491, + "id": 508, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:4", @@ -7244,15 +7467,15 @@ }, "payable": false, "returnParameters": { - "id": 496, + "id": 513, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 495, + "id": 512, "name": "", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1593:7:4", "stateVariable": false, "storageLocation": "default", @@ -7261,7 +7484,7 @@ "typeString": "uint256" }, "typeName": { - "id": 494, + "id": 511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:4", @@ -7276,14 +7499,14 @@ ], "src": "1592:9:4" }, - "scope": 509, + "scope": 526, "src": "1535:111:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 510, + "scope": 527, "src": "117:1531:4" } ], @@ -7296,14 +7519,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 578 + 595 ] }, - "id": 579, + "id": 596, "nodeType": "SourceUnit", "nodes": [ { - "id": 511, + "id": 528, "literals": [ "solidity", "^", @@ -7319,9 +7542,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 578, + "id": 595, "linearizedBaseContracts": [ - 578 + 595 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -7329,7 +7552,7 @@ { "body": null, "documentation": null, - "id": 516, + "id": 533, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7337,22 +7560,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 512, + "id": 529, "nodeType": "ParameterList", "parameters": [], "src": "156:2:5" }, "payable": false, "returnParameters": { - "id": 515, + "id": 532, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 514, + "id": 531, "name": "", "nodeType": "VariableDeclaration", - "scope": 516, + "scope": 533, "src": "182:7:5", "stateVariable": false, "storageLocation": "default", @@ -7361,7 +7584,7 @@ "typeString": "uint256" }, "typeName": { - "id": 513, + "id": 530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:5", @@ -7376,7 +7599,7 @@ ], "src": "181:9:5" }, - "scope": 578, + "scope": 595, "src": "136:55:5", "stateMutability": "view", "superFunction": null, @@ -7385,7 +7608,7 @@ { "body": null, "documentation": null, - "id": 523, + "id": 540, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7393,15 +7616,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 519, + "id": 536, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 518, + "id": 535, "name": "who", "nodeType": "VariableDeclaration", - "scope": 523, + "scope": 540, "src": "214:11:5", "stateVariable": false, "storageLocation": "default", @@ -7410,7 +7633,7 @@ "typeString": "address" }, "typeName": { - "id": 517, + "id": 534, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:5", @@ -7427,15 +7650,15 @@ }, "payable": false, "returnParameters": { - "id": 522, + "id": 539, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 521, + "id": 538, "name": "", "nodeType": "VariableDeclaration", - "scope": 523, + "scope": 540, "src": "250:7:5", "stateVariable": false, "storageLocation": "default", @@ -7444,7 +7667,7 @@ "typeString": "uint256" }, "typeName": { - "id": 520, + "id": 537, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:5", @@ -7459,7 +7682,7 @@ ], "src": "249:9:5" }, - "scope": 578, + "scope": 595, "src": "195:64:5", "stateMutability": "view", "superFunction": null, @@ -7468,7 +7691,7 @@ { "body": null, "documentation": null, - "id": 532, + "id": 549, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7476,15 +7699,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 528, + "id": 545, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 525, + "id": 542, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "282:13:5", "stateVariable": false, "storageLocation": "default", @@ -7493,7 +7716,7 @@ "typeString": "address" }, "typeName": { - "id": 524, + "id": 541, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:5", @@ -7507,10 +7730,10 @@ }, { "constant": false, - "id": 527, + "id": 544, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "297:15:5", "stateVariable": false, "storageLocation": "default", @@ -7519,7 +7742,7 @@ "typeString": "address" }, "typeName": { - "id": 526, + "id": 543, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:5", @@ -7536,15 +7759,15 @@ }, "payable": false, "returnParameters": { - "id": 531, + "id": 548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 530, + "id": 547, "name": "", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "341:7:5", "stateVariable": false, "storageLocation": "default", @@ -7553,7 +7776,7 @@ "typeString": "uint256" }, "typeName": { - "id": 529, + "id": 546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:5", @@ -7568,7 +7791,7 @@ ], "src": "340:9:5" }, - "scope": 578, + "scope": 595, "src": "263:87:5", "stateMutability": "view", "superFunction": null, @@ -7577,7 +7800,7 @@ { "body": null, "documentation": null, - "id": 541, + "id": 558, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7585,15 +7808,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 537, + "id": 554, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 534, + "id": 551, "name": "to", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "372:10:5", "stateVariable": false, "storageLocation": "default", @@ -7602,7 +7825,7 @@ "typeString": "address" }, "typeName": { - "id": 533, + "id": 550, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:5", @@ -7616,10 +7839,10 @@ }, { "constant": false, - "id": 536, + "id": 553, "name": "value", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "384:13:5", "stateVariable": false, "storageLocation": "default", @@ -7628,7 +7851,7 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 552, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:5", @@ -7645,15 +7868,15 @@ }, "payable": false, "returnParameters": { - "id": 540, + "id": 557, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 539, + "id": 556, "name": "", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "417:4:5", "stateVariable": false, "storageLocation": "default", @@ -7662,7 +7885,7 @@ "typeString": "bool" }, "typeName": { - "id": 538, + "id": 555, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:5", @@ -7677,7 +7900,7 @@ ], "src": "416:6:5" }, - "scope": 578, + "scope": 595, "src": "354:69:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7686,7 +7909,7 @@ { "body": null, "documentation": null, - "id": 550, + "id": 567, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7694,15 +7917,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 546, + "id": 563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 543, + "id": 560, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "444:15:5", "stateVariable": false, "storageLocation": "default", @@ -7711,7 +7934,7 @@ "typeString": "address" }, "typeName": { - "id": 542, + "id": 559, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:5", @@ -7725,10 +7948,10 @@ }, { "constant": false, - "id": 545, + "id": 562, "name": "value", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "461:13:5", "stateVariable": false, "storageLocation": "default", @@ -7737,7 +7960,7 @@ "typeString": "uint256" }, "typeName": { - "id": 544, + "id": 561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:5", @@ -7754,15 +7977,15 @@ }, "payable": false, "returnParameters": { - "id": 549, + "id": 566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 548, + "id": 565, "name": "", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "498:4:5", "stateVariable": false, "storageLocation": "default", @@ -7771,7 +7994,7 @@ "typeString": "bool" }, "typeName": { - "id": 547, + "id": 564, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:5", @@ -7786,7 +8009,7 @@ ], "src": "497:6:5" }, - "scope": 578, + "scope": 595, "src": "427:77:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7795,7 +8018,7 @@ { "body": null, "documentation": null, - "id": 561, + "id": 578, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7803,15 +8026,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 557, + "id": 574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 552, + "id": 569, "name": "from", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "530:12:5", "stateVariable": false, "storageLocation": "default", @@ -7820,7 +8043,7 @@ "typeString": "address" }, "typeName": { - "id": 551, + "id": 568, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:5", @@ -7834,10 +8057,10 @@ }, { "constant": false, - "id": 554, + "id": 571, "name": "to", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "544:10:5", "stateVariable": false, "storageLocation": "default", @@ -7846,7 +8069,7 @@ "typeString": "address" }, "typeName": { - "id": 553, + "id": 570, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:5", @@ -7860,10 +8083,10 @@ }, { "constant": false, - "id": 556, + "id": 573, "name": "value", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "556:13:5", "stateVariable": false, "storageLocation": "default", @@ -7872,7 +8095,7 @@ "typeString": "uint256" }, "typeName": { - "id": 555, + "id": 572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:5", @@ -7889,15 +8112,15 @@ }, "payable": false, "returnParameters": { - "id": 560, + "id": 577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 559, + "id": 576, "name": "", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "593:4:5", "stateVariable": false, "storageLocation": "default", @@ -7906,7 +8129,7 @@ "typeString": "bool" }, "typeName": { - "id": 558, + "id": 575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:5", @@ -7921,7 +8144,7 @@ ], "src": "592:6:5" }, - "scope": 578, + "scope": 595, "src": "508:91:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7930,20 +8153,20 @@ { "anonymous": false, "documentation": null, - "id": 569, + "id": 586, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 568, + "id": 585, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 580, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "623:20:5", "stateVariable": false, "storageLocation": "default", @@ -7952,7 +8175,7 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 579, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:5", @@ -7966,11 +8189,11 @@ }, { "constant": false, - "id": 565, + "id": 582, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "649:18:5", "stateVariable": false, "storageLocation": "default", @@ -7979,7 +8202,7 @@ "typeString": "address" }, "typeName": { - "id": 564, + "id": 581, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:5", @@ -7993,11 +8216,11 @@ }, { "constant": false, - "id": 567, + "id": 584, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "673:13:5", "stateVariable": false, "storageLocation": "default", @@ -8006,7 +8229,7 @@ "typeString": "uint256" }, "typeName": { - "id": 566, + "id": 583, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:5", @@ -8026,20 +8249,20 @@ { "anonymous": false, "documentation": null, - "id": 577, + "id": 594, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 576, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 571, + "id": 588, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "715:21:5", "stateVariable": false, "storageLocation": "default", @@ -8048,7 +8271,7 @@ "typeString": "address" }, "typeName": { - "id": 570, + "id": 587, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:5", @@ -8062,11 +8285,11 @@ }, { "constant": false, - "id": 573, + "id": 590, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "742:23:5", "stateVariable": false, "storageLocation": "default", @@ -8075,7 +8298,7 @@ "typeString": "address" }, "typeName": { - "id": 572, + "id": 589, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:5", @@ -8089,11 +8312,11 @@ }, { "constant": false, - "id": 575, + "id": 592, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "771:13:5", "stateVariable": false, "storageLocation": "default", @@ -8102,7 +8325,7 @@ "typeString": "uint256" }, "typeName": { - "id": 574, + "id": 591, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:5", @@ -8120,7 +8343,7 @@ "src": "695:94:5" } ], - "scope": 579, + "scope": 596, "src": "115:676:5" } ], @@ -8133,14 +8356,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 722 + 739 ] }, - "id": 723, + "id": 740, "nodeType": "SourceUnit", "nodes": [ { - "id": 580, + "id": 597, "literals": [ "solidity", "^", @@ -8153,10 +8376,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 581, + "id": 598, "nodeType": "ImportDirective", - "scope": 723, - "sourceUnit": 579, + "scope": 740, + "sourceUnit": 596, "src": "26:22:6", "symbolAliases": [], "unitAlias": "" @@ -8164,10 +8387,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 582, + "id": 599, "nodeType": "ImportDirective", - "scope": 723, - "sourceUnit": 510, + "scope": 740, + "sourceUnit": 527, "src": "49:33:6", "symbolAliases": [], "unitAlias": "" @@ -8178,31 +8401,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 722, + "id": 739, "linearizedBaseContracts": [ - 722 + 739 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 585, + "id": 602, "libraryName": { "contractScope": null, - "id": 583, + "id": 600, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 509, + "referencedDeclaration": 526, "src": "382:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$509", + "typeIdentifier": "t_contract$_SafeMath_$526", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:6", "typeName": { - "id": 584, + "id": 601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:6", @@ -8214,7 +8437,7 @@ }, { "body": { - "id": 602, + "id": 619, "nodeType": "Block", "src": "501:45:6", "statements": [ @@ -8227,11 +8450,11 @@ "arguments": [ { "argumentTypes": null, - "id": 597, + "id": 614, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 589, + "referencedDeclaration": 606, "src": "530:2:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8240,11 +8463,11 @@ }, { "argumentTypes": null, - "id": 598, + "id": 615, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, + "referencedDeclaration": 608, "src": "534:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8265,32 +8488,32 @@ ], "expression": { "argumentTypes": null, - "id": 595, + "id": 612, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 587, + "referencedDeclaration": 604, "src": "515:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 596, + "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 541, + "referencedDeclaration": 558, "src": "515:14:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 599, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -8312,21 +8535,21 @@ "typeString": "bool" } ], - "id": 594, + "id": 611, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "507:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 600, + "id": 617, "isConstant": false, "isLValue": false, "isPure": false, @@ -8340,14 +8563,14 @@ "typeString": "tuple()" } }, - "id": 601, + "id": 618, "nodeType": "ExpressionStatement", "src": "507:34:6" } ] }, "documentation": null, - "id": 603, + "id": 620, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8355,31 +8578,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 592, + "id": 609, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 587, + "id": 604, "name": "token", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "434:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 586, + "id": 603, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "434:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -8388,10 +8611,10 @@ }, { "constant": false, - "id": 589, + "id": 606, "name": "to", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "452:10:6", "stateVariable": false, "storageLocation": "default", @@ -8400,7 +8623,7 @@ "typeString": "address" }, "typeName": { - "id": 588, + "id": 605, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:6", @@ -8414,10 +8637,10 @@ }, { "constant": false, - "id": 591, + "id": 608, "name": "value", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "468:13:6", "stateVariable": false, "storageLocation": "default", @@ -8426,7 +8649,7 @@ "typeString": "uint256" }, "typeName": { - "id": 590, + "id": 607, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:6", @@ -8443,12 +8666,12 @@ }, "payable": false, "returnParameters": { - "id": 593, + "id": 610, "nodeType": "ParameterList", "parameters": [], "src": "501:0:6" }, - "scope": 722, + "scope": 739, "src": "407:139:6", "stateMutability": "nonpayable", "superFunction": null, @@ -8456,7 +8679,7 @@ }, { "body": { - "id": 623, + "id": 640, "nodeType": "Block", "src": "666:55:6", "statements": [ @@ -8469,11 +8692,11 @@ "arguments": [ { "argumentTypes": null, - "id": 617, + "id": 634, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, + "referencedDeclaration": 624, "src": "699:4:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8482,11 +8705,11 @@ }, { "argumentTypes": null, - "id": 618, + "id": 635, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 609, + "referencedDeclaration": 626, "src": "705:2:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8495,11 +8718,11 @@ }, { "argumentTypes": null, - "id": 619, + "id": 636, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, + "referencedDeclaration": 628, "src": "709:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8524,32 +8747,32 @@ ], "expression": { "argumentTypes": null, - "id": 615, + "id": 632, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 605, + "referencedDeclaration": 622, "src": "680:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 616, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 561, + "referencedDeclaration": 578, "src": "680:18:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 620, + "id": 637, "isConstant": false, "isLValue": false, "isPure": false, @@ -8571,21 +8794,21 @@ "typeString": "bool" } ], - "id": 614, + "id": 631, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "672:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 621, + "id": 638, "isConstant": false, "isLValue": false, "isPure": false, @@ -8599,14 +8822,14 @@ "typeString": "tuple()" } }, - "id": 622, + "id": 639, "nodeType": "ExpressionStatement", "src": "672:44:6" } ] }, "documentation": null, - "id": 624, + "id": 641, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8614,31 +8837,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 612, + "id": 629, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 605, + "id": 622, "name": "token", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "581:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 604, + "id": 621, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "581:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -8647,10 +8870,10 @@ }, { "constant": false, - "id": 607, + "id": 624, "name": "from", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "599:12:6", "stateVariable": false, "storageLocation": "default", @@ -8659,7 +8882,7 @@ "typeString": "address" }, "typeName": { - "id": 606, + "id": 623, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:6", @@ -8673,10 +8896,10 @@ }, { "constant": false, - "id": 609, + "id": 626, "name": "to", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "617:10:6", "stateVariable": false, "storageLocation": "default", @@ -8685,7 +8908,7 @@ "typeString": "address" }, "typeName": { - "id": 608, + "id": 625, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:6", @@ -8699,10 +8922,10 @@ }, { "constant": false, - "id": 611, + "id": 628, "name": "value", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "633:13:6", "stateVariable": false, "storageLocation": "default", @@ -8711,7 +8934,7 @@ "typeString": "uint256" }, "typeName": { - "id": 610, + "id": 627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:6", @@ -8728,12 +8951,12 @@ }, "payable": false, "returnParameters": { - "id": 613, + "id": 630, "nodeType": "ParameterList", "parameters": [], "src": "666:0:6" }, - "scope": 722, + "scope": 739, "src": "550:171:6", "stateMutability": "nonpayable", "superFunction": null, @@ -8741,7 +8964,7 @@ }, { "body": { - "id": 658, + "id": 675, "nodeType": "Block", "src": "823:330:6", "statements": [ @@ -8755,7 +8978,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 647, + "id": 664, "isConstant": false, "isLValue": false, "isPure": false, @@ -8769,18 +8992,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 636, + "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 634, + "id": 651, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 630, + "referencedDeclaration": 647, "src": "1045:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8792,7 +9015,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 635, + "id": 652, "isConstant": false, "isLValue": false, "isPure": true, @@ -8814,7 +9037,7 @@ } } ], - "id": 637, + "id": 654, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -8838,7 +9061,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 645, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, @@ -8850,18 +9073,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 640, + "id": 657, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "1077:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 641, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, @@ -8877,11 +9100,11 @@ }, { "argumentTypes": null, - "id": 642, + "id": 659, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, + "referencedDeclaration": 645, "src": "1089:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8902,32 +9125,32 @@ ], "expression": { "argumentTypes": null, - "id": 638, + "id": 655, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, + "referencedDeclaration": 643, "src": "1061:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 639, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1061:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 643, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -8946,7 +9169,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 644, + "id": 661, "isConstant": false, "isLValue": false, "isPure": true, @@ -8968,7 +9191,7 @@ } } ], - "id": 646, + "id": 663, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -8995,21 +9218,21 @@ "typeString": "bool" } ], - "id": 633, + "id": 650, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1036:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 648, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -9023,7 +9246,7 @@ "typeString": "tuple()" } }, - "id": 649, + "id": 666, "nodeType": "ExpressionStatement", "src": "1036:68:6" }, @@ -9036,11 +9259,11 @@ "arguments": [ { "argumentTypes": null, - "id": 653, + "id": 670, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, + "referencedDeclaration": 645, "src": "1132:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9049,11 +9272,11 @@ }, { "argumentTypes": null, - "id": 654, + "id": 671, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 630, + "referencedDeclaration": 647, "src": "1141:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9074,32 +9297,32 @@ ], "expression": { "argumentTypes": null, - "id": 651, + "id": 668, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, + "referencedDeclaration": 643, "src": "1118:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 652, + "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1118:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 655, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -9121,21 +9344,21 @@ "typeString": "bool" } ], - "id": 650, + "id": 667, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1110:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 656, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -9149,14 +9372,14 @@ "typeString": "tuple()" } }, - "id": 657, + "id": 674, "nodeType": "ExpressionStatement", "src": "1110:38:6" } ] }, "documentation": null, - "id": 659, + "id": 676, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9164,31 +9387,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 631, + "id": 648, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 626, + "id": 643, "name": "token", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "751:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 625, + "id": 642, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "751:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -9197,10 +9420,10 @@ }, { "constant": false, - "id": 628, + "id": 645, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "769:15:6", "stateVariable": false, "storageLocation": "default", @@ -9209,7 +9432,7 @@ "typeString": "address" }, "typeName": { - "id": 627, + "id": 644, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:6", @@ -9223,10 +9446,10 @@ }, { "constant": false, - "id": 630, + "id": 647, "name": "value", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "790:13:6", "stateVariable": false, "storageLocation": "default", @@ -9235,7 +9458,7 @@ "typeString": "uint256" }, "typeName": { - "id": 629, + "id": 646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:6", @@ -9252,12 +9475,12 @@ }, "payable": false, "returnParameters": { - "id": 632, + "id": 649, "nodeType": "ParameterList", "parameters": [], "src": "823:0:6" }, - "scope": 722, + "scope": 739, "src": "725:428:6", "stateMutability": "nonpayable", "superFunction": null, @@ -9265,21 +9488,21 @@ }, { "body": { - "id": 689, + "id": 706, "nodeType": "Block", "src": "1265:135:6", "statements": [ { "assignments": [ - 669 + 686 ], "declarations": [ { "constant": false, - "id": 669, + "id": 686, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1271:20:6", "stateVariable": false, "storageLocation": "default", @@ -9288,7 +9511,7 @@ "typeString": "uint256" }, "typeName": { - "id": 668, + "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:6", @@ -9301,17 +9524,17 @@ "visibility": "internal" } ], - "id": 680, + "id": 697, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 678, + "id": 695, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 665, + "referencedDeclaration": 682, "src": "1338:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9334,14 +9557,14 @@ "arguments": [ { "argumentTypes": null, - "id": 673, + "id": 690, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, + "referencedDeclaration": 775, "src": "1318:4:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } } @@ -9349,11 +9572,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } ], - "id": 672, + "id": 689, "isConstant": false, "isLValue": false, "isPure": true, @@ -9366,7 +9589,7 @@ }, "typeName": "address" }, - "id": 674, + "id": 691, "isConstant": false, "isLValue": false, "isPure": false, @@ -9382,11 +9605,11 @@ }, { "argumentTypes": null, - "id": 675, + "id": 692, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, + "referencedDeclaration": 680, "src": "1325:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9407,32 +9630,32 @@ ], "expression": { "argumentTypes": null, - "id": 670, + "id": 687, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 678, "src": "1294:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 671, + "id": 688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1294:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 676, + "id": 693, "isConstant": false, "isLValue": false, "isPure": false, @@ -9446,21 +9669,21 @@ "typeString": "uint256" } }, - "id": 677, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 488, + "referencedDeclaration": 505, "src": "1294:43:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 679, + "id": 696, "isConstant": false, "isLValue": false, "isPure": false, @@ -9486,11 +9709,11 @@ "arguments": [ { "argumentTypes": null, - "id": 684, + "id": 701, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, + "referencedDeclaration": 680, "src": "1372:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9499,11 +9722,11 @@ }, { "argumentTypes": null, - "id": 685, + "id": 702, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 669, + "referencedDeclaration": 686, "src": "1381:12:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9524,32 +9747,32 @@ ], "expression": { "argumentTypes": null, - "id": 682, + "id": 699, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 678, "src": "1358:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 683, + "id": 700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1358:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 686, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, @@ -9571,21 +9794,21 @@ "typeString": "bool" } ], - "id": 681, + "id": 698, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1350:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 687, + "id": 704, "isConstant": false, "isLValue": false, "isPure": false, @@ -9599,14 +9822,14 @@ "typeString": "tuple()" } }, - "id": 688, + "id": 705, "nodeType": "ExpressionStatement", "src": "1350:45:6" } ] }, "documentation": null, - "id": 690, + "id": 707, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9614,31 +9837,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 666, + "id": 683, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 661, + "id": 678, "name": "token", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1193:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 660, + "id": 677, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1193:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -9647,10 +9870,10 @@ }, { "constant": false, - "id": 663, + "id": 680, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1211:15:6", "stateVariable": false, "storageLocation": "default", @@ -9659,7 +9882,7 @@ "typeString": "address" }, "typeName": { - "id": 662, + "id": 679, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:6", @@ -9673,10 +9896,10 @@ }, { "constant": false, - "id": 665, + "id": 682, "name": "value", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1232:13:6", "stateVariable": false, "storageLocation": "default", @@ -9685,7 +9908,7 @@ "typeString": "uint256" }, "typeName": { - "id": 664, + "id": 681, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:6", @@ -9702,12 +9925,12 @@ }, "payable": false, "returnParameters": { - "id": 667, + "id": 684, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:6" }, - "scope": 722, + "scope": 739, "src": "1157:243:6", "stateMutability": "nonpayable", "superFunction": null, @@ -9715,21 +9938,21 @@ }, { "body": { - "id": 720, + "id": 737, "nodeType": "Block", "src": "1512:135:6", "statements": [ { "assignments": [ - 700 + 717 ], "declarations": [ { "constant": false, - "id": 700, + "id": 717, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1518:20:6", "stateVariable": false, "storageLocation": "default", @@ -9738,7 +9961,7 @@ "typeString": "uint256" }, "typeName": { - "id": 699, + "id": 716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:6", @@ -9751,17 +9974,17 @@ "visibility": "internal" } ], - "id": 711, + "id": 728, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 709, + "id": 726, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 713, "src": "1585:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9784,14 +10007,14 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 721, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, + "referencedDeclaration": 775, "src": "1565:4:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } } @@ -9799,11 +10022,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } ], - "id": 703, + "id": 720, "isConstant": false, "isLValue": false, "isPure": true, @@ -9816,7 +10039,7 @@ }, "typeName": "address" }, - "id": 705, + "id": 722, "isConstant": false, "isLValue": false, "isPure": false, @@ -9832,11 +10055,11 @@ }, { "argumentTypes": null, - "id": 706, + "id": 723, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, + "referencedDeclaration": 711, "src": "1572:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9857,32 +10080,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 718, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 692, + "referencedDeclaration": 709, "src": "1541:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 702, + "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1541:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 707, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -9896,21 +10119,21 @@ "typeString": "uint256" } }, - "id": 708, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 464, + "referencedDeclaration": 481, "src": "1541:43:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 710, + "id": 727, "isConstant": false, "isLValue": false, "isPure": false, @@ -9936,11 +10159,11 @@ "arguments": [ { "argumentTypes": null, - "id": 715, + "id": 732, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, + "referencedDeclaration": 711, "src": "1619:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9949,11 +10172,11 @@ }, { "argumentTypes": null, - "id": 716, + "id": 733, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 700, + "referencedDeclaration": 717, "src": "1628:12:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9974,32 +10197,32 @@ ], "expression": { "argumentTypes": null, - "id": 713, + "id": 730, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 692, + "referencedDeclaration": 709, "src": "1605:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 714, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1605:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 717, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -10021,21 +10244,21 @@ "typeString": "bool" } ], - "id": 712, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1597:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 718, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -10049,14 +10272,14 @@ "typeString": "tuple()" } }, - "id": 719, + "id": 736, "nodeType": "ExpressionStatement", "src": "1597:45:6" } ] }, "documentation": null, - "id": 721, + "id": 738, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10064,31 +10287,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 697, + "id": 714, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 692, + "id": 709, "name": "token", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1440:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 691, + "id": 708, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1440:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -10097,10 +10320,10 @@ }, { "constant": false, - "id": 694, + "id": 711, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1458:15:6", "stateVariable": false, "storageLocation": "default", @@ -10109,7 +10332,7 @@ "typeString": "address" }, "typeName": { - "id": 693, + "id": 710, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:6", @@ -10123,10 +10346,10 @@ }, { "constant": false, - "id": 696, + "id": 713, "name": "value", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1479:13:6", "stateVariable": false, "storageLocation": "default", @@ -10135,7 +10358,7 @@ "typeString": "uint256" }, "typeName": { - "id": 695, + "id": 712, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:6", @@ -10152,19 +10375,19 @@ }, "payable": false, "returnParameters": { - "id": 698, + "id": 715, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:6" }, - "scope": 722, + "scope": 739, "src": "1404:243:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 723, + "scope": 740, "src": "353:1296:6" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index d3f811a9f..3e0d92f3c 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 6491b1282..f0c9e5f58 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -170,7 +170,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", "functionHashes": { "CAT_0_VALUE()": "9fc3c983", "CAT_1_VALUE()": "492fba84", @@ -186,7 +186,7 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "317000", + "codeDepositCost": "331800", "executionCost": "infinite", "totalCost": "infinite" }, diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs new file mode 100644 index 000000000..0aeb0fb1b --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs @@ -0,0 +1,180 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest; +using Nethereum.RPC.Accounts; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests +{ + public class AlgoFeesTests + { + [Fact] + public async Task MinerRegistrationTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a fees... + var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await fees1.DeployAsync(token.ContractAddress); + + // Create some miners... + var minerAccounts = new IAccount[3]; + AlgoMiner[] miners = new AlgoMiner[3]; + + for (int i = 0; i < 3; i++) + { + // Create an account for the miner... + minerAccounts[i] = EthAccountFactory.Create(); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync(1, 2, minerAccounts[i].Address, token.ContractAddress); + } + + // Register a miner... + await fees1.RegisterMinerAsync(miners[0].ContractAddress); + + Assert.Equal(1, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + + // Remove the only registered miner. + await fees1.UnregisterMinerAsync(miners[0].ContractAddress); + + Assert.Equal(0, await fees1.GetMinerCountAsync()); + + // Register the 3 miners and ensure they are registered... + for (int i = 0; i < 3; i++) + { + await fees1.RegisterMinerAsync(miners[i].ContractAddress); + } + + Assert.Equal(3, await fees1.GetMinerCountAsync()); + + for (int i = 0; i < 3; i++) + { + Assert.Equal(miners[i].ContractAddress, await fees1.GetMinerByIndexAsync(i)); + } + + // Remove the 2nd miner and check... + await fees1.UnregisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(2, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + + // Add the removed miner back... + await fees1.RegisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(3, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + Assert.Equal(miners[1].ContractAddress, await fees1.GetMinerByIndexAsync(2)); + + // Remove the latest miner... + await fees1.UnregisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(2, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + } + + [Fact] + public async Task MineTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var systemAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(systemAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a fees... + var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await fees1.DeployAsync(token.ContractAddress); + + // Register the system account... + await fees1.AddSystemAsync(systemAccount.Address); + + // Transfer some tokens to the fees... + await token.TransferAsync(fees1.ContractAddress, 151.Algo()); + + // Create one miner per category... + var minerAccounts = new IAccount[6]; + var miners = new AlgoMiner[6]; + + for (byte i = 0; i <= 5; i++) + { + // Create an account for the miner... + minerAccounts[i] = EthAccountFactory.Create(); + await EthNetwork.Instance.RefillAsync(minerAccounts[i]); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync(1, i, minerAccounts[i].Address, token.ContractAddress); + + // Transfer some tokens to the miner so it can be activated... + await token.TransferAsync(miners[i].ContractAddress, 100.Algo()); + + // Activate the miner... + await miners[i].ActivateMinerAsync(); + + // Start mining... + { + var miner = new AlgoMiner(miners[i].ContractAddress, EthNetwork.Instance.GetWeb3(minerAccounts[i]), EthNetwork.Instance.GasPriceProvider); + await miner.StartMiningAsync(); + } + + // Register a miner... + await fees1.RegisterMinerAsync(miners[i].ContractAddress); + } + + // Mine the fees... + { + var fees = new AlgoFees(fees1.ContractAddress, EthNetwork.Instance.GetWeb3(systemAccount), EthNetwork.Instance.GasPriceProvider); + await fees.MineAsync(); + } + + // Ensure the miners received the payment from the fees... + var balance0 = await token.BalanceOfAsync(minerAccounts[0].Address); + var balance1 = await token.BalanceOfAsync(minerAccounts[1].Address); + var balance2 = await token.BalanceOfAsync(minerAccounts[2].Address); + var balance3 = await token.BalanceOfAsync(minerAccounts[3].Address); + var balance4 = await token.BalanceOfAsync(minerAccounts[4].Address); + var balance5 = await token.BalanceOfAsync(minerAccounts[5].Address); + + Assert.Equal(1.Algo(), balance0); + Assert.Equal(10.Algo(), balance1); + Assert.Equal(20.Algo(), balance2); + Assert.Equal(30.Algo(), balance3); + Assert.Equal(40.Algo(), balance4); + Assert.Equal(50.Algo(), balance5); + } + } +} diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs new file mode 100644 index 000000000..cd4055a37 --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.Algorithms +{ + public class FeesDistributionAlgorithmTests + { + [Fact] + public void TestDistributionAlgorithm1() + { + var miners = new long[] { 100, 100, 100, 100, 100, 100 }; + var fees = FeesDistributionAlgorithm.Distribute(151000, miners); + + Assert.Equal(10, fees[0]); + Assert.Equal(100, fees[1]); + Assert.Equal(200, fees[2]); + Assert.Equal(300, fees[3]); + Assert.Equal(400, fees[4]); + Assert.Equal(500, fees[5]); + + Assert.Equal(151000, GetTotalAmount(miners, fees)); + } + + [Fact] + public void TestDistributionAlgorithm2() + { + var miners = new long[] { 100, 100, 0, 100, 100, 100 }; + var fees = FeesDistributionAlgorithm.Distribute(131000, miners); + + Assert.Equal(10, fees[0]); + Assert.Equal(100, fees[1]); + Assert.Equal(0, fees[2]); + Assert.Equal(300, fees[3]); + Assert.Equal(400, fees[4]); + Assert.Equal(500, fees[5]); + + Assert.Equal(131000, GetTotalAmount(miners, fees)); + } + + private static decimal GetTotalAmount(long[] miners, decimal[] fees) + { + decimal totalAmount = 0; + + for (int i = 0; i < 6; i++) + { + totalAmount += miners[i] * fees[i]; + } + + return totalAmount; + } + } +} diff --git a/labs/algo-token-playground/algofees-script.md b/labs/algo-token-playground/algofees-script.md new file mode 100644 index 000000000..e19a958d1 --- /dev/null +++ b/labs/algo-token-playground/algofees-script.md @@ -0,0 +1,61 @@ +new-account -n miner_0_account +new-account -n miner_1_account +new-account -n miner_2_account +new-account -n miner_3_account +new-account -n miner_4_account +new-account -n miner_5_account +import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded +eth-transfer miner_0_account 1eth +eth-transfer miner_1_account 1eth +eth-transfer miner_2_account 1eth +eth-transfer miner_3_account 1eth +eth-transfer miner_4_account 1eth +eth-transfer miner_5_account 1eth +deploy-algotoken -n token +deploy-algominer 1 0 miner_0_account token -n miner_0 +deploy-algominer 1 1 miner_1_account token -n miner_1 +deploy-algominer 1 2 miner_2_account token -n miner_2 +deploy-algominer 1 3 miner_3_account token -n miner_3 +deploy-algominer 1 4 miner_4_account token -n miner_4 +deploy-algominer 1 5 miner_5_account token -n miner_5 +token.algotoken-transfer miner_0 1m +token.algotoken-transfer miner_1 1m +token.algotoken-transfer miner_2 1m +token.algotoken-transfer miner_3 1m +token.algotoken-transfer miner_4 1m +token.algotoken-transfer miner_5 1m +miner_0.algominer-activateminer +miner_1.algominer-activateminer +miner_2.algominer-activateminer +miner_3.algominer-activateminer +miner_4.algominer-activateminer +miner_5.algominer-activateminer +set-account miner_0_account +miner_0.algominer-startmining +set-account miner_1_account +miner_1.algominer-startmining +set-account miner_2_account +miner_2.algominer-startmining +set-account miner_3_account +miner_3.algominer-startmining +set-account miner_4_account +miner_4.algominer-startmining +set-account miner_5_account +miner_5.algominer-startmining +set-account prefunded +deploy-algofees token -n fees1 +token.algotoken-transfer fees1 151eth +token.algotoken-balanceof fees1 +fees1.algofees-registerminer miner_0 +fees1.algofees-registerminer miner_1 +fees1.algofees-registerminer miner_2 +fees1.algofees-registerminer miner_3 +fees1.algofees-registerminer miner_4 +fees1.algofees-registerminer miner_5 +fees1.algofees-mine +token.algotoken-balanceof miner_0_account +token.algotoken-balanceof miner_1_account +token.algotoken-balanceof miner_2_account +token.algotoken-balanceof miner_3_account +token.algotoken-balanceof miner_4_account +token.algotoken-balanceof miner_5_account diff --git a/labs/algo-token-playground/script.md b/labs/algo-token-playground/algotoken-script.md similarity index 100% rename from labs/algo-token-playground/script.md rename to labs/algo-token-playground/algotoken-script.md diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs new file mode 100644 index 000000000..21db54aff --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesDeployCommand : DeployContractCommand + { + public override string DefaultName => "AlgoFees"; + + public string TokenAddress { get; set; } + + protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) + { + var algoFees = new AlgoFees(web3, context.GasPriceProvider); + return await algoFees.DeployAsync(context.ResolveContractReference(TokenAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs new file mode 100644 index 000000000..27ab17661 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesMineCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.MineAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs new file mode 100644 index 000000000..e7828e3dc --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesRegisterMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string MinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.RegisterMinerAsync(context.ResolveContractReference(MinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs new file mode 100644 index 000000000..15cfded48 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesUnregisterMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string MinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.UnregisterMinerAsync(context.ResolveContractReference(MinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs new file mode 100644 index 000000000..297204777 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AlgoFeesParsers + { + public static void Register() + { + (from command in CommonParsers.Token("deploy-algofees") + from tokenAddress in CommonParsers.StringValue + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new AlgoFeesDeployCommand + { + Name = name.GetOrDefault(), + TokenAddress = tokenAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-registerminer") + from minerAddress in CommonParsers.StringValue + select new AlgoFeesRegisterMinerCommand + { + ContractReference = contractReference, + MinerAddress = minerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-unregisterminer") + from minerAddress in CommonParsers.StringValue + select new AlgoFeesUnregisterMinerCommand + { + ContractReference = contractReference, + MinerAddress = minerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-mine") + select new AlgoFeesMineCommand + { + ContractReference = contractReference + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs index 5755c8eff..f1a593477 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs @@ -26,6 +26,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground ContractManagementParsers.Register(); AlgoTokenParsers.Register(); AlgoPoolParsers.Register(); + AlgoFeesParsers.Register(); AlgoMinerParsers.Register(); }